1 2; /* Start:"a:4:{s:4:"full";s:63:"/local/templates/ntk_new/js/jquery-3.7.1.min.js?174016440087533";s:6:"source";s:47:"/local/templates/ntk_new/js/jquery-3.7.1.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
vendor: 22,881 bytes, lines 3-4
3/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ 4!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}
vendor: 1,967 bytes, line 4
4return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||
vendor: 9,546 bytes, line 4
4ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||
vendor: 8,814 bytes, line 4
4(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);
vendor: 14,182 bytes, line 4
4n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;
vendor: 4,590 bytes, line 4
4return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1)
vendor: 13,972 bytes, line 4
4);!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);
vendor: 9,033 bytes, line 4
4if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return
vendor: 3,073 bytes, lines 4-18
4M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce}); 5 6/* End */ 7; 8; /* Start:"a:4:{s:4:"full";s:67:"/local/templates/ntk_new/lib/jquery.fancybox.min.js?174016440068265";s:6:"source";s:51:"/local/templates/ntk_new/lib/jquery.fancybox.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 9// ================================================== 10// fancyBox v3.5.7 11// 12// Licensed GPLv3 for open source use 13// or fancyBox Commercial License for commercial use 14// 15// http://fancyapps.com/fancybox/ 16// Copyright 2019 fancyApps 17// 18// ==================================================�
vendor: 31,973 bytes, lines 18-19
18 19!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}"><source src="{{src}}" type="{{format}}" />Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!</video>',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span> / <span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"><div class="fancybox-caption__body"></div></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}</p></div>',btnTpl:{download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><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></a>',zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><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></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><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></button>',arrowLeft:'<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}"><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></button>',arrowRight:'<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}"><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></button>',smallBtn:'<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}"><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></button>'},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schließen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergrößern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:'+(t.innerWidth-e.documentElement.clientWidth)+"px;}</style>"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index<h-1)&&f.createSlide(t+1),(a||s.index>0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),a<f-h&&(a=f-h)),g>p&&(s=i.top*c-(e*c-e),s>0&&(s=0),s<p-g&&(s=p-g)),l.updateCursor(h,g),n.fancybox.animate(u,{top:s,left:a,scaleX:r,scaleY:c},o||366,function(){l.isAnimating=!1}),l.SlideShow&&l.SlideShow.isActive&&l.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;o.isAnimating||o.isMoved()||!a||"image"!=i.type||!i.isLoaded||i.hasError||(o.isAnimating=!0,n.fancybox.stop(a),e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||366,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,s=this,r=t.$content,c=t.$slide,l=t.width||t.opts.width,d=t.height||t.opts.height,u={};return!!(t.isLoaded&&r&&r.length)&&(e=n.fancybox.getTranslate(s.$refs.stage).width,o=n.fancybox.getTranslate(s.$refs.stage).height,e-=parseFloat(c.css("paddingLeft"))+parseFloat(c.css("paddingRight"))+parseFloat(r.css("marginLeft"))+parseFloat(r.css("marginRight")),o-=parseFloat(c.css("paddingTop"))+parseFloat(c.css("paddingBottom"))+parseFloat(r.css("marginTop"))+parseFloat(r.css("marginBottom")),l&&d||(l=e,d=o),i=Math.min(1,e/l,o/d),l*=i,d*=i,l>e-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t<a.width&&e<a.height:s&&(i=n.fancybox.getTranslate(s),i=i.width<a.width&&i.height<a.height),i},canPan:function(t,e){var o=this,i=o.current,a=null,s=!1;return"image"===i.type&&(i.isComplete||t&&e)&&!i.hasError&&(s=o.getFitPos(i),void 0!==t&&void 0!==e?a={width:t,height:e}:i.isComplete&&(a=n.fancybox.getTranslate(i.$content)),a&&s&&(s=Math.abs(a.width-s.width)>1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r<o.length;r++){var c=o[r];if("w"===c.postfix&&c.value>=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('<div class="fancybox-content'+(i.preload?" fancybox-is-hidden":"")+'"></div>').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("<div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents()),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("<div></div>"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("<div></div>").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity,
19�
vendor: 30,962 bytes, lines 19-20
19 20"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i<d.length;++i){var s=d[i].split("=",2);2==s.length&&(u[s[0]]=decodeURIComponent(s[1].replace(/\+/g," ")))}}return l=t.extend(!0,{},o.params,a.opts[e],u),p="function"===t.type(o.url)?o.url.call(this,c,l,a):n(o.url,c,l),r="function"===t.type(o.thumb)?o.thumb.call(this,c,l,a):n(o.thumb,c),"youtube"===e?p=p.replace(/&t=((\d+)m)?(\d+)s/,function(t,e,n,o){return"&start="+((n?60*parseInt(n,10):0)+parseInt(o,10))}):"vimeo"===e&&(p=p.replace("&%23","#")),!1}}),h?(a.opts.thumb||a.opts.$thumb&&a.opts.$thumb.length||(a.opts.thumb=r),"iframe"===h&&(a.opts=t.extend(!0,a.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}})),t.extend(a,{type:h,src:p,origSrc:a.src,contentSource:f,contentType:"image"===h?"image":"gmap_place"==f||"gmap_search"==f?"map":"video"})):p&&(a.type=a.opts.defaultType)});var o={youtube:{src:"https://www.youtube.com/iframe_api",class:"YT",loading:!1,loaded:!1},vimeo:{src:"https://player.vimeo.com/api/player.js",class:"Vimeo",loading:!1,loaded:!1},load:function(t){var e,n=this;if(this[t].loaded)return void setTimeout(function(){n.done(t)});this[t].loading||(this[t].loading=!0,e=document.createElement("script"),e.type="text/javascript",e.src=this[t].src,"youtube"===t?window.onYouTubeIframeAPIReady=function(){n[t].loaded=!0,n.done(t)}:e.onload=function(){n[t].loaded=!0,n.done(t)},document.body.appendChild(e))},done:function(e){var n,o,i;"youtube"===e&&delete window.onYouTubeIframeAPIReady,(n=t.fancybox.getInstance())&&(o=n.current.$content.find("iframe"),"youtube"===e&&void 0!==YT&&YT?i=new YT.Player(o.attr("id"),{events:{onStateChange:function(t){0==t.data&&n.next()}}}):"vimeo"===e&&void 0!==Vimeo&&Vimeo&&(i=new Vimeo.Player(o),i.on("ended",function(){n.next()})))}};t(document).on({"afterShow.fb":function(t,e,n){e.group.length>1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i<n&&(i=n+1-Math.pow(n-f-l,.8)||0),d>0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&a<o&&(a=o+1-Math.pow(o-p-d,.8)||0),{top:a,left:i}},d.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},d.prototype.onZoom=function(){var e=this,a=e.contentStartPos,r=a.width,c=a.height,l=a.left,d=a.top,u=s(e.newPoints[0],e.newPoints[1]),f=u/e.startDistanceBetweenFingers,p=Math.floor(r*f),h=Math.floor(c*f),g=(r-p)*e.percentageOfImageAtPinchPointX,b=(c-h)*e.percentageOfImageAtPinchPointY,m=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),v=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=m-e.centerPointStartX,x=v-e.centerPointStartY,w=l+(g+y),$=d+(b+x),S={top:$,left:w,scaleX:f,scaleY:f};e.canTap=!1,e.newWidth=p,e.newHeight=h,e.contentLastPos=S,e.requestId&&i(e.requestId),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},d.prototype.ontouchend=function(t){var o=this,s=o.isSwiping,r=o.isPanning,c=o.isZooming,l=o.isScrolling;if(o.endPoints=a(t),o.dMs=Math.max((new Date).getTime()-o.startTime,1),o.$container.removeClass("fancybox-is-grabbing"),n(e).off(".fb.touch"),e.removeEventListener("scroll",o.onscroll,!0),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.isScrolling=!1,o.instance.isDragging=!1,o.canTap)return o.onTap(t);o.speed=100,o.velocityX=o.distanceX/o.dMs*.5,o.velocityY=o.distanceY/o.dMs*.5,r?o.endPanning():c?o.endZooming():o.endSwiping(s,l)},d.prototype.endSwiping=function(t,e){var o=this,i=!1,a=o.instance.group.length,s=Math.abs(o.distanceX),r="x"==t&&a>1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg><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></button>'},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('<div class="fancybox-progress"></div>').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex<o.group.length-1)?n.isActive&&"video"!==i.contentType&&(n.$progress&&e.fancybox.animate(n.$progress.show(),{scaleX:1},i.opts.slideShow.speed),n.timer=setTimeout(function(){o.current.opts.loop||o.current.index!=o.group.length-1?o.next():o.jumpTo(0)},i.opts.slideShow.speed)):(n.stop(),o.idleSecondsCounter=0,o.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null,t.$progress&&t.$progress.removeAttr("style").hide()},start:function(){var t=this,e=t.instance.current;e&&(t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),t.isActive=!0,e.isComplete&&t.set(!0),t.instance.trigger("onSlideShowChange",!0))},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",(e.opts.i18n[e.opts.lang]||e.opts.i18n.en).PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),t.isActive=!1,t.instance.trigger("onSlideShowChange",!1),t.$progress&&t.$progress.removeAttr("style").hide()},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,jQuery),function(t,e){"use strict";var n=function(){for(var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n={},o=0;o<e.length;o++){var i=e[o];if(i&&i[1]in t){for(var a=0;a<i.length;a++)n[e[0][a]]=i[a];return n}}return!1}();if(n){var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e.extend(!0,e.fancybox.defaults,{btnTpl:{fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}"><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><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></button>'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><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></button>'},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i<a&&(n[i].thumb&&o++,!(o>1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('<div class="'+n+" "+n+"-"+o.opts.axis+'"></div>').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('<div class="'+n+'__list">').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('<a href="javascript:;" tabindex="0" data-index="'+e+'"'+(t&&t.length?' style="background-image:url('+t+')"':'class="fancybox-thumbs-missing"')+"></a>")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.left<a.scrollLeft()||n.left>a.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><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></button>'},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location},
vendor: 2,330 bytes, lines 20-21
20 21tpl:'<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><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><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><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><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><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><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p></div>'}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})}
21,mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery); 22/* End */ 23; 24; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/ntk_new/js/jquery.maskedinput.js?174016440011290";s:6:"source";s:49:"/local/templates/ntk_new/js/jquery.maskedinput.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 25(function (factory) { 26 if (typeof define === 'function' && define.amd) { 27 // AMD. Register as an anonymous module. 28 define(['jquery'], factory); 29 } else if (typeof exports === 'object') { 30 // Node/CommonJS 31 factory(require('jquery')); 32 } else { 33 // Browser globals 34 factory(jQuery); 35 } 36}(function ($) { 37 38var ua = navigator.userAgent, 39 iPhone = /iphone/i.test(ua), 40 chrome = /chrome/i.test(ua), 41 android = /android/i.test(ua), 42 caretTimeoutId; 43 44$.mask = { 45 //Predefined character definitions 46 definitions: { 47 '9': "[0-9]", 48 'a': "[A-Za-z]", 49 '*': "[A-Za-z0-9]" 50 }, 51 autoclear: true, 52 dataName: "rawMaskFn", 53 placeholder: '_' 54}; 55 56$.fn.extend({ 57 //Helper Function for Caret positioning 58 caret: function(begin, end) { 59 var range; 60 61 if (this.length === 0 || this.is(":hidden")) { 62 return; 63 } 64 65 if (typeof begin == 'number') { 66 end = (typeof end === 'number') ? end : begin; 67 return this.each(function() { 68 if (this.setSelectionRange) { 69 this.setSelectionRange(begin, end); 70 } else if (this.createTextRange) { 71 range = this.createTextRange(); 72 range.collapse(true); 73 range.moveEnd('character', end); 74 range.moveStart('character', begin); 75 range.select(); 76 } 77 }); 78 } else { 79 if (this[0].setSelectionRange) { 80 begin = this[0].selectionStart; 81 end = this[0].selectionEnd; 82 } else if (document.selection && document.selection.createRange) { 83 range = document.selection.createRange(); 84 begin = 0 - range.duplicate().moveStart('character', -100000); 85 end = begin + range.text.length; 86 } 87 return { begin: begin, end: end }; 88 } 89 }, 90 unmask: function() { 91 return this.trigger("unmask"); 92 }, 93 mask: function(mask, settings) { 94 var input, 95 defs, 96 tests, 97 partialPosition, 98 firstNonMaskPos, 99 lastRequiredNonMaskPos, 100 len, 101 oldVal; 102 103 if (!mask && this.length > 0) { 104 input = $(this[0]); 105 var fn = input.data($.mask.dataName)
106 return fn?fn():undefined; 107 } 108 109 settings = $.extend({ 110 autoclear: $.mask.autoclear, 111 placeholder: $.mask.placeholder, // Load default placeholder 112 completed: null 113 }, settings); 114 115 116 defs = $.mask.definitions; 117 tests = []; 118 partialPosition = len = mask.length; 119 firstNonMaskPos = null; 120 121 $.each(mask.split(""), function(i, c) { 122 if (c == '?') { 123 len--; 124 partialPosition = i; 125 } else if (defs[c]) { 126 tests.push(new RegExp(defs[c])); 127 if (firstNonMaskPos === null) { 128 firstNonMaskPos = tests.length - 1; 129 } 130 if(i < partialPosition){ 131 lastRequiredNonMaskPos = tests.length - 1; 132 } 133 } else { 134 tests.push(null); 135 } 136 }); 137 138 return this.trigger("unmask").each(function() { 139 var input = $(this), 140 buffer = $.map( 141 mask.split(""), 142 function(c, i) { 143 if (c != '?') { 144 return defs[c] ? getPlaceholder(i) : c; 145 } 146 }), 147 defaultBuffer = buffer.join(''), 148 focusText = input.val(); 149 150 function tryFireCompleted(){ 151 if (!settings.completed) { 152 return; 153 } 154 155 for (var i = firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) { 156 if (tests[i] && buffer[i] === getPlaceholder(i)) { 157 return; 158 } 159 } 160 settings.completed.call(input); 161 } 162 163 function getPlaceholder(i){ 164 if(i < settings.placeholder.length) 165 return settings.placeholder.charAt(i); 166 return settings.placeholder.charAt(0);
167 } 168 169 function seekNext(pos) { 170 while (++pos < len && !tests[pos]); 171 return pos; 172 } 173 174 function seekPrev(pos) { 175 while (--pos >= 0 && !tests[pos]); 176 return pos; 177 } 178 179 function shiftL(begin,end) { 180 var i, 181 j; 182 183 if (begin<0) { 184 return; 185 } 186 187 for (i = begin, j = seekNext(end); i < len; i++) { 188 if (tests[i]) { 189 if (j < len && tests[i].test(buffer[j])) { 190 buffer[i] = buffer[j]; 191 buffer[j] = getPlaceholder(j); 192 } else { 193 break; 194 } 195 196 j = seekNext(j); 197 } 198 } 199 writeBuffer(); 200 input.caret(Math.max(firstNonMaskPos, begin)); 201 } 202 203 function shiftR(pos) { 204 var i, 205 c, 206 j, 207 t; 208 209 for (i = pos, c = getPlaceholder(pos); i < len; i++) { 210 if (tests[i]) { 211 j = seekNext(i); 212 t = buffer[i]; 213 buffer[i] = c; 214 if (j < len && tests[j].test(t)) { 215 c = t; 216 } else { 217 break; 218 } 219 } 220 } 221 } 222 223 function androidInputEvent(e) { 224 var curVal = input.val(); 225 var pos = input.caret(); 226 if (oldVal && oldVal.length && oldVal.length > curVal.length ) { 227 // a deletion or backspace happened 228 checkVal(true); 229 while (pos.begin > 0 && !tests[pos.begin-1]) 230 pos.begin--; 231 if (pos.begin === 0) 232 { 233 while (pos.begin < firstNonMaskPos && !tests[pos.begin]) 234 pos.begin++; 235 } 236 input.caret(pos.begin,pos.begin); 237 } else { 238 var pos2 = checkVal(true); 239 while (pos.begin < len && !tests[pos.begin]) 240 pos.begin++; 241 242 input.caret(pos.begin,pos.begin); 243 } 244 245 tryFireCompleted(); 246 } 247 248 function blurEvent(e) { 249 checkVal(); 250 251 if (input.val() != focusText) 252 input.change(); 253 } 254 255 function keydownEvent(e) { 256 if (input.prop("readonly")){ 257 return; 258 } 259 260 var k = e.which || e.keyCode, 261 pos, 262 begin, 263 end; 264 oldVal = input.val(); 265 //backspace, delete, and escape get special treatment 266 if (k === 8 || k === 46 || (iPhone && k === 127)) { 267 pos = input.caret(); 268 begin = pos.begin; 269 end = pos.end; 270 271 if (end - begin === 0) { 272 begin=k!==46?seekPrev(begin):(end=seekNext(begin-1)); 273 end=k===46?seekNext(end):end; 274 } 275 clearBuffer(begin, end); 276 shiftL(begin, end - 1); 277 278 e.preventDefault(); 279 } else if( k === 13 ) { // enter 280 blurEvent.call(this, e); 281 } else if (k === 27) { // escape 282 input.val(focusText); 283 input.caret(0, checkVal()); 284 e.preventDefault(); 285 } 286 } 287 288 function keypressEvent(e) { 289 if (input.prop("readonly")){ 290 return; 291 } 292 293 var k = e.which || e.keyCode, 294 pos = input.caret(), 295 p, 296 c, 297 next; 298 299 if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore 300 return; 301 } else if ( k && k !== 13 ) { 302 if (pos.end - pos.begin !== 0){ 303 clearBuffer(pos.begin, pos.end); 304 shiftL(pos.begin, pos.end-1); 305 } 306 307 p = seekNext(pos.begin - 1); 308 if (p < len) { 309 c = String.fromCharCode(k); 310 if (tests[p].test(c)) { 311 shiftR(p); 312 313 buffer[p] = c; 314 writeBuffer(); 315 next = seekNext(p); 316 317 if(android){ 318 //Path for CSP Violation on FireFox OS 1.1 319 var proxy = function() { 320 $.proxy($.fn.caret,input,next)(); 321 }; 322 323 setTimeout(proxy,0); 324 }else{ 325 input.caret(next); 326 } 327 if(pos.begin <= lastRequiredNonMaskPos){ 328 tryFireCompleted(); 329 } 330 } 331 } 332 e.preventDefault(); 333 } 334 } 335 336 function clearBuffer(start, end) { 337 var i; 338 for (i = start; i < end && i < len; i++) { 339 if (tests[i]) { 340 buffer[i] = getPlaceholder(i); 341 } 342 } 343 } 344 345 function writeBuffer() { input.val(buffer.join('')); } 346 347 function checkVal(allow) { 348 //try to place characters where they belong 349 var test = input.val(), 350 lastMatch = -1, 351 i, 352 c, 353 pos; 354 355 for (i = 0, pos = 0; i < len; i++) { 356 if (tests[i]) { 357 buffer[i] = getPlaceholder(i); 358 while (pos++ < test.length) { 359 c = test.charAt(pos - 1); 360 if (tests[i].test(c)) { 361 buffer[i] = c; 362 lastMatch = i; 363 break; 364 } 365 } 366 if (pos > test.length) { 367 clearBuffer(i + 1, len); 368 break; 369 } 370 } else { 371 if (buffer[i] === test.charAt(pos)) { 372 pos++; 373 } 374 if( i < partialPosition){ 375 lastMatch = i; 376 } 377 } 378 } 379 if (allow) { 380 writeBuffer(); 381 } else if (lastMatch + 1 < partialPosition) { 382 if (settings.autoclear || buffer.join('') === defaultBuffer) { 383 // Invalid value. Remove it and replace it with the 384 // mask, which is the default behavior. 385 if(input.val()) input.val(""); 386 clearBuffer(0, len); 387 } else { 388 // Invalid value, but we opt to show the value to the 389 // user and allow them to correct their mistake. 390 writeBuffer(); 391 } 392 } else { 393 writeBuffer(); 394 input.val(input.val().substring(0, lastMatch + 1)); 395 } 396 return (partialPosition ? i : firstNonMaskPos);
vendor: 43,149 bytes, lines 397-466
397 } 398 399 input.data($.mask.dataName,function(){ 400 return $.map(buffer, function(c, i) { 401 return tests[i]&&c!=getPlaceholder(i) ? c : null; 402 }).join(''); 403 }); 404 405 406 input 407 .one("unmask", function() { 408 input 409 .off(".mask") 410 .removeData($.mask.dataName); 411 }) 412 .on("focus.mask", function() { 413 if (input.prop("readonly")){ 414 return; 415 } 416 417 clearTimeout(caretTimeoutId); 418 var pos; 419 420 focusText = input.val(); 421 422 pos = checkVal(); 423 424 caretTimeoutId = setTimeout(function(){ 425 if(input.get(0) !== document.activeElement){ 426 return; 427 } 428 writeBuffer(); 429 if (pos == mask.replace("?","").length) { 430 input.caret(0, pos); 431 } else { 432 input.caret(pos); 433 } 434 }, 10); 435 }) 436 .on("blur.mask", blurEvent) 437 .on("keydown.mask", keydownEvent) 438 .on("keypress.mask", keypressEvent) 439 .on("input.mask paste.mask", function() { 440 if (input.prop("readonly")){ 441 return; 442 } 443 444 setTimeout(function() { 445 var pos=checkVal(true); 446 input.caret(pos); 447 tryFireCompleted(); 448 }, 0); 449 }); 450 if (chrome && android) 451 { 452 input 453 .off('input.mask') 454 .on('input.mask', androidInputEvent); 455 } 456 checkVal(); //Perform initial check for existing values 457 }); 458 } 459}); 460})); 461 462/* End */ 463; 464; /* Start:"a:4:{s:4:"full";s:70:"/local/templates/ntk_new/lib/jquery.suggestions.min.js?171977400059051";s:6:"source";s:54:"/local/templates/ntk_new/lib/jquery.suggestions.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 465!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return function(n,i){var s,o=[];return t(i)&&(s=k.splitTokens(k.split(n,e)),y.each(i,function(t,i){var a=t.value;if(k.stringEncloses(n,a))return!1;var r=k.splitTokens(k.split(a,e));0===y.minus(s,r).length&&o.push(i)})),1===o.length?o[0]:-1}}function n(e,t){var n=e.data&&e.data[t];return n&&new RegExp("^"+k.escapeRegExChars(n)+"(["+w+"]|$)","i").test(e.value)}function i(e,t){var n=/<strong>/;return n.test(t)&&!n.test(e)?t:e}function s(e,t,n,s,o){var a=this;return i(a.highlightMatches(e,n,s,o),a.highlightMatches(t,n,s,o))}function o(e){this.urlSuffix=e.toLowerCase(),this.noSuggestionsHint="ÐеизвеÑÑное знаÑение",this.matchers=[L.matchByNormalizedQuery(),L.matchByWords()]}function a(t,n){var i=this;i.element=t,i.el=e(t),i.suggestions=[],i.badQueries=[],i.selectedIndex=-1,i.currentValue=i.element.value,i.intervalId=0,i.cachedResponse={},i.enrichmentCache={},i.currentRequest=null,i.inputPhase=e.Deferred(),i.fetchPhase=e.Deferred(),i.enrichPhase=e.Deferred(),i.onChangeTimeout=null,i.triggering={},i.$wrapper=null,i.options=e.extend({},B,n),i.classes=x,i.disabled=!1,i.selection=null,i.$viewport=e(window),i.$body=e(document.body),i.type=null,i.status={},i.setupElement(),i.initializer=e.Deferred(),i.el.is(":visible")?i.initializer.resolve():i.deferInitialization(),i.initializer.done(e.proxy(i.initialize,i))}function r(){j.each(Q,function(e){e.abort()}),Q={}}function l(){K=null,B.geoLocation=G}function u(t){return e.map(t,function(e){var t=j.escapeHtml(e.text);return t&&e.matched&&(t="<strong>"+t+"</strong>"),t}).join("")}function c(t,n){var i=t.split(", ");return 1===i.length?t:e.map(i,function(e){return'<span class="'+n+'">'+e+"</span>"}).join(", ")}function d(t,n){var i=!1;return e.each(t,function(e,t){if(i=t.value==n.value&&t!=n)return!1}),i}function f(e,t){var n=t.selection,i=n&&n.data&&t.bounds;return i&&y.each(t.bounds.all,function(t,s){return i=n.data[t]===e.data[t]}),i}function p(e){var t=e.replace(/^(\d{2})(\d*?)(0+)$/g,"$1$2"),n=t.length,i=-1;return n<=2?i=2:n>2&&n<=5?i=5:n>5&&n<=8?i=8:n>8&&n<=11?i=11:n>11&&n<=15?i=15:n>15&&(i=19),k.padEnd(t,i,"0")}function h(e){this.plan=e.status.plan,this.isMobile=e.isMobile;var t=e.getContainer();this.element=pe.selectByClass(x.promo,t)}function g(){new h(this).show()}e=e&&e.hasOwnProperty("default")?e.default:e;var m={isArray:function(e){return Array.isArray(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isEmptyObject:function(e){return 0===Object.keys(e).length&&e.constructor===Object},isPlainObject:function(e){return void 0!==e&&"object"==typeof e&&null!==e&&!e.nodeType&&e!==e.window&&!(e.constructor&&!Object.prototype.hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))}},y={compact:function(e){return e.filter(function(e){return!!e})},each:function(e,t){if(Array.isArray(e))return void e.some(function(e,n){return!1===t(e,n)});Object.keys(e).some(function(n){var i=e[n];return!1===t(i,n)})},intersect:function(e,t){var n=[];return Array.isArray(e)&&Array.isArray(t)?e.filter(function(e){return-1!==t.indexOf(e)}):n},minus:function(e,t){return t&&0!==t.length?e.filter(function(e){return-1===t.indexOf(e)}):e},makeArray:function(e){return m.isArray(e)?Array.prototype.slice.call(e):[e]},minusWithPartialMatching:function(e,t){return t&&0!==t.length?e.filter(function(e){return!t.some(function(t){return 0===t.indexOf(e)})}):e},slice:function(e,t){return Array.prototype.slice.call(e,t)}},v={delay:function(e,t){return setTimeout(e,t||0)}},b={areSame:function e(t,n){var i=!0;return typeof t==typeof n&&("object"==typeof t&&null!=t&&null!=n?(y.each(t,function(t,s){return i=e(t,n[s])}),i):t===n)},assign:function(e,t){if("function"==typeof Object.assign)return Object.assign.apply(null,arguments);if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(n[o]=s[o])}return n},clone:function(e){return JSON.parse(JSON.stringify(e))},compact:function(e){var t=b.clone(e);return y.each(t,function(e,n){null!==e&&void 0!==e&&""!==e||delete t[n]}),t},fieldsAreNotEmpty:function(e,t){if(!m.isPlainObject(e))return!1;var n=!0;return y.each(t,function(t,i){return n=!!e[t]}),n},getDeepValue:function e(t,n){var i=n.split("."),s=i.shift();return t&&(i.length?e(t[s],i.join(".")):t[s])},indexObjectsById:function(e,t,n){var i={};return y.each(e,function(e,s){var o=e[t],a={};n&&(a[n]=s),i[o]=b.assign(a,e)}),i}},_={ENTER:13,ESC:27,TAB:9,SPACE:32,UP:38,DOWN:40},x={hint:"suggestions-hint",mobile:"suggestions-mobile",nowrap:"suggestions-nowrap",promo:"suggestions-promo",promo_desktop:"suggestions-promo-desktop",selected:"suggestions-selected",suggestion:"suggestions-suggestion",subtext:"suggestions-subtext",subtext_inline:"suggestions-subtext suggestions-subtext_inline",subtext_delimiter:"suggestions-subtext-delimiter",subtext_label:"suggestions-subtext suggestions-subtext_label",removeConstraint:"suggestions-remove",value:"suggestions-value"},S=".suggestions",w="\\s\"'~\\*\\.,:\\|\\[\\]\\(\\)\\{\\}<>â",C=new RegExp("["+w+"]+","g"),E=new RegExp("[\\-\\+\\\\\\?!@#$%^&]+","g"),k={escapeHtml:function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return e&&y.each(t,function(t,n){e=e.replace(new RegExp(n,"g"),t)}),e},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},formatToken:function(e){return e&&e.toLowerCase().replace(/[ÑÐ]/g,"е")},getWordExtractorRegExp:function(){return new RegExp("([^"+w+"]*)(["+w+"]*)","g")},normalize:function(e,t){return k.split(e,t).join(" ")},padEnd:function(e,t,n){return String.prototype.padEnd?e.padEnd(t,n):(t>>=0,n=String(void 0!==n?n:" "),e.length>t?String(e):(t-=e.length,t>n.length&&(n+=n.repeat(t/n.length)),String(e)+n.slice(0,t)))},split:function(e,t){e=e.toLowerCase(),e=e.replace("Ñ","е").replace(/(\d+)([а-Ñ]{2,})/g,"$1 $2").replace(/([а-Ñ]+)(\d+)/g,"$1 $2");var n=y.compact(e.split(C)),i=n.pop(),s=y.minus(n,t);return s.push(i),s},splitTokens:function(e){var t=[];return y.each(e,function(e,n){var i=e.split(E);t=t.concat(y.compact(i))}),t},stringEncloses:function(e,t){return e.length>t.length&&-1!==e.toLowerCase().indexOf(t.toLowerCase())},tokenize:function(e,t){var n=y.compact(k.formatToken(e).split(C)),i=y.minus(n,t),s=y.minus(n,i);return n=k.withSubTokens(i.concat(s))},withSubTokens:function(e){var t=[];return y.each(e,function(e,n){var i=e.split(E);t.push(e),i.length>1&&(t=t.concat(y.compact(i)))}),t}},P={Deferred:function(){return e.Deferred()},ajax:function(t){return e.ajax(t)},extend:function(){return e.extend.apply(null,arguments)},isJqObject:function(t){return t instanceof e},param:function(t){return e.param(t)},proxy:function(t,n){return e.proxy(t,n)},select:function(t){return e(t)},supportsCors:function(){return e.support.cors}},T={getDefaultType:function(){return P.supportsCors()?"POST":"GET"},getDefaultContentType:function(){return P.supportsCors()?"application/json":"application/x-www-form-urlencoded"},fixURLProtocol:function(e){return P.supportsCors()?e:e.replace(/^https?:/,location.protocol)},addUrlParams:function(e,t){return e+(/\?/.test(e)?"&":"?")+P.param(t)},serialize:function(e){return P.supportsCors()?JSON.stringify(e,function(e,t){return null===t?void 0:t}):(e=b.compact(e),P.param(e,!0))}},V=function(){var e=0;return function(t){return(t||"")+ ++e}}(),j={escapeRegExChars:k.escapeRegExChars,escapeHtml:k.escapeHtml,formatToken:k.formatToken,normalize:k.normalize,reWordExtractor:k.getWordExtractorRegExp,stringEncloses:k.stringEncloses,addUrlParams:T.addUrlParams,getDefaultContentType:T.getDefaultContentType,getDefaultType:T.getDefaultType,fixURLProtocol:T.fixURLProtocol,serialize:T.serialize,arrayMinus:y.minus,arrayMinusWithPartialMatching:y.minusWithPartialMatching,arraysIntersection:y.intersect,compact:y.compact,each:y.each,makeArray:y.makeArray,slice:y.slice,delay:v.delay,areSame:b.areSame,compactObject:b.compact,getDeepValue:b.getDeepValue,fieldsNotEmpty:b.fieldsAreNotEmpty,indexBy:b.indexObjectsById,isArray:m.isArray,isEmptyObject:m.isEmptyObject,isFunction:m.isFunction,isPlainObject:m.isPlainObject,uniqueId:V},B={autoSelectFirst:!1,serviceUrl:"https://suggestions.dadata.ru/suggestions/api/4_1/rs",url:null,onSearchStart:e.noop,onSearchComplete:e.noop,onSearchError:e.noop,onSuggestionsFetch:null,onSelect:null,onSelectNothing:null,onInvalidateSelection:null,minChars:1,deferRequestBy:100,enrichmentEnabled:!0,params:{},paramName:"query",timeout:3e3,formatResult:null,formatSelected:null,noCache:!1,containerClass:"suggestions-suggestions",tabDisabled:!1,triggerSelectOnSpace:!1,triggerSelectOnEnter:!0,triggerSelectOnBlur:!0,preventBadQueries:!1,hint:"ÐÑбеÑиÑе ваÑÐ¸Ð°Ð½Ñ Ð¸Ð»Ð¸ пÑодолжиÑе ввод",noSuggestionsHint:null,type:null,requestMode:"suggest",count:5,$helpers:null,headers:null,scrollOnFocus:!0,mobileWidth:980,initializeInterval:100},O=function(e){return function(t){if(0===t.length)return!1;if(1===t.length)return!0;var n=e(t[0].value);return 0===t.filter(function(t){return 0!==e(t.value).indexOf(n)}).length}}(function(e){return e}),L={matchByNormalizedQuery:function(e){return function(t,n){var i=k.normalize(t,e),s=[];return y.each(n,function(n,o){var a=n.value.toLowerCase();return!k.stringEncloses(t,a)&&(!(a.indexOf(i)>0)&&void(i===k.normalize(a,e)&&s.push(o)))}),1===s.length?s[0]:-1}},matchByWords:function(e){return t(e,O)},matchByWordsAddress:function(e){return t(e,O)},matchByFields:function(e){return function(t,n){var i=k.splitTokens(k.split(t)),s=[];return 1===n.length&&(e&&y.each(e,function(e,t){var i=b.getDeepValue(n[0],t),o=i&&k.splitTokens(k.split(i,e));o&&o.length&&(s=s.concat(o))}),0===y.minusWithPartialMatching(i,s).length)?0:-1}}},R=["ао","аобл","дом","ÑеÑп","а/Ñ","аал","авÑодоÑога","аллеÑ","аÑбан","аÑл","б-Ñ","беÑег","бÑгоÑ","вал","вл","волоÑÑÑ","вÑезд","вÑÑел","г","гоÑодок","гÑк","д","двлд","днп","доÑ","дп","ж/д_бÑдка","ж/д_казаÑм","ж/д_оп","ж/д_плаÑÑ","ж/д_поÑÑ","ж/д_Ñзд","ж/д_ÑÑ","жилзона","жилÑайон","жÑ","заезд","заимка","зона","к","казаÑма","канал","кв","кв-л","км","колÑÑо","комн","коÑдон","коÑа","кп","кÑай","линиÑ","Ð»Ð¿Ñ ","м","маÑÑив","меÑÑноÑÑÑ","мкÑ","моÑÑ","н/п","наб","нп","обл","окÑÑг","оÑÑÑов","оÑ","п","п/о","п/Ñ","п/ÑÑ","паÑк","пгÑ","пеÑ","пеÑеезд","пл","пл-ка","плаÑÑ","погоÑÑ","полÑÑÑанок","поÑинок","пÑ-кÑ","пÑоезд","пÑомзона","пÑоÑек","пÑоÑека","пÑоÑелок","пÑоÑок","пÑоÑока","пÑоÑлок","Ñ-н","Ñзд","ÑоÑÑиÑ","Ñп","ÑÑдÑ","Ñ","Ñ/а","Ñ/мо","Ñ/о","Ñ/п","Ñ/Ñ","Ñад","ÑквеÑ","Ñл","ÑнÑ","ÑпÑÑк","ÑÑ","ÑÑ-Ñа","ÑÑÑ","ÑеÑ","ÑÑакÑ","ÑÑп","Ñ","Ñл","ÑÑ-к","Ñ/Ñ ","ÑеÑма","Ñ ","Ñ","бÑлÑваÑ","владение","вÑÑелки","гаÑажно-ÑÑÑоиÑелÑнÑй","гоÑод","деÑевнÑ","домовладение","доÑога","кваÑÑал","киломеÑÑ","комнаÑа","коÑпÑÑ","лиÑеÑ","леÑпÑÐ¾Ð¼Ñ Ð¾Ð·","меÑÑеÑко","микÑоÑайон","набеÑежнаÑ","облаÑÑÑ","пеÑеÑлок","плаÑÑоÑма","плоÑадка","плоÑадÑ","поÑеление","поÑелок","пÑоÑпекÑ","ÑазÑезд","Ñайон","ÑеÑпÑблика","Ñело","ÑелÑÑовеÑ","Ñлобода","ÑооÑÑжение","ÑÑаниÑа","ÑÑанÑиÑ","ÑÑÑоение","ÑеÑÑиÑоÑиÑ","ÑÑпик","ÑлиÑа","ÑлÑÑ","ÑÑаÑÑок","Ñ ÑÑоÑ","ÑоÑÑе"],D=[{id:"kladr_id",fields:["kladr_id"],forBounds:!1,forLocations:!0},{id:"postal_code",fields:["postal_code"],forBounds:!1,forLocations:!0},{id:"country",fields:["country"],forBounds:!1,forLocations:!0},{id:"region_fias_id",fields:["region_fias_id"],forBounds:!1,forLocations:!0},{id:"region_type_full",fields:["region_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:2,zeros:11},fiasType:"region_fias_id"},{id:"region",fields:["region","region_type","region_type_full","region_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:2,zeros:11},fiasType:"region_fias_id"},{id:"area_fias_id",fields:["area_fias_id"],forBounds:!1,forLocations:!0},{id:"area_type_full",fields:["area_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:5,zeros:8},fiasType:"area_fias_id"},{id:"area",fields:["area","area_type","area_type_full","area_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:5,zeros:8},fiasType:"area_fias_id"},{id:"city_fias_id",fields:["city_fias_id"],forBounds:!1,forLocations:!0},{id:"city_type_full",fields:["city_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:8,zeros:5},fiasType:"city_fias_id"},{id:"city",fields:["city","city_type","city_type_full","city_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:8,zeros:5},fiasType:"city_fias_id"},{id:"city_district_fias_id",fields:["city_district_fias_id"],forBounds:!1,forLocations:!0},{id:"city_district_type_full",fields:["city_district_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"city_district_fias_id"},{id:"city_district",fields:["city_district","city_district_type","city_district_type_full","city_district_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"city_district_fias_id"},{id:"settlement_fias_id",fields:["settlement_fias_id"],forBounds:!1,forLocations:!0},{id:"settlement_type_full",fields:["settlement_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"settlement_fias_id"},{id:"settlement",fields:["settlement","settlement_type","settlement_type_full","settlement_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:11,zeros:2},fiasType:"settlement_fias_id"},{id:"street_fias_id",fields:["street_fias_id"],forBounds:!1,forLocations:!0},{id:"street_type_full",fields:["street_type_full"],forBounds:!1,forLocations:!0,kladrFormat:{digits:15,zeros:2},fiasType:"street_fias_id"},{id:"street",fields:["street","street_type","street_type_full","street_with_type"],forBounds:!0,forLocations:!0,kladrFormat:{digits:15,zeros:2},fiasType:"street_fias_id"},{id:"house",fields:["house","house_type","house_type_full","block","block_type"],forBounds:!0,forLocations:!1,kladrFormat:{digits:19}}],I={urlSuffix:"address",noSuggestionsHint:"ÐеизвеÑÑнÑй адÑеÑ",matchers:[L.matchByNormalizedQuery(R),L.matchByWordsAddress(R)],dataComponents:D,dataComponentsById:b.indexObjectsById(D,"id","index"),unformattableTokens:R,enrichmentEnabled:!0,enrichmentMethod:"suggest",enrichmentParams:{count:1,locations:null,locations_boost:null,from_bound:null,to_bound:null},getEnrichmentQuery:function(e){return e.unrestricted_value},geoEnabled:!0,isDataComplete:function(e){var t=[this.bounds.to||"flat"],n=e.data;return!m.isPlainObject(n)||b.fieldsAreNotEmpty(n,t)},composeValue:function(e,t){var n=e.region_with_type||y.compact([e.region,e.region_type]).join(" ")||e.region_type_full,i=e.area_with_type||y.compact([e.area_type,e.area]).join(" ")||e.area_type_full,s=e.city_with_type||y.compact([e.city_type,e.city]).join(" ")||e.city_type_full,o=e.settlement_with_type||y.compact([e.settlement_type,e.settlement]).join(" ")||e.settlement_type_full,a=e.city_district_with_type||y.compact([e.city_district_type,e.city_district]).join(" ")||e.city_district_type_full,r=e.street_with_type||y.compact([e.street_type,e.street]).join(" ")||e.street_type_full,l=y.compact([e.house_type,e.house,e.block_type,e.block]).join(" "),u=y.compact([e.flat_type,e.flat]).join(" "),c=e.postal_box&&"а/Ñ "+e.postal_box;return n===s&&(n=""),t&&t.saveCityDistrict||(t&&t.excludeCityDistrict?a="":a&&!e.city_district_fias_id&&(a="")),y.compact([n,i,s,a,o,r,l,u,c]).join(", ")},formatResult:function(){var e=[],t=!1;return D.forEach(function(n){t&&e.push(n.id),"city_district"===n.id&&(t=!0)}),function(t,n,i,s){var o,a,r,l=this,u=i.data&&i.data.city_district_with_type,c=s&&s.unformattableTokens,d=i.data&&i.data.history_values;return d&&d.length>0&&(o=k.tokenize(n,c),a=this.type.findUnusedTokens(o,t),(r=this.type.getFormattedHistoryValues(a,d))&&(t+=r)),t=l.highlightMatches(t,n,i,s),t=l.wrapFormattedValue(t,i),u&&(!l.bounds.own.length||l.bounds.own.indexOf("street")>=0)&&!m.isEmptyObject(l.copyDataComponents(i.data,e))&&(t+='<div class="'+l.classes.subtext+'">'+l.highlightMatches(u,n,i)+"</div>"),t}}(),findUnusedTokens:function(e,t){return e.filter(function(e){return-1===t.indexOf(e)})},getFormattedHistoryValues:function(e,t){var n=[],i="";return t.forEach(function(t){y.each(e,function(e){if(t.toLowerCase().indexOf(e)>=0)return n.push(t),!1})}),n.length>0&&(i=" (бÑвÑ. "+n.join(", ")+")"),i},getSuggestionValue:function(e,t){var n=null;return t.hasSameValues?n=e.options.restrict_value?this.getValueWithinConstraints(e,t.suggestion):e.bounds.own.length?this.getValueWithinBounds(e,t.suggestion):t.suggestion.unrestricted_value:t.hasBeenEnriched&&e.options.restrict_value&&(n=this.getValueWithinConstraints(e,t.suggestion,{excludeCityDistrict:!0})),n},getValueWithinConstraints:function(e,t,n){return this.composeValue(e.getUnrestrictedData(t.data),n)},getValueWithinBounds:function(e,t,n){var i=e.copyDataComponents(t.data,e.bounds.own.concat(["city_district_fias_id"]));return this.composeValue(i,n)}},q={urlSuffix:"fio",noSuggestionsHint:!1,matchers:[L.matchByNormalizedQuery(),L.matchByWords()],fieldNames:{surname:"ÑамилиÑ",name:"имÑ",patronymic:"оÑÑеÑÑво"},isDataComplete:function(e){var t,i=this,s=i.options.params,o=e.data;return m.isFunction(s)&&(s=s.call(i.element,e.value)),s&&s.parts?t=s.parts.map(function(e){return e.toLowerCase()}):(t=["surname","name"],n(e,"surname")&&t.push("patronymic")),b.fieldsAreNotEmpty(o,t)},composeValue:function(e){return y.compact([e.surname,e.name,e.patronymic]).join(" ")}},$={LEGAL:[2,2,5,1],INDIVIDUAL:[2,2,6,2]},F={urlSuffix:"party",noSuggestionsHint:"ÐеизвеÑÑÐ½Ð°Ñ Ð¾ÑганизаÑиÑ",matchers:[L.matchByFields({value:null,"data.address.value":R,"data.inn":null,"data.ogrn":null})],dataComponents:D,enrichmentEnabled:!0,enrichmentMethod:"findById",enrichmentParams:{count:1,locations_boost:null},getEnrichmentQuery:function(e){return e.data.hid},geoEnabled:!0,formatResult:function(e,t,n,o){var a=this,r=a.type.formatResultInn.call(a,n,t),l=a.highlightMatches(b.getDeepValue(n.data,"ogrn"),t,n),u=i(r,l),c=a.highlightMatches(b.getDeepValue(n.data,"management.name"),t,n),d=b.getDeepValue(n.data,"address.value")||"";return a.isMobile&&((o||(o={})).maxLength=50),e=s.call(a,e,b.getDeepValue(n.data,"name.latin"),t,n,o),e=a.wrapFormattedValue(e,n),d&&(d=d.replace(/^(\d{6}?\s+|РоÑÑиÑ,\s+)/i,""),d=a.isMobile?d.replace(new RegExp("^([^"+w+"]+["+w+"]+[^"+w+"]+).*"),"$1"):a.highlightMatches(d,t,n,{unformattableTokens:R})),(u||d||c)&&(e+='<div class="'+a.classes.subtext+'"><span class="'+a.classes.subtext_inline+'">'+(u||"")+"</span>"+(i(d,c)||"")+"</div>"),e},formatResultInn:function(e,t){var n,i,s=this,o=e.data&&e.data.inn,a=$[e.data&&e.data.type],r=/\d/;if(o)return i=s.highlightMatches(o,t,e),a&&(i=i.split(""),n=a.map(function(e){for(var t,n="";e&&(t=i.shift());)n+=t,r.test(t)&&e--;return n}),i=n.join('<span class="'+s.classes.subtext_delimiter+'"></span>')+i.join("")),i}},A={urlSuffix:"email",noSuggestionsHint:!1,matchers:[L.matchByNormalizedQuery()],isQueryRequestable:function(e){return this.options.suggest_local||e.indexOf("@")>=0}},z={urlSuffix:"bank",noSuggestionsHint:"ÐеизвеÑÑнÑй банк",matchers:[L.matchByFields({value:null,"data.bic":null,"data.swift":null})],dataComponents:D,geoEnabled:!0,formatResult:function(e,t,n,i){var s=this,o=s.highlightMatches(b.getDeepValue(n.data,"bic"),t,n),a=b.getDeepValue(n.data,"address.value")||"";return e=s.highlightMatches(e,t,n,i),e=s.wrapFormattedValue(e,n),a&&(a=a.replace(/^\d{6}( Ð ÐССÐЯ)?, /i,""),a=s.isMobile?a.replace(new RegExp("^([^"+w+"]+["+w+"]+[^"+w+"]+).*"),"$1"):s.highlightMatches(a,t,n,{unformattableTokens:R})),(o||a)&&(e+='<div class="'+s.classes.subtext+'"><span class="'+s.classes.subtext_inline+'">'+o+"</span>"+a+"</div>"),e},formatSelected:function(e){return b.getDeepValue(e,"data.name.payment")||null}},N={NAME:q,ADDRESS:I,PARTY:F,EMAIL:A,BANK:z};N.get=function(e){return N.hasOwnProperty(e)?N[e]:new o(e)},P.extend(B,{suggest_local:!0});var M={chains:{},on:function(e,t){return this.get(e).push(t),this},get:function(e){var t=this.chains;return t[e]||(t[e]=[])}},H={suggest:{defaultParams:{type:j.getDefaultType(),dataType:"json",contentType:j.getDefaultContentType()},addTypeInUrl:!0},"iplocate/address":{defaultParams:{type:"GET",dataType:"json"},addTypeInUrl:!1},status:{defaultParams:{type:"GET",dataType:"json"},addTypeInUrl:!0},findById:{defaultParams:{type:j.getDefaultType(),dataType:"json",contentType:j.getDefaultContentType()},addTypeInUrl:!0}},W={suggest:{method:"suggest",userSelect:!0,updateValue:!0,enrichmentEnabled:!0},findById:{method:"findById",userSelect:!1,updateValue:!1,enrichmentEnabled:!1}};a.prototype={initialize:function(){var e=this;e.uniqueId=j.uniqueId("i"),e.createWrapper(),e.notify("initialize"),e.bindWindowEvents(),e.setOptions(),e.fixPosition()},deferInitialization:function(){var e,t=this,n="mouseover focus keydown",i=function(){t.initializer.resolve(),t.enable()};t.initializer.always(function(){t.el.off(n,i),clearInterval(e)}),t.disabled=!0,t.el.on(n,i),e=setInterval(function(){t.el.is(":visible")&&i()},t.options.initializeInterval)},isInitialized:function(){return"resolved"===this.initializer.state()},dispose:function(){var e=this;e.initializer.reject(),e.notify("dispose"),e.el.removeData("suggestions").removeClass("suggestions-input"),e.unbindWindowEvents(),e.removeWrapper(),e.el.trigger("suggestions-dispose")},notify:function(t){var n=this,i=j.slice(arguments,1);return e.map(M.get(t),function(e){return e.apply(n,i)})},createWrapper:function(){var t=this;t.$wrapper=e('<div class="suggestions-wrapper"/>'),t.el.after(t.$wrapper),t.$wrapper.on("mousedown"+S,e.proxy(t.onMousedown,t))},removeWrapper:function(){var t=this;t.$wrapper&&t.$wrapper.remove(),e(t.options.$helpers).off(S)},onMousedown:function(t){var n=this;t.preventDefault(),n.cancelBlur=!0,j.delay(function(){delete n.cancelBlur}),0==e(t.target).closest(".ui-menu-item").length&&j.delay(function(){e(document).one("mousedown",function(t){var i=n.el.add(n.$wrapper).add(n.options.$helpers);n.options.floating&&(i=i.add(n.$container)),i=i.filter(function(){return this===t.target||e.contains(this,t.target)}),i.length||n.hide()})})},bindWindowEvents:function(){var t=this,n=e.proxy(t.fixPosition,t);t.$viewport.on("resize"+S+t.uniqueId,n).on("scroll"+S+t.uniqueId,n)},unbindWindowEvents:function(){this.$viewport.off("resize"+S+this.uniqueId).off("scroll"+S+this.uniqueId)},scrollToTop:function(){var t=this,n=t.options.scrollOnFocus;!0===n&&(n=t.el),n instanceof e&&n.length>0&&e("body,html").animate({scrollTop:n.offset().top},"fast")},setOptions:function(t){var n=this;e.extend(n.options,t),n.type=N.get(n.options.type),e.each({requestMode:W},function(t,i){if(n[t]=i[n.options[t]],!n[t])throw n.disable(),"`"+t+"` option is incorrect! Must be one of: "+e.map(i,function(e,t){return'"'+t+'"'}).join(", ")}),e(n.options.$helpers).off(S).on("mousedown"+S,e.proxy(n.onMousedown,n)),n.isInitialized()&&n.notify("setOptions")},fixPosition:function(t){var n,i,s=this,o={};s.isMobile=s.$viewport.width()<=s.options.mobileWidth,s.isInitialized()&&(!t||"scroll"!=t.type||s.options.floating||s.isMobile)&&(s.$container.appendTo(s.options.floating?s.$body:s.$wrapper),s.notify("resetPosition"),s.el.css("paddingLeft",""),s.el.css("paddingRight",""),o.paddingLeft=parseFloat(s.el.css("paddingLeft")),o.paddingRight=parseFloat(s.el.css("paddingRight")),e.extend(o,s.el.offset()),o.borderTop="none"==s.el.css("border-top-style")?0:parseFloat(s.el.css("border-top-width")),o.borderLeft="none"==s.el.css("border-left-style")?0:parseFloat(s.el.css("border-left-width")),o.innerHeight=s.el.innerHeight(),o.innerWidth=s.el.innerWidth(),o.outerHeight=s.el.outerHeight(),o.componentsLeft=0,o.componentsRight=0,n=s.$wrapper.offset(),i={top:o.top-n.top,left:o.left-n.left},s.notify("fixPosition",i,o),o.componentsLeft>o.paddingLeft&&s.el.css("paddingLeft",o.componentsLeft+"px"),o.componentsRight>o.paddingRight&&s.el.css("paddingRight",o.componentsRight+"px"))},clearCache:function(){this.cachedResponse={},this.enrichmentCache={},this.badQueries=[]},clear:function(){var e=this,t=e.selection;e.isInitialized()&&(e.clearCache(),e.currentValue="",e.selection=null,e.hide(),e.suggestions=[],e.el.val(""),e.el.trigger("suggestions-clear"),e.notify("clear"),e.trigger("InvalidateSelection",t))},disable:function(){var e=this;e.disabled=!0,e.abortRequest(),e.visible&&e.hide()},enable:function(){this.disabled=!1},isUnavailable:function(){return this.disabled},update:function(){var e=this,t=e.el.val();e.isInitialized()&&(e.currentValue=t,e.isQueryRequestable(t)?e.updateSuggestions(t):e.hide())},setSuggestion:function(t){var n,i,s=this;e.isPlainObject(t)&&e.isPlainObject(t.data)&&(t=e.extend(!0,{},t),s.isUnavailable()&&s.initializer&&"pending"===s.initializer.state()&&(s.initializer.resolve(),s.enable()),s.bounds.own.length&&(s.checkValueBounds(t),n=s.copyDataComponents(t.data,s.bounds.all),t.data.kladr_id&&(n.kladr_id=s.getBoundedKladrId(t.data.kladr_id,s.bounds.all)),t.data=n),s.selection=t,s.suggestions=[t],i=s.getSuggestionValue(t)||"",s.currentValue=i,s.el.val(i),s.abortRequest(),s.el.trigger("suggestions-set"))},fixData:function(){var t=this,n=t.extendedCurrentValue(),i=t.el.val(),s=e.Deferred();s.done(function(e){t.selectSuggestion(e,0,i,{hasBeenEnriched:!0}),t.el.trigger("suggestions-fixdata",e)}).fail(function(){t.selection=null,t.el.trigger("suggestions-fixdata")}),t.isQueryRequestable(n)?(t.currentValue=n,t.getSuggestions(n,{count:1,from_bound:null,to_bound:null}).done(function(e){var t=e[0];t?s.resolve(t):s.reject()}).fail(function(){s.reject()})):s.reject()},extendedCurrentValue:function(){var t=this,n=t.getParentInstance(),i=n&&n.extendedCurrentValue(),s=e.trim(t.el.val());return j.compact([i,s]).join(" ")},getAjaxParams:function(t,n){var i=this,s=e.trim(i.options.token),o=e.trim(i.options.partner),r=i.options.serviceUrl,l=i.options.url,u=H[t],c=e.extend({timeout:i.options.timeout},u.defaultParams),d={};return l?r=l:(/\/$/.test(r)||(r+="/"),r+=t,u.addTypeInUrl&&(r+="/"+i.type.urlSuffix)),r=j.fixURLProtocol(r),e.support.cors?(s&&(d.Authorization="Token "+s),o&&(d["X-Partner"]=o),d["X-Version"]=a.version,c.headers||(c.headers={}),c.xhrFields||(c.xhrFields={}),e.extend(c.headers,i.options.headers,d),c.xhrFields.withCredentials=!1):(s&&(d.token=s),o&&(d.partner=o),d.version=a.version,r=j.addUrlParams(r,d)),c.url=r,e.extend(c,n)},isQueryRequestable:function(e){var t,n=this;return t=e.length>=n.options.minChars,t&&n.type.isQueryRequestable&&(t=n.type.isQueryRequestable.call(n,e)),t},constructRequestParams:function(t,n){var i=this,s=i.options,o=e.isFunction(s.params)?s.params.call(i.element,t):e.extend({},s.params);return i.type.constructRequestParams&&e.extend(o,i.type.constructRequestParams.call(i)),e.each(i.notify("requestParams"),function(t,n){e.extend(o,n)}),o[s.paramName]=t,e.isNumeric(s.count)&&s.count>0&&(o.count=s.count),e.extend(o,n)},updateSuggestions:function(e){var t=this;t.fetchPhase=t.getSuggestions(e).done(function(n){t.assignSuggestions(n,e)})},getSuggestions:function(t,n,i){var s,o=this,a=o.options,r=i&&i.noCallbacks,l=i&&i.useEnrichmentCache,u=i&&i.method||o.requestMode.method,c=o.constructRequestParams(t,n),d=e.param(c||{}),f=e.Deferred();return s=o.cachedResponse[d],s&&e.isArray(s.suggestions)?f.resolve(s.suggestions):o.isBadQuery(t)?f.reject():r||!1!==a.onSearchStart.call(o.element,c)?o.doGetSuggestions(c,u).done(function(e){o.processResponse(e)&&t==o.currentValue?(a.noCache||(l?o.enrichmentCache[t]=e.suggestions[0]:(o.enrichResponse(e,t),o.cachedResponse[d]=e,a.preventBadQueries&&0===e.suggestions.length&&o.badQueries.push(t))),f.resolve(e.suggestions)):f.reject(),r||a.onSearchComplete.call(o.element,t,e.suggestions)}).fail(function(e,n,i){f.reject(),r||"abort"===n||a.onSearchError.call(o.element,t,e,n,i)}):f.reject(),f},doGetSuggestions:function(t,n){var i=this,s=e.ajax(i.getAjaxParams(n,{data:j.serialize(t)}));return i.abortRequest(),i.currentRequest=s,i.notify("request"),s.always(function(){i.currentRequest=null,i.notify("request")}),s},isBadQuery:function(t){if(!this.options.preventBadQueries)return!1;var n=!1;return e.each(this.badQueries,function(e,i){return!(n=0===t.indexOf(i))}),n},abortRequest:function(){var e=this;e.currentRequest&&e.currentRequest.abort()},processResponse:function(t){var n,i=this;return!(!t||!e.isArray(t.suggestions))&&(i.verifySuggestionsFormat(t.suggestions),i.setUnrestrictedValues(t.suggestions),e.isFunction(i.options.onSuggestionsFetch)&&(n=i.options.onSuggestionsFetch.call(i.element,t.suggestions),e.isArray(n)&&(t.suggestions=n)),!0)},verifySuggestionsFormat:function(t){"string"==typeof t[0]&&e.each(t,function(e,n){t[e]={value:n,data:null}})},getSuggestionValue:function(t,n){var i,s=this,o=s.options.formatSelected||s.type.formatSelected,a=n&&n.hasSameValues,r=n&&n.hasBeenEnriched,l=null;return e.isFunction(o)&&(i=o.call(s,t)),"string"!=typeof i&&(i=t.value,s.type.getSuggestionValue&&null!==(l=s.type.getSuggestionValue(s,{suggestion:t,hasSameValues:a,hasBeenEnriched:r}))&&(i=l)),i},hasSameValues:function(t){var n=!1;return e.each(this.suggestions,function(e,i){if(i.value===t.value&&i!==t)return n=!0,!1}),n},assignSuggestions:function(e,t){var n=this;n.suggestions=e,n.notify("assignSuggestions",t)},shouldRestrictValues:function(){var e=this;return e.options.restrict_value&&e.constraints&&1==Object.keys(e.constraints).length},setUnrestrictedValues:function(t){var n=this,i=n.shouldRestrictValues(),s=n.getFirstConstraintLabel();e.each(t,function(e,t){t.unrestricted_value||(t.unrestricted_value=i?s+", "+t.value:t.value)})},areSuggestionsSame:function(e,t){return e&&t&&e.value===t.value&&j.areSame(e.data,t.data)},getNoSuggestionsHint:function(){var e=this;return!1!==e.options.noSuggestionsHint&&(e.options.noSuggestionsHint||e.type.noSuggestionsHint)}};var U={setupElement:function(){this.el.attr("autocomplete","off").attr("autocorrect","off").attr("autocapitalize","off").attr("spellcheck","false").addClass("suggestions-input").css("box-sizing","border-box")},bindElementEvents:function(){var t=this;t.el.on("keydown"+S,e.proxy(t.onElementKeyDown,t)),t.el.on(["keyup"+S,"cut"+S,"paste"+S,"input"+S].join(" "),e.proxy(t.onElementKeyUp,t)),t.el.on("blur"+S,e.proxy(t.onElementBlur,t)),t.el.on("focus"+S,e.proxy(t.onElementFocus,t))},unbindElementEvents:function(){this.el.off(S)},onElementBlur:function(){var e=this;if(e.cancelBlur)return void(e.cancelBlur=!1);e.options.triggerSelectOnBlur?e.isUnavailable()||e.selectCurrentValue({noSpace:!0}).always(function(){e.hide()}):e.hide(),e.fetchPhase.abort&&e.fetchPhase.abort()},onElementFocus:function(){var t=this;t.cancelFocus||j.delay(e.proxy(t.completeOnFocus,t)),t.cancelFocus=!1},onElementKeyDown:function(e){var t=this;if(!t.isUnavailable())if(t.visible){switch(e.which){case _.ESC:t.el.val(t.currentValue),t.hide(),t.abortRequest();break;case _.TAB:if(!1===t.options.tabDisabled)return;break;case _.ENTER:t.options.triggerSelectOnEnter&&t.selectCurrentValue();break;case _.SPACE:return void(t.options.triggerSelectOnSpace&&t.isCursorAtEnd()&&(e.preventDefault(),t.selectCurrentValue({continueSelecting:!0,dontEnrich:!0}).fail(function(){t.currentValue+=" ",t.el.val(t.currentValue),t.proceedChangedValue()})));case _.UP:t.moveUp();break;case _.DOWN:t.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}else switch(e.which){case _.DOWN:t.suggest();break;case _.ENTER:t.options.triggerSelectOnEnter&&t.triggerOnSelectNothing()}},onElementKeyUp:function(e){var t=this;if(!t.isUnavailable()){switch(e.which){case _.UP:case _.DOWN:case _.ENTER:return}clearTimeout(t.onChangeTimeout),t.inputPhase.reject(),t.currentValue!==t.el.val()&&t.proceedChangedValue()}},proceedChangedValue:function(){var t=this;t.abortRequest(),t.inputPhase=e.Deferred().done(e.proxy(t.onValueChange,t)),t.options.deferRequestBy>0?t.onChangeTimeout=j.delay(function(){t.inputPhase.resolve()},t.options.deferRequestBy):t.inputPhase.resolve()},onValueChange:function(){var e,t=this 466;t.selection&&(e=t.selection,t.selection=null,t.trigger("InvalidateSelection",e)),t.selectedIndex=-1,t.update(),t.notify("valueChange")},completeOnFocus:function(){var e=this;e.isUnavailable()||e.isElementFocused()&&(e.fixPosition(),e.update(),e.isMobile&&(e.setCursorAtEnd(),e.scrollToTop()))},isElementFocused:function(){return document.activeElement===this.element},isElementDisabled:function(){return Boolean(this.element.getAttribute("disabled")||this.element.getAttribute("readonly"))},isCursorAtEnd:function(){var e,t,n=this,i=n.el.val().length;try{if("number"==typeof(e=n.element.selectionStart))return e===i}catch(e){}return!document.selection||(t=document.selection.createRange(),t.moveStart("character",-i),i===t.text.length)},setCursorAtEnd:function(){var e=this.element;try{e.selectionEnd=e.selectionStart=e.value.length,e.scrollLeft=e.scrollWidth}catch(t){e.value=e.value}}};e.extend(a.prototype,U),M.on("initialize",U.bindElementEvents).on("dispose",U.unbindElementEvents);var Q={};r();var Z={checkStatus:function(){function e(e){j.isFunction(t.options.onSearchError)&&t.options.onSearchError.call(t.element,null,s,"error",e)}var t=this,n=t.options.token&&t.options.token.trim()||"",i=t.options.type+n,s=Q[i];s||(s=Q[i]=P.ajax(t.getAjaxParams("status"))),s.done(function(n,i,s){if(n.search){var o=s.getResponseHeader("X-Plan");n.plan=o,P.extend(t.status,n)}else e("Service Unavailable")}).fail(function(){e(s.statusText)})}};a.resetTokens=r,P.extend(a.prototype,Z),M.on("setOptions",Z.checkStatus);var K,G=!0,J={checkLocation:function(){var t=this,n=t.options.geoLocation;t.type.geoEnabled&&n&&(t.geoLocation=e.Deferred(),e.isPlainObject(n)||e.isArray(n)?t.geoLocation.resolve(n):(K||(K=e.ajax(t.getAjaxParams("iplocate/address"))),K.done(function(e){var n=e&&e.location&&e.location.data;n&&n.kladr_id?t.geoLocation.resolve(n):t.geoLocation.reject()}).fail(function(){t.geoLocation.reject()})))},getGeoLocation:function(){return this.geoLocation},constructParams:function(){var t=this,n={};return t.geoLocation&&e.isFunction(t.geoLocation.promise)&&"resolved"==t.geoLocation.state()&&t.geoLocation.done(function(t){n.locations_boost=e.makeArray(t)}),n}};"GET"!=j.getDefaultType()&&(e.extend(B,{geoLocation:G}),e.extend(a,{resetLocation:l}),e.extend(a.prototype,{getGeoLocation:J.getGeoLocation}),M.on("setOptions",J.checkLocation).on("requestParams",J.constructParams));var X={enrichSuggestion:function(t,n){var i=this,s=e.Deferred();if(!i.options.enrichmentEnabled||!i.type.enrichmentEnabled||!i.requestMode.enrichmentEnabled||n&&n.dontEnrich)return s.resolve(t);if(t.data&&null!=t.data.qc)return s.resolve(t);i.disableDropdown();var o=i.type.getEnrichmentQuery(t),a=i.type.enrichmentParams,r={noCallbacks:!0,useEnrichmentCache:!0,method:i.type.enrichmentMethod};return i.currentValue=o,i.enrichPhase=i.getSuggestions(o,a,r).always(function(){i.enableDropdown()}).done(function(e){var n=e&&e[0];s.resolve(n||t,!!n)}).fail(function(){s.resolve(t)}),s},enrichResponse:function(t,n){var i=this,s=i.enrichmentCache[n];s&&e.each(t.suggestions,function(e,i){if(i.value===n)return t.suggestions[e]=s,!1})}};e.extend(a.prototype,X);var Y={width:"auto",floating:!1},ee={createContainer:function(){var t=this,n="."+t.classes.suggestion,i=t.options,s=e("<div/>").addClass(i.containerClass).css({position:"absolute",display:"none"});t.$container=s,s.on("click"+S,n,e.proxy(t.onSuggestionClick,t))},getContainer:function(){return this.$container.get(0)},removeContainer:function(){var e=this;e.options.floating&&e.$container.remove()},setContainerOptions:function(){var t=this;t.$container.off("mousedown.suggestions"),t.options.floating&&t.$container.on("mousedown.suggestions",e.proxy(t.onMousedown,t))},onSuggestionClick:function(t){var n,i=this,s=e(t.target);if(!i.dropdownDisabled){for(i.cancelFocus=!0,i.el.focus();s.length&&!(n=s.attr("data-index"));)s=s.closest("."+i.classes.suggestion);n&&!isNaN(n)&&i.select(+n)}},setDropdownPosition:function(e,t){var n,i=this,s=i.$viewport.scrollLeft();i.isMobile?(n=i.options.floating?{left:s+"px",top:t.top+t.outerHeight+"px"}:{left:e.left-t.left+s+"px",top:e.top+t.outerHeight+"px"},n.width=i.$viewport.width()+"px"):(n=i.options.floating?{left:t.left+"px",top:t.top+t.borderTop+t.innerHeight+"px"}:{left:e.left+"px",top:e.top+t.borderTop+t.innerHeight+"px"},j.delay(function(){var e=i.options.width;"auto"===e&&(e=i.el.outerWidth()),i.$container.outerWidth(e)})),i.$container.toggleClass(i.classes.mobile,i.isMobile).css(n),i.containerItemsPadding=t.left+t.borderLeft+t.paddingLeft-s},setItemsPositions:function(){var e=this;e.getSuggestionsItems().css("paddingLeft",e.isMobile?e.containerItemsPadding+"px":"")},getSuggestionsItems:function(){return this.$container.children("."+this.classes.suggestion)},toggleDropdownEnabling:function(e){this.dropdownDisabled=!e,this.$container.attr("disabled",!e)},disableDropdown:function(){this.toggleDropdownEnabling(!1)},enableDropdown:function(){this.toggleDropdownEnabling(!0)},hasSuggestionsToChoose:function(){var t=this;return t.suggestions.length>1||1===t.suggestions.length&&(!t.selection||e.trim(t.suggestions[0].value)!==e.trim(t.selection.value))},suggest:function(){var t=this,n=t.options,i=[];if(t.requestMode.userSelect){if(t.hasSuggestionsToChoose())!t.isMobile&&n.hint&&t.suggestions.length&&i.push('<div class="'+t.classes.hint+'">'+n.hint+"</div>"),t.selectedIndex=-1,t.suggestions.forEach(function(e,n){e==t.selection&&(t.selectedIndex=n),t.buildSuggestionHtml(e,n,i)});else{if(t.suggestions.length)return void t.hide();var s=t.getNoSuggestionsHint();if(!s)return void t.hide();i.push('<div class="'+t.classes.hint+'">'+s+"</div>")}i.push('<div class="'+x.promo+'"></div>'),i.push("</div>"),t.$container.html(i.join("")),n.autoSelectFirst&&-1===t.selectedIndex&&(t.selectedIndex=0),-1!==t.selectedIndex&&t.getSuggestionsItems().eq(t.selectedIndex).addClass(t.classes.selected),e.isFunction(n.beforeRender)&&n.beforeRender.call(t.element,t.$container),t.$container.show(),t.visible=!0,t.fixPosition(),t.setItemsPositions()}},buildSuggestionHtml:function(e,t,n){n.push('<div class="'+this.classes.suggestion+'" data-index="'+t+'">');var i=this.options.formatResult||this.type.formatResult||this.formatResult;n.push(i.call(this,e.value,this.currentValue,e,{unformattableTokens:this.type.unformattableTokens}));var s=this.makeSuggestionLabel(this.suggestions,e);s&&n.push('<span class="'+this.classes.subtext_label+'">'+j.escapeHtml(s)+"</span>"),n.push("</div>")},wrapFormattedValue:function(e,t){var n=this,i=j.getDeepValue(t.data,"state.status");return'<span class="'+n.classes.value+'"'+(i?' data-suggestion-status="'+i+'"':"")+">"+e+"</span>"},formatResult:function(e,t,n,i){var s=this;return e=s.highlightMatches(e,t,n,i),s.wrapFormattedValue(e,n)},highlightMatches:function(t,n,i,s){var o,a,r,l,d,f,p,h=this,g=[],m=s&&s.unformattableTokens,y=s&&s.maxLength,v=j.reWordExtractor();if(!t)return"";for(o=k.tokenize(n,m),a=e.map(o,function(e){return new RegExp("^((.*)([\\-\\+\\\\\\?!@#$%^&]+))?("+j.escapeRegExChars(e)+")([^\\-\\+\\\\\\?!@#$%^&]*[\\-\\+\\\\\\?!@#$%^&]*)","i")});(r=v.exec(t))&&r[0];)l=r[1],g.push({text:l,hasUpperCase:l.toLowerCase()!==l,formatted:j.formatToken(l),matchable:!0}),r[2]&&g.push({text:r[2]});for(d=0;d<g.length;d++)f=g[d],!f.matchable||f.matched||-1!==e.inArray(f.formatted,m)&&!f.hasUpperCase||e.each(a,function(e,t){var n,i=t.exec(f.formatted),s=d+1;if(i)return i={before:i[1]||"",beforeText:i[2]||"",beforeDelimiter:i[3]||"",text:i[4]||"",after:i[5]||""},i.before&&(g.splice(d,0,{text:f.text.substr(0,i.beforeText.length),formatted:i.beforeText,matchable:!0},{text:i.beforeDelimiter}),s+=2,n=i.before.length,f.text=f.text.substr(n),f.formatted=f.formatted.substr(n),d--),n=i.text.length+i.after.length,f.formatted.length>n&&(g.splice(s,0,{text:f.text.substr(n),formatted:f.formatted.substr(n),matchable:!0}),f.text=f.text.substr(0,n),f.formatted=f.formatted.substr(0,n)),i.after&&(n=i.text.length,g.splice(s,0,{text:f.text.substr(n),formatted:f.formatted.substr(n)}),f.text=f.text.substr(0,n),f.formatted=f.formatted.substr(0,n)),f.matched=!0,!1});if(y){for(d=0;d<g.length&&y>=0;d++)f=g[d],(y-=f.text.length)<0&&(f.text=f.text.substr(0,f.text.length+y)+"...");g.length=d}return p=u(g),c(p,h.classes.nowrap)},makeSuggestionLabel:function(t,n){var i,s,o=this,a=o.type.fieldNames,r={},l=j.reWordExtractor(),u=[];
466if(a&&d(t,n)&&n.data&&(e.each(a,function(e){var t=n.data[e];t&&(r[e]=j.formatToken(t))}),!e.isEmptyObject(r))){for(;(i=l.exec(j.formatToken(n.value)))&&(s=i[1]);)e.each(r,function(e,t){if(t==s)return u.push(a[e]),delete r[e],!1});if(u.length)return u.join(", ")}},hide:function(){var e=this;e.visible=!1,e.selectedIndex=-1,e.$container.hide().empty()},activate:function(e){var t,n,i=this,s=i.classes.selected;return!i.dropdownDisabled&&(n=i.getSuggestionsItems(),n.removeClass(s),i.selectedIndex=e,-1!==i.selectedIndex&&n.length>i.selectedIndex)?(t=n.eq(i.selectedIndex),t.addClass(s),t):null},deactivate:function(e){var t=this;t.dropdownDisabled||(t.selectedIndex=-1,t.getSuggestionsItems().removeClass(t.classes.selected),e&&t.el.val(t.currentValue))},moveUp:function(){var e=this;if(!e.dropdownDisabled)return-1===e.selectedIndex?void(e.suggestions.length&&e.adjustScroll(e.suggestions.length-1)):0===e.selectedIndex?void e.deactivate(!0):void e.adjustScroll(e.selectedIndex-1)},moveDown:function(){var e=this;if(!e.dropdownDisabled)return e.selectedIndex===e.suggestions.length-1?void e.deactivate(!0):void e.adjustScroll(e.selectedIndex+1)},adjustScroll:function(e){var t,n,i,s=this,o=s.activate(e),a=s.$container.scrollTop();o&&o.length&&(t=o.position().top,t<0?s.$container.scrollTop(a+t):(n=t+o.outerHeight(),i=s.$container.innerHeight(),n>i&&s.$container.scrollTop(a-i+n)),s.el.val(s.suggestions[e].value))}};e.extend(B,Y),e.extend(a.prototype,ee),M.on("initialize",ee.createContainer).on("dispose",ee.removeContainer).on("setOptions",ee.setContainerOptions).on("fixPosition",ee.setDropdownPosition).on("fixPosition",ee.setItemsPositions).on("assignSuggestions",ee.suggest);var te={addon:null},ne={NONE:"none",SPINNER:"spinner",CLEAR:"clear"},ie=function(e){var t=P.select('<span class="suggestions-addon"/>');this.owner=e,this.$el=t,this.type=ne.NONE,this.visible=!1,this.initialPadding=null,t.on("click",P.proxy(this,"onClick"))};ie.prototype={checkType:function(){var e=this.owner.options.addon,t=!1;y.each(ne,function(n,i){if(t=n==e)return!1}),t||(e=this.owner.isMobile?ne.CLEAR:ne.SPINNER),e!=this.type&&(this.type=e,this.$el.attr("data-addon-type",e),this.toggle(!0))},isEnabled:function(){return!this.owner.isElementDisabled()},toggle:function(e){var t;switch(this.type){case ne.CLEAR:t=!!this.owner.currentValue;break;case ne.SPINNER:t=!!this.owner.currentRequest;break;default:t=!1}this.isEnabled()||(t=!1),t!=this.visible&&(this.visible=t,t?this.show(e):this.hide(e))},show:function(e){var t=this,n={opacity:1};e?(this.$el.show().css(n),this.showBackground(!0)):this.$el.stop(!0,!0).delay(50).queue(function(){t.$el.show(),t.showBackground(),t.$el.dequeue()}).animate(n,"fast")},hide:function(e){var t=this,n={opacity:0};e&&this.$el.hide().css(n),this.$el.stop(!0).animate(n,{duration:"fast",complete:function(){t.$el.hide(),t.hideBackground()}})},fixPosition:function(e,t){var n=t.innerHeight;this.checkType(),this.$el.css({left:e.left+t.borderLeft+t.innerWidth-n+"px",top:e.top+t.borderTop+"px",height:n,width:n}),this.initialPadding=t.paddingRight,this.width=n,this.visible&&(t.componentsRight+=n)},showBackground:function(e){var t=this.owner.el,n={paddingRight:this.width};this.width>this.initialPadding&&(this.stopBackground(),e?t.css(n):t.animate(n,{duration:"fast",queue:"addon"}).dequeue("addon"))},hideBackground:function(e){var t=this.owner.el,n={paddingRight:this.initialPadding};this.width>this.initialPadding&&(this.stopBackground(!0),e?t.css(n):t.delay(1e3,"addon").animate(n,{duration:"fast",queue:"addon"}).dequeue("addon"))},stopBackground:function(e){this.owner.el.stop("addon",!0,e)},onClick:function(e){this.isEnabled()&&this.type==ne.CLEAR&&this.owner.clear()}};var se={createAddon:function(){var e=new ie(this);this.$wrapper.append(e.$el),this.addon=e},fixAddonPosition:function(e,t){this.addon.fixPosition(e,t)},checkAddonType:function(){this.addon.checkType()},checkAddonVisibility:function(){this.addon.toggle()},stopBackground:function(){this.addon.stopBackground()}};P.extend(B,te),M.on("initialize",se.createAddon).on("setOptions",se.checkAddonType).on("fixPosition",se.fixAddonPosition).on("clear",se.checkAddonVisibility).on("valueChange",se.checkAddonVisibility).on("request",se.checkAddonVisibility).on("resetPosition",se.stopBackgroun
466d);var oe={constraints:null,restrict_value:!1},ae=["region_fias_id","area_fias_id","city_fias_id","city_district_fias_id","settlement_fias_id","street_fias_id"],re=function(e,t){var n,i,s=this,o={};s.instance=t,s.fields={},s.specificity=-1,m.isPlainObject(e)&&t.type.dataComponents&&y.each(t.type.dataComponents,function(t,n){var i=t.id;t.forLocations&&e[i]&&(s.fields[i]=e[i],s.specificity=n)}),n=Object.keys(s.fields),i=y.intersect(n,ae),i.length?(y.each(i,function(e,t){o[e]=s.fields[e]}),s.fields=o,s.specificity=s.getFiasSpecificity(i)):s.fields.kladr_id&&(s.fields={kladr_id:s.fields.kladr_id},s.significantKladr=p(s.fields.kladr_id),s.specificity=s.getKladrSpecificity(s.significantKladr))};P.extend(re.prototype,{getLabel:function(){return this.instance.type.composeValue(this.fields,{saveCityDistrict:!0})},getFields:function(){return this.fields},isValid:function(){return!m.isEmptyObject(this.fields)},getKladrSpecificity:function(e){var t=-1,n=e.length;return y.each(this.instance.type.dataComponents,function(e,i){e.kladrFormat&&n===e.kladrFormat.digits&&(t=i)}),t},getFiasSpecificity:function(e){var t=-1;return y.each(this.instance.type.dataComponents,function(n,i){n.fiasType&&e.indexOf(n.fiasType)>-1&&t<i&&(t=i)}),t},containsData:function(e){var t=!0;return this.fields.kladr_id?!!e.kladr_id&&0===e.kladr_id.indexOf(this.significantKladr):(y.each(this.fields,function(n,i){return t=!!e[i]&&e[i].toLowerCase()===n.toLowerCase()}),t)}}),a.ConstraintLocation=re;var le=function(e,t){this.id=V("c"),this.deletable=!!e.deletable,this.instance=t;var n=y.makeArray(e&&(e.locations||e.restrictions));this.locations=n.map(function(e){return new re(e,t)}),this.locations=this.locations.filter(function(e){return e.isValid()}),this.label=e.label,null==this.label&&t.type.composeValue&&(this.label=this.locations.map(function(e){return e.getLabel()}).join(", ")),this.label&&this.isValid()&&(this.$el=P.select(document.createElement("li")).append(P.select(document.createElement("span")).text(this.label)).attr("data-constraint-id",this.id),this.deletable&&this.$el.append(P.select(document.createElement("span")).addClass(t.classes.removeConstraint)))};P.extend(le.prototype,{isValid:function(){return this.locations.length>0},getFields:function(){return this.locations.map(function(e){return e.getFields()})}});var ue={createConstraints:function(){var e=this;e.constraints={},e.$constraints=P.select('<ul class="suggestions-constraints"/>'),e.$wrapper.append(e.$constraints),e.$constraints.on("click","."+e.classes.removeConstraint,P.proxy(e.onConstraintRemoveClick,e))},setConstraintsPosition:function(e,t){var n=this;n.$constraints.css({left:e.left+t.borderLeft+t.paddingLeft+"px",top:e.top+t.borderTop+Math.round((t.innerHeight-n.$constraints.height())/2)+"px"}),t.componentsLeft+=n.$constraints.outerWidth(!0)+t.paddingLeft},onConstraintRemoveClick:function(e){var t=this,n=P.select(e.target).closest("li"),i=n.attr("data-constraint-id");delete t.constraints[i],t.update(),n.fadeOut("fast",function(){t.removeConstraint(i)})},setupConstraints:function(){var e,t=this,n=t.options.constraints;if(!n)return void t.unbindFromParent();P.isJqObject(n)||"string"==typeof n||"number"==typeof n.nodeType?(e=P.select(n),e.is(t.constraints)||(t.unbindFromParent(),e.is(t.el)||(t.constraints=e,t.bindToParent()))):(t._constraintsUpdating=!0,y.each(t.constraints,function(e,n){t.removeConstraint(n)}),y.each(y.makeArray(n),function(e,n){t.addConstraint(e)}),t._constraintsUpdating=!1,t.fixPosition())},filteredLocation:function(e){var t=[],n={};if(y.each(this.type.dataComponents,function(){this.forLocations&&t.push(this.id)}),m.isPlainObject(e)&&y.each(e,function(e,i){e&&t.indexOf(i)>=0&&(n[i]=e)}),!m.isEmptyObject(n))return n.kladr_id?{kladr_id:n.kladr_id}:n},addConstraint:function(e){var t=this;e=new le(e,t),e.isValid()&&(t.constraints[e.id]=e,e.$el&&(t.$constraints.append(e.$el),t._constraintsUpdating||t.fixPosition()))},removeConstraint:function(e){var t=this;delete t.constraints[e],t.$constraints.children('[data-constraint-id="'+e+'"]').remove(),t._constraintsUpdating||t.fixPosition()},constructConstraintsParams:function(){for(var e,t,n=this,i=[],s=n.constraints,o={};P.isJqObject(s)&&(e=s.suggestions())&&!(t=b.getDeepValue(e,"selection.data"));)s=e.constraints;
vendor: 8,773 bytes, line 466
466return P.isJqObject(s)?(t=new re(t,e).getFields())&&(n.bounds.own.indexOf("city")>-1&&delete t.city_fias_id,o.locations=[t],o.restrict_value=!0):s&&(y.each(s,function(e,t){i=i.concat(e.getFields())}),i.length&&(o.locations=i,o.restrict_value=n.options.restrict_value)),o},getFirstConstraintLabel:function(){var e=this,t=m.isPlainObject(e.constraints)&&Object.keys(e.constraints)[0];return t?e.constraints[t].label:""},bindToParent:function(){var e=this;e.constraints.on(["suggestions-select."+e.uniqueId,"suggestions-invalidateselection."+e.uniqueId,"suggestions-clear."+e.uniqueId].join(" "),P.proxy(e.onParentSelectionChanged,e)).on("suggestions-dispose."+e.uniqueId,P.proxy(e.onParentDispose,e))},unbindFromParent:function(){var e=this,t=e.constraints;P.isJqObject(t)&&t.off("."+e.uniqueId)},onParentSelectionChanged:function(e,t,n){("suggestions-select"!==e.type||n)&&this.clear()},onParentDispose:function(e){this.unbindFromParent()},getParentInstance:function(){return P.isJqObject(this.constraints)&&this.constraints.suggestions()},shareWithParent:function(e){var t=this.getParentInstance();t&&t.type===this.type&&!f(e,t)&&(t.shareWithParent(e),t.setSuggestion(e))},getUnrestrictedData:function(e){var t=this,n=[],i={},s=-1;return y.each(t.constraints,function(t,n){y.each(t.locations,function(t,n){t.containsData(e)&&t.specificity>s&&(s=t.specificity)})}),s>=0?(e.region_kladr_id&&e.region_kladr_id===e.city_kladr_id&&n.push.apply(n,t.type.dataComponentsById.city.fields),y.each(t.type.dataComponents.slice(0,s+1),function(e,t){n.push.apply(n,e.fields)}),y.each(e,function(e,t){-1===n.indexOf(t)&&(i[t]=e)})):i=e,i}};P.extend(B,oe),P.extend(a.prototype,ue),"GET"!=T.getDefaultType()&&M.on("initialize",ue.createConstraints).on("setOptions",ue.setupConstraints).on("fixPosition",ue.setConstraintsPosition).on("requestParams",ue.constructConstraintsParams).on("dispose",ue.unbindFromParent);var ce={proceedQuery:function(e){var t=this;e.length>=t.options.minChars?t.updateSuggestions(e):t.hide()},selectCurrentValue:function(e){var t=this,n=P.Deferred();return t.inputPhase.resolve(),t.fetchPhase.done(function(){var i;t.selection&&!t.visible?n.reject():(i=t.findSuggestionIndex(),t.select(i,e),-1===i?n.reject():n.resolve(i))}).fail(function(){n.reject()}),n},selectFoundSuggestion:function(){var e=this;e.requestMode.userSelect||e.select(0)},findSuggestionIndex:function(){var e,t=this,n=t.selectedIndex;return-1===n&&(e=t.el.val().trim())&&t.type.matchers.some(function(i){return-1!==(n=i(e,t.suggestions))}),n},select:function(e,t){var n,i=this,s=i.suggestions[e],o=t&&t.continueSelecting,a=i.currentValue;if(!i.triggering.Select){if(!s)return o||i.selection||i.triggerOnSelectNothing(),void i.onSelectComplete(o);n=i.hasSameValues(s),i.enrichSuggestion(s,t).done(function(s,o){var r=P.extend({hasBeenEnriched:o,hasSameValues:n},t);i.selectSuggestion(s,e,a,r)})}},selectSuggestion:function(e,t,n,i){var s=this,o=i.continueSelecting,a=!s.type.isDataComplete||s.type.isDataComplete.call(s,e),r=s.selection;s.triggering.Select||(s.type.alwaysContinueSelecting&&(o=!0),a&&(o=!1),i.hasBeenEnriched&&s.suggestions[t]&&(s.suggestions[t].data=e.data),s.requestMode.updateValue&&(s.checkValueBounds(e),s.currentValue=s.getSuggestionValue(e,i),!s.currentValue||i.noSpace||a||(s.currentValue+=" "),s.el.val(s.currentValue)),s.currentValue?(s.selection=e,s.areSuggestionsSame(e,r)||s.trigger("Select",e,s.currentValue!=n),s.requestMode.userSelect&&s.onSelectComplete(o)):(s.selection=null,s.triggerOnSelectNothing()),s.shareWithParent(e))},onSelectComplete:function(e){var t=this;e?(t.selectedIndex=-1,t.updateSuggestions(t.currentValue)):t.hide()},triggerOnSelectNothing:function(){var e=this;e.triggering.SelectNothing||e.trigger("SelectNothing",e.currentValue)},trigger:function(e){var t=this,n=j.slice(arguments,1),i=t.options["on"+e];t.triggering[e]=!0,j.isFunction(i)&&i.apply(t.element,n),t.el.trigger.call(t.el,"suggestions-"+e.toLowerCase(),n),t.triggering[e]=!1}};P.extend(a.prototype,ce),M.on("assignSuggestions",ce.selectFoundSuggestion);var de={bounds:null},fe={setupBounds:function(){this.bounds={from:null,to:null}},setBoundsOptions:function(){var t,n,i=this,s=[],o=e.trim(i.options.bounds).split("-"),a=o[0],r=o[o.length-1],l=[],u=[];i.type.dataComponents&&e.each(i.type.dataComponents,function(){this.forBounds&&s.push(this.id)}),-1===e.inArray(a,s)&&(a=null),n=e.inArray(r,s),-1!==n&&n!==s.length-1||(r=null),(a||r)&&(t=!a,e.each(s,function(e,n){if(n==a&&(t=!0),u.push(n),t&&l.push(n),n==r)return!1})),i.bounds.from=a,i.bounds.to=r,i.bounds.all=u,i.bounds.own=l},constructBoundsParams:function(){var e=this,t={};return e.bounds.from&&(t.from_bound={value:e.bounds.from}),e.bounds.to&&(t.to_bound={value:e.bounds.to}),t},checkValueBounds:function(e){var t,n=this;if(n.bounds.own.length&&n.type.composeValue){var i=n.bounds.own.slice(0);1===i.length&&"city_district"===i[0]&&i.push("city_district_fias_id"),t=n.copyDataComponents(e.data,i),e.value=n.type.composeValue(t)}},copyDataComponents:function(t,n){var i={},s=this.type.dataComponentsById;return s&&e.each(n,function(n,o){e.each(s[o].fields,function(e,n){null!=t[n]&&(i[n]=t[n])})}),i},getBoundedKladrId:function(t,n){var i,s=n[n.length-1];return e.each(this.type.dataComponents,function(e,t){if(t.id===s)return i=t.kladrFormat,!1}),t.substr(0,i.digits)+new Array((i.zeros||0)+1).join("0")}};e.extend(B,de),e.extend(a.prototype,fe),M.on("initialize",fe.setupBounds).on("setOptions",fe.setBoundsOptions).on("requestParams",fe.constructBoundsParams);var pe={selectByClass:function(e,t){var n="."+e;return t?t.querySelector(n):document.querySelector(n)},addClass:function(e,t){var n=e.className.split(" ");-1===n.indexOf(t)&&n.push(t),e.className=n.join(" ")},setStyle:function(e,t,n){e.style[t]=n},listenTo:function(e,t,n,i){e.addEventListener(t,i,!1),n&&(eventsByNamespace[n]||(eventsByNamespace[n]=[]),eventsByNamespace[n].push({eventName:t,element:e,callback:i}))},stopListeningNamespace:function(e){var t=eventsByNamespace[e];t&&t.forEach(function(e){e.element.removeEventListener(e.eventName,e.callback,!1)})}};h.prototype.show=function(){"FREE"===this.plan&&this.element&&(this.setStyles(),this.setHtml())},h.prototype.setStyles=function(){this.element.style.display="block",this.isMobile||this.element.classList.add(x.promo_desktop)},h.prototype.setHtml=function(){this.element.innerHTML='<a target="_blank" href="https://dadata.ru/suggestions/?utm_source=dadata&utm_medium=module&utm_campaign=suggestions-jquery"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 167.55 38.92"><defs><style>.cls-1{fill:#cdcccc;}.cls-2{fill:#ef4741;}.cls-3{fill:#fff;}</style></defs><title>dadata-logo</title><path class="cls-1" d="M192.61,153.07H196v-3.15h-3.39Zm9.55-14.46v-2.45h-3v16.91h3.14V142.2a4.39,4.39,0,0,1,4.23-3.7h1.75v-2.69h-1.54C203.75,135.81,202.35,137.76,202.16,138.61Zm20.2-2.45v11.3a5,5,0,0,1-4.65,3.66,7.19,7.19,0,0,1-2-.23,2,2,0,0,1-1.12-.6,2.38,2.38,0,0,1-.44-.86,4.38,4.38,0,0,1-.1-1V136.16h-3.14v12.4a4.83,4.83,0,0,0,1.26,3.65q1.26,1.21,4.61,1.21c3.38,0,4.62-.91,5.56-2.34v2h3.14V136.16Z" transform="translate(-57.96 -122.27)"/><rect class="cls-2" width="131.91" height="38.92" rx="3" ry="3"/><path class="cls-3" d="M119.34,130.39h-9.18v22.68h10.23c3.84,0,10.18-.35,10.18-6.88v-8.91C130.56,130.74,123.18,130.39,119.34,130.39Zm5.77,15.2c0,3.27-2.38,3.6-5.09,3.6h-4.41V134.27H119c2.71,0,6.14.33,6.14,3.6Zm-48-15.2H68v22.68H78.18c3.84,0,10.18-.35,10.18-6.88v-8.91C88.36,130.74,81,130.39,77.14,130.39Zm5.77,15.2c0,3.27-2.38,3.6-5.09,3.6H73.41V134.27h3.36c2.71,0,6.14.33,6.14,3.6Zm74-14.32h-5.1V148a6.28,6.28,0,0,0,.4,2.36,4,4,0,0,0,1,1.54,4.56,4.56,0,0,0,1.57.88,8.16,8.16,0,0,0,1.85.42q.89.08,2.08.09a24.23,24.23,0,0,0,2.83-.17v-2.87h-1.82a3.08,3.08,0,0,1-2.31-.61,3.79,3.79,0,0,1-.52-2.36V139h4.65v-3.14h-4.65Zm21,5.68q-1.82-1.14-6.5-1.13h-5.92v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.37,2.37,0,0,1,.72,2v1.15H168.9q-3,0-4.12,1.17T163.62,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.76,0,3.45-.83,3.45-2.82v-8.81Q179.73,138.08,177.91,136.94Zm-3.29,13.3h-3.35a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.55,0,0,1,2.1-.38h3.49Zm-27.5-13.3q-1.82-1.14-6.5-1.13h-5.92v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.38,2.38,0,0,1,.72,2v1.15h-5.73q-3,0-4.12,1.17T132.84,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.77,0,3.45-.83,3.45-2.82v-8.81Q148.94,138.08,147.13,136.94Zm-3.28,13.3h-3.35a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.55,0,0,1,2.1-.38h3.49Zm-38.92-13.3q-1.82-1.14-6.5-1.13H92.5v.25l.73,2.9h5.19a5,5,0,0,1,2.5.5,2.38,2.38,0,0,1,.72,2v1.15H95.91q-3,0-4.12,1.17T90.63,148c0,2.21.37,3.14,1.12,3.84s2.2,1.22,4.48,1.22h7.06c1.77,0,3.45-.83,3.45-2.82v-8.81Q106.74,138.08,104.92,136.94Zm-3.28,13.3H98.29a4.27,4.27,0,0,1-2.22-.35q-.44-.35-.44-2t.42-2.06a3.55,3.5
4665,0,0,1,2.1-.38h3.49Z" transform="translate(-57.96 -122.27)"/></svg></a>'},M.on("assignSuggestions",g),a.defaultOptions=B,a.version="19.4.2",e.Suggestions=a,e.fn.suggestions=function(t,n){return 0===arguments.length?this.first().data("suggestions"):this.each(function(){var i=e(this),s=i.data("suggestions");"string"==typeof t?s&&"function"==typeof s[t]&&s[t](n):(s&&s.dispose&&s.dispose(),s=new a(this,t),i.data("suggestions",s))})}}); 467/* End */ 468; 469; /* Start:"a:4:{s:4:"full";s:70:"/local/templates/ntk_new/lib/jquery.datetimepicker.js?1742756400112261";s:6:"source";s:53:"/local/templates/ntk_new/lib/jquery.datetimepicker.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 470/*! 471 * @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2020 472 * @version 1.3.6 473 * 474 * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format. 475 * This library is a standalone javascript library and does not depend on other libraries or plugins like jQuery. The 476 * library also adds support for Universal Module Definition (UMD). 477 * 478 * @see http://php.net/manual/en/function.date.php 479 * 480 * For more JQuery plugins visit http://plugins.krajee.com 481 * For more Yii related demos visit http://demos.krajee.com 482 */!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():t.DateFormatter=e()}("undefined"!=typeof self?self:this,function(){var t,e;return e={DAY:864e5,HOUR:3600,defaults:{dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(t){var e=t%10,n={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(t%100/10)&&n[e]?n[e]:"th"}},separators:/[ \-+\/.:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},getInt:function(t,e){return parseInt(t,e?e:10)},compare:function(t,e){return"string"==typeof t&&"string"==typeof e&&t.toLowerCase()===e.toLowerCase()},lpad:function(t,n,r){var a=t.toString();return r=r||"0",a.length<n?e.lpad(r+a,n):a},merge:function(t){var n,r;for(t=t||{},n=1;n<arguments.length;n++)if(r=arguments[n])for(var a in r)r.hasOwnProperty(a)&&("object"==typeof r[a]?e.merge(t[a],r[a]):t[a]=r[a]);return t},getIndex:function(t,e){for(var n=0;n<e.length;n++)if(e[n].toLowerCase()===t.toLowerCase())return n;return-1}},t=function(t){var n=this,r=e.merge(e.defaults,t);n.dateSettings=r.dateSettings,n.separators=r.separators,n.validParts=r.validParts,n.intParts=r.intParts,n.tzParts=r.tzParts,n.tzClip=r.tzClip},t.prototype={constructor:t,getMonth:function(t){var n,r=this;return n=e.getIndex(t,r.dateSettings.monthsShort)+1,0===n&&(n=e.getIndex(t,r.dateSettings.months)+1),n},parseDate:function(t,n){var r,a,u,i,o,s,c,f,l,d,g=this,h=!1,m=!1,p=g.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return null;if(t instanceof Date)return t;if("U"===n)return u=e.getInt(t),u?new Date(1e3*u):t;switch(typeof t){case"number":return new Date(t);case"string":break;default:return null}if(r=n.match(g.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(u=r.length-1;u>=0;u--)"S"===r[u]&&r.splice(u,1);for(a=t.replace(g.separators,"\x00").split("\x00"),u=0;u<a.length;u++)switch(i=a[u],o=e.getInt(i),r[u]){case"y":case"Y":if(!o)return null;l=i.length,y.year=2===l?e.getInt((70>o?"20":"19")+i):o,h=!0;break;case"m":case"n":case"M":case"F":if(isNaN(o)){if(s=g.getMonth(i),!(s>0))return null;y.month=s}else{if(!(o>=1&&12>=o))return null;y.month=o}h=!0;break;case"d":case"j":if(!(o>=1&&31>=o))return null;y.day=o,h=!0;break;case"g":case"h":if(c=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,d=a[c],-1!==c)f=e.compare(d,p.meridiem[0])?0:e.compare(d,p.meridiem[1])?12:-1,o>=1&&12>=o&&-1!==f?y.hour=o%12===0?f:o+f:o>=0&&23>=o&&(y.hour=o);else{if(!(o>=0&&23>=o))return null;y.hour=o}m=!0;break;case"G":case"H":if(!(o>=0&&23>=o))return null;y.hour=o,m=!0;break;case"i":if(!(o>=0&&59>=o))return null;y.min=o,m=!0;break;case"s":if(!(o>=0&&59>=o))return null;y.sec=o,m=!0}if(h===!0){var D=y.year||0,v=y.month?y.month-1:0,S=y.day||1;y.date=new Date(D,v,S,y.hour,y.min,y.sec,0)}else{if(m!==!0)return null;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(t,n){if("string"!=typeof t)return t;var r,a,u,i,o,s,c=this,f=t.replace(c.separators,"\x00").split("\x00"),l=/^[djmn]/g,d=n.match(c.validParts),g=new Date,h=0;if(!l.test(d[0]))return t;for(u=0;
vendor: 4,345 bytes, lines 482-517
482u<f.length;u++){if(h=2,o=f[u],s=e.getInt(o.substr(0,2)),isNaN(s))return null;switch(u){case 0:"m"===d[0]||"n"===d[0]?g.setMonth(s-1):g.setDate(s);break;case 1:"m"===d[0]||"n"===d[0]?g.setDate(s):g.setMonth(s-1);break;case 2:if(a=g.getFullYear(),r=o.length,h=4>r?r:4,a=e.getInt(4>r?a.toString().substr(0,4-r)+o:o.substr(0,4)),!a)return null;g.setFullYear(a);break;case 3:g.setHours(s);break;case 4:g.setMinutes(s);break;case 5:g.setSeconds(s)}i=o.substr(h),i.length>0&&f.splice(u+1,0,i)}return g},parseFormat:function(t,n){var r,a=this,u=a.dateSettings,i=/\\?(.?)/gi,o=function(t,e){return r[t]?r[t]():e};return r={d:function(){return e.lpad(r.j(),2)},D:function(){return u.daysShort[r.w()]},j:function(){return n.getDate()},l:function(){return u.days[r.w()]},N:function(){return r.w()||7},w:function(){return n.getDay()},z:function(){var t=new Date(r.Y(),r.n()-1,r.j()),n=new Date(r.Y(),0,1);return Math.round((t-n)/e.DAY)},W:function(){var t=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),n=new Date(t.getFullYear(),0,4);return e.lpad(1+Math.round((t-n)/e.DAY/7),2)},F:function(){return u.months[n.getMonth()]},m:function(){return e.lpad(r.n(),2)},M:function(){return u.monthsShort[n.getMonth()]},n:function(){return n.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var t=r.Y();return t%4===0&&t%100!==0||t%400===0?1:0},o:function(){var t=r.n(),e=r.W(),n=r.Y();return n+(12===t&&9>e?1:1===t&&e>9?-1:0)},Y:function(){return n.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var t=r.G()<12?0:1;return u.meridiem[t]},B:function(){var t=n.getUTCHours()*e.HOUR,r=60*n.getUTCMinutes(),a=n.getUTCSeconds();return e.lpad(Math.floor((t+r+a+e.HOUR)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return n.getHours()},h:function(){return e.lpad(r.g(),2)},H:function(){return e.lpad(r.G(),2)},i:function(){return e.lpad(n.getMinutes(),2)},s:function(){return e.lpad(n.getSeconds(),2)},u:function(){return e.lpad(1e3*n.getMilliseconds(),6)},e:function(){var t=/\((.*)\)/.exec(String(n))[1];return t||"Coordinated Universal Time"},I:function(){var t=new Date(r.Y(),0),e=Date.UTC(r.Y(),0),n=new Date(r.Y(),6),a=Date.UTC(r.Y(),6);return t-e!==n-a?1:0},O:function(){var t=n.getTimezoneOffset(),r=Math.abs(t);return(t>0?"-":"+")+e.lpad(100*Math.floor(r/60)+r%60,4)},P:function(){var t=r.O();return t.substr(0,3)+":"+t.substr(3,2)},T:function(){var t=(String(n).match(a.tzParts)||[""]).pop().replace(a.tzClip,"");return t||"UTC"},Z:function(){return 60*-n.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(i,o)},r:function(){return"D, d M Y H:i:s O".replace(i,o)},U:function(){return n.getTime()/1e3||0}},o(t,t)},formatDate:function(t,n){var r,a,u,i,o,s=this,c="",f="\\";if("string"==typeof t&&(t=s.parseDate(t,n),!t))return null;if(t instanceof Date){for(u=n.length,r=0;u>r;r++)o=n.charAt(r),"S"!==o&&o!==f&&(r>0&&n.charAt(r-1)===f?c+=o:(i=s.parseFormat(o,t),r!==u-1&&s.intParts.test(o)&&"S"===n.charAt(r+1)&&(a=e.getInt(i)||0,i+=s.dateSettings.ordinal(a)),c+=i));return c}return""}},t}); 483/** 484 * @preserve jQuery DateTimePicker 485 * @homepage http://xdsoft.net/jqplugins/datetimepicker/ 486 * @author Chupurnov Valeriy (<[email protected]>) 487 */ 488 489/** 490 * @param {jQuery} $ 491 */ 492var datetimepickerFactory = function ($) { 493 'use strict'; 494 495 var default_options = { 496 i18n: { 497 ar: { // Arabic 498 months: [ 499 "ÙØ§ÙÙÙ Ø§ÙØ«Ø§ÙÙ", "شباط", "آذار", "ÙÙØ³Ø§Ù", "٠اÙÙ", "ØØ²ÙراÙ", "ØªÙ ÙØ²", "آب", "Ø£ÙÙÙÙ", "تشرÙÙ Ø§ÙØ£ÙÙ", "تشرÙÙ Ø§ÙØ«Ø§ÙÙ", "ÙØ§ÙÙÙ Ø§ÙØ£ÙÙ" 500 ], 501 dayOfWeekShort: [ 502 "Ù", "Ø«", "ع", "Ø®", "ج", "س", "Ø" 503 ], 504 dayOfWeek: ["Ø§ÙØ£ØØ¯", "Ø§ÙØ§Ø«ÙÙÙ", "Ø§ÙØ«Ùاثاء", "Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡", "Ø§ÙØ®Ù ÙØ³", "Ø§ÙØ¬Ù عة", "Ø§ÙØ³Ø¨Øª", "Ø§ÙØ£ØØ¯"] 505 }, 506 ro: { // Romanian 507 months: [ 508 "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" 509 ], 510 dayOfWeekShort: [ 511 "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ" 512 ], 513 dayOfWeek: ["DuminicÄ", "Luni", "MarÅ£i", "Miercuri", "Joi", "Vineri", "SâmbÄtÄ"] 514 }, 515 id: { // Indonesian 516 months: [ 517 "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "
517November", "Desember" 518 ], 519 dayOfWeekShort: [ 520 "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" 521 ], 522 dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"] 523 }, 524 is: { // Icelandic 525 months: [ 526 "Janúar", "Febrúar", "Mars", "AprÃl", "MaÃ", "JúnÃ", "JúlÃ", "Ãgúst", "September", "Október", "Nóvember", "Desember" 527 ], 528 dayOfWeekShort: [ 529 "Sun", "Mán", "Ãrið", "Mið", "Fim", "Fös", "Lau" 530 ], 531 dayOfWeek: ["Sunnudagur", "Mánudagur", "Ãriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"] 532 }, 533 bg: { // Bulgarian 534 months: [ 535 "ЯнÑаÑи", "ФевÑÑаÑи", "ÐаÑÑ", "ÐпÑил", "Ðай", "Юни", "Юли", "ÐвгÑÑÑ", "СепÑемвÑи", "ÐкÑомвÑи", "ÐоемвÑи", "ÐекемвÑи" 536 ], 537 dayOfWeekShort: [ 538 "Ðд", "Ðн", "ÐÑ", "СÑ", "ЧÑ", "ÐÑ", "Сб" 539 ], 540 dayOfWeek: ["ÐеделÑ", "Ðонеделник", "ÐÑоÑник", "СÑÑда", "ЧеÑвÑÑÑÑк", "ÐеÑÑк", "СÑбоÑа"] 541 }, 542 fa: { // Persian/Farsi 543 months: [ 544 'ÙØ±ÙردÛÙ', 'Ø§Ø±Ø¯ÛØ¨Ùشت', 'خرداد', 'ØªÛØ±', '٠رداد', 'Ø´ÙØ±ÛÙØ±', 'Ù ÙØ±', 'آباÙ', 'آذر', 'دÛ', 'بÙÙ Ù', 'اسÙÙØ¯' 545 ], 546 dayOfWeekShort: [ 547 'ÛÚ©Ø´ÙØ¨Ù', 'Ø¯ÙØ´ÙبÙ', 'Ø³Ù Ø´ÙØ¨Ù', 'ÚÙØ§Ø±Ø´ÙبÙ', 'Ù¾ÙØ¬Ø´ÙبÙ', 'ج٠عÙ', 'Ø´ÙØ¨Ù' 548 ], 549 dayOfWeek: ["ÛÚ©âØ´ÙØ¨Ù", "Ø¯ÙØ´ÙبÙ", "سÙâØ´ÙØ¨Ù", "ÚÙØ§Ø±Ø´ÙبÙ", "Ù¾ÙØ¬âØ´ÙØ¨Ù", "ج٠عÙ", "Ø´ÙØ¨Ù", "ÛÚ©âØ´ÙØ¨Ù"] 550 }, 551 ru: { // Russian 552 months: [ 553 'ЯнваÑÑ', 'ФевÑалÑ', 'ÐаÑÑ', 'ÐпÑелÑ', 'Ðай', 'ÐÑнÑ', 'ÐÑлÑ', 'ÐвгÑÑÑ', 'СенÑÑбÑÑ', 'ÐкÑÑбÑÑ', 'ÐоÑбÑÑ', 'ÐекабÑÑ' 554 ], 555 dayOfWeekShort: [ 556 "ÐÑ", "Ðн", "ÐÑ", "СÑ", "ЧÑ", "ÐÑ", "Сб" 557 ], 558 dayOfWeek: ["ÐоÑкÑеÑенÑе", "ÐонеделÑник", "ÐÑоÑник", "СÑеда", "ЧеÑвеÑг", "ÐÑÑниÑа", "СÑббоÑа"] 559 }, 560 uk: { // Ukrainian 561 months: [ 562 'СÑÑенÑ', 'ÐÑÑий', 'ÐеÑезенÑ', 'ÐвÑÑенÑ', 'ТÑавенÑ', 'ЧеÑвенÑ', 'ÐипенÑ', 'СеÑпенÑ', 'ÐеÑеÑенÑ', 'ÐовÑенÑ', 'ÐиÑÑопад', 'ÐÑÑденÑ' 563 ], 564 dayOfWeekShort: [ 565 "Ðд", "Ðн", "ÐÑ", "СÑ", "ЧÑ", "ÐÑ", "Сб
vendor: 19,707 bytes, lines 565-1016
565" 566 ], 567 dayOfWeek: ["ÐедÑлÑ", "ÐонедÑлок", "ÐÑвÑоÑок", "СеÑеда", "ЧеÑвеÑ", "Ð'ÑÑниÑÑ", "СÑбоÑа"] 568 }, 569 en: { // English 570 months: [ 571 "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" 572 ], 573 dayOfWeekShort: [ 574 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 575 ], 576 dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 577 }, 578 el: { // Îλληνικά 579 months: [ 580 "ÎÎ±Î½Î¿Ï Î¬ÏιοÏ", "ΦεβÏÎ¿Ï Î¬ÏιοÏ", "ÎάÏÏιοÏ", "ÎÏÏίλιοÏ", "ÎάιοÏ", "ÎοÏνιοÏ", "ÎοÏλιοÏ", "ÎÏÎ³Î¿Ï ÏÏοÏ", "ΣεÏÏÎμβÏιοÏ", "ÎκÏÏβÏιοÏ", "ÎοÎμβÏιοÏ", "ÎεκÎμβÏιοÏ" 581 ], 582 dayOfWeekShort: [ 583 "ÎÏ Ï", "ÎÎµÏ ", "ΤÏι", "ΤεÏ", "Πεμ", "ΠαÏ", "Σαβ" 584 ], 585 dayOfWeek: ["ÎÏ Ïιακή", "ÎÎµÏ ÏÎÏα", "ΤÏίÏη", "ΤεÏάÏÏη", "Î ÎμÏÏη", "ΠαÏαÏÎºÎµÏ Î®", "ΣάββαÏο"] 586 }, 587 de: { // German 588 months: [ 589 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' 590 ], 591 dayOfWeekShort: [ 592 "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" 593 ], 594 dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] 595 }, 596 nl: { // Dutch 597 months: [ 598 "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" 599 ], 600 dayOfWeekShort: [ 601 "zo", "ma", "di", "wo", "do", "vr", "za" 602 ], 603 dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"] 604 }, 605 tr: { // Turkish 606 months: [ 607 "Ocak", "Åubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "AÄustos", "Eylül", "Ekim", "Kasım", "Aralık" 608 ], 609 dayOfWeekShort: [ 610 "Paz", "Pts", "Sal", "Ãar", "Per", "Cum", "Cts" 611 ], 612 dayOfWeek: ["Pazar", "Pazartesi", "Salı", "ÃarÅamba", "PerÅembe", "Cuma", "Cumartesi"] 613 }, 614 fr: { //French 615 months: [ 616 "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" 617 ], 618 dayOfWeekShort: [ 619 "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" 620 ], 621 dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] 622 }, 623 es: { // Spanish 624 months: [ 625 "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" 626 ], 627 dayOfWeekShort: [ 628 "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb" 629 ], 630 dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"] 631 }, 632 th: { // Thai 633 months: [ 634 'มà¸à¸£à¸²à¸à¸¡', 'à¸à¸¸à¸¡à¸ าà¸à¸±à¸à¸à¹', 'มีà¸à¸²à¸à¸¡', 'à¹à¸¡à¸©à¸²à¸¢à¸', 'à¸à¸¤à¸©à¸ าà¸à¸¡', 'มิà¸à¸¸à¸à¸²à¸¢à¸', 'à¸à¸£à¸à¸à¸²à¸à¸¡', 'สิà¸à¸«à¸²à¸à¸¡', 'à¸à¸±à¸à¸¢à¸²à¸¢à¸', 'à¸à¸¸à¸¥à¸²à¸à¸¡', 'à¸à¸¤à¸¨à¸à¸´à¸à¸²à¸¢à¸', 'à¸à¸±à¸à¸§à¸²à¸à¸¡' 635 ], 636 dayOfWeekShort: [ 637 'à¸à¸².', 'à¸.', 'à¸.', 'à¸.', 'à¸à¸¤.', 'ศ.', 'ส.' 638 ], 639 dayOfWeek: ["à¸à¸²à¸à¸´à¸à¸¢à¹", "à¸à¸±à¸à¸à¸£à¹", "à¸à¸±à¸à¸à¸²à¸£", "à¸à¸¸à¸", "à¸à¸¤à¸«à¸±à¸ª", "ศุà¸à¸£à¹", "à¹à¸ªà¸²à¸£à¹", "à¸à¸²à¸à¸´à¸à¸¢à¹"] 640 }, 641 pl: { // Polish 642 months: [ 643 "styczeÅ", "luty", "marzec", "kwiecieÅ", "maj", "czerwiec", "lipiec", "sierpieÅ", "wrzesieÅ", "październik", "listopad", "grudzieÅ" 644 ], 645 dayOfWeekShort: [ 646 "nd", "pn", "wt", "År", "cz", "pt", "sb" 647 ], 648 dayOfWeek: ["niedziela", "poniedziaÅek", "wtorek", "Åroda", "czwartek", "piÄ tek", "sobota"] 649 }, 650 pt: { // Portuguese 651 months: [ 652 "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" 653 ], 654 dayOfWeekShort: [ 655 "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab" 656 ], 657 dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] 658 }, 659 ch: { // Simplified Chinese 660 months: [ 661 "䏿", "äºæ", "䏿", "åæ", "äºæ", "å æ", "䏿", "å «æ", "乿", "åæ", "å䏿", "åäºæ" 662 ], 663 dayOfWeekShort: [ 664 "æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å " 665 ] 666 }, 667 se: { // Swedish 668 months: [ 669 "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" 670 ], 671 dayOfWeekShort: [ 672 "Sön", "MÃ¥n", "Tis", "Ons", "Tor", "Fre", "Lör" 673 ] 674 }, 675 km: { // Khmer (áá¶áá¶ááááá) 676 months: [ 677 "áááá¶â", "áá»áááá", "áá·áá¶â", "áááá¶â", "á§ááá¶â", "áá·áá»áá¶â", "áááááá¶â", "áá¸á á¶â", "ááááá¶â", "áá»áá¶â", "áá·á ááá·áá¶", "áááá¼â" 678 ], 679 dayOfWeekShort: ["á¢á¶áá·â", "á ááááâ", "á¢áááá¶áâ", "áá»áâ", "áááá ââ", "áá»áááâ", "áá áá"], 680 dayOfWeek: ["á¢á¶áá·áááâ", "á ááááâ", "á¢áááá¶áâ", "áá»áâ", "áááá ááááá·áâ", "áá»áááâ", "áá áá"] 681 }, 682 kr: { // Korean 683 months: [ 684 "1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì" 685 ], 686 dayOfWeekShort: [ 687 "ì¼", "ì", "í", "ì", "목", "ê¸", "í " 688 ], 689 dayOfWeek: ["ì¼ìì¼", "ììì¼", "íìì¼", "ììì¼", "목ìì¼", "ê¸ìì¼", "í ìì¼"] 690 }, 691 it: { // Italian 692 months: [ 693 "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" 694 ], 695 dayOfWeekShort: [ 696 "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" 697 ], 698 dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"] 699 }, 700 da: { // Dansk 701 months: [ 702 "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" 703 ], 704 dayOfWeekShort: [ 705 "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" 706 ], 707 dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"] 708 }, 709 no: { // Norwegian 710 months: [ 711 "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" 712 ], 713 dayOfWeekShort: [ 714 "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" 715 ], 716 dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'] 717 }, 718 ja: { // Japanese 719 months: [ 720 "1æ", "2æ", "3æ", "4æ", "5æ", "6æ", "7æ", "8æ", "9æ", "10æ", "11æ", "12æ" 721 ], 722 dayOfWeekShort: [ 723 "æ¥", "æ", "ç«", "æ°´", "æ¨", "é", "å" 724 ], 725 dayOfWeek: ["æ¥æ", "ææ", "ç«æ", "æ°´æ", "æ¨æ", "éæ", "åæ"] 726 }, 727 vi: { // Vietnamese 728 months: [ 729 "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" 730 ], 731 dayOfWeekShort: [ 732 "CN", "T2", "T3", "T4", "T5", "T6", "T7" 733 ], 734 dayOfWeek: ["Chá»§ nháºt", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ nÄm", "Thứ sáu", "Thứ bảy"] 735 }, 736 sl: { // SlovenÅ¡Äina 737 months: [ 738 "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" 739 ], 740 dayOfWeekShort: [ 741 "Ned", "Pon", "Tor", "Sre", "Äet", "Pet", "Sob" 742 ], 743 dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Äetrtek", "Petek", "Sobota"] 744 }, 745 cs: { // ÄeÅ¡tina 746 months: [ 747 "Leden", "Ãnor", "BÅezen", "Duben", "KvÄten", "Äerven", "Äervenec", "Srpen", "ZáÅÃ", "ÅÃjen", "Listopad", "Prosinec" 748 ], 749 dayOfWeekShort: [ 750 "Ne", "Po", "Ãt", "St", "Ät", "Pá", "So" 751 ] 752 }, 753 hu: { // Hungarian 754 months: [ 755 "Január", "Február", "Március", "Ãprilis", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" 756 ], 757 dayOfWeekShort: [ 758 "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo" 759 ], 760 dayOfWeek: ["vasárnap", "hétfÅ", "kedd", "szerda", "csütörtök", "péntek", "szombat"] 761 }, 762 az: { //Azerbaijanian (Azeri) 763 months: [ 764 "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" 765 ], 766 dayOfWeekShort: [ 767 "B", "Be", "Ãa", "Ã", "Ca", "C", "Å" 768 ], 769 dayOfWeek: ["Bazar", "Bazar ertÉsi", "ÃÉrÅÉnbÉ axÅamı", "ÃÉrÅÉnbÉ", "CümÉ axÅamı", "CümÉ", "ÅÉnbÉ"] 770 }, 771 bs: { //Bosanski 772 months: [ 773 "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" 774 ], 775 dayOfWeekShort: [ 776 "Ned", "Pon", "Uto", "Sri", "Äet", "Pet", "Sub" 777 ], 778 dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Äetvrtak", "Petak", "Subota"] 779 }, 780 ca: { //Català 781 months: [ 782 "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" 783 ], 784 dayOfWeekShort: [ 785 "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds" 786 ], 787 dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"] 788 }, 789 'en-GB': { //English (British) 790 months: [ 791 "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" 792 ], 793 dayOfWeekShort: [ 794 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 795 ], 796 dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 797 }, 798 et: { //"Eesti" 799 months: [ 800 "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" 801 ], 802 dayOfWeekShort: [ 803 "P", "E", "T", "K", "N", "R", "L" 804 ], 805 dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"] 806 }, 807 eu: { //Euskara 808 months: [ 809 "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" 810 ], 811 dayOfWeekShort: [ 812 "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La." 813 ], 814 dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata'] 815 }, 816 fi: { //Finnish (Suomi) 817 months: [ 818 "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" 819 ], 820 dayOfWeekShort: [ 821 "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" 822 ], 823 dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"] 824 }, 825 gl: { //Galego 826 months: [ 827 "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec" 828 ], 829 dayOfWeekShort: [ 830 "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab" 831 ], 832 dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"] 833 }, 834 hr: { //Hrvatski 835 months: [ 836 "SijeÄanj", "VeljaÄa", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" 837 ], 838 dayOfWeekShort: [ 839 "Ned", "Pon", "Uto", "Sri", "Äet", "Pet", "Sub" 840 ], 841 dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Äetvrtak", "Petak", "Subota"] 842 }, 843 ko: { //Korean (íêµì´) 844 months: [ 845 "1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì" 846 ], 847 dayOfWeekShort: [ 848 "ì¼", "ì", "í", "ì", "목", "ê¸", "í " 849 ], 850 dayOfWeek: ["ì¼ìì¼", "ììì¼", "íìì¼", "ììì¼", "목ìì¼", "ê¸ìì¼", "í ìì¼"] 851 }, 852 lt: { //Lithuanian (lietuvių) 853 months: [ 854 "Sausio", "Vasario", "Kovo", "Balandžio", "GegužÄs", "Birželio", "Liepos", "RugpjÅ«Äio", "RugsÄjo", "Spalio", "LapkriÄio", "Gruodžio" 855 ], 856 dayOfWeekShort: [ 857 "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Å eÅ¡" 858 ], 859 dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "TreÄiadienis", "Ketvirtadienis", "Penktadienis", "Å eÅ¡tadienis"] 860 }, 861 lv: { //Latvian (LatvieÅ¡u) 862 months: [ 863 "JanvÄris", "FebruÄris", "Marts", "AprÄ«lis ", "Maijs", "JÅ«nijs", "JÅ«lijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" 864 ], 865 dayOfWeekShort: [ 866 "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St" 867 ], 868 dayOfWeek: ["SvÄtdiena", "Pirmdiena", "Otrdiena", "TreÅ¡diena", "Ceturtdiena", "Piektdiena", "Sestdiena"] 869 }, 870 mk: { //Macedonian (ÐакедонÑки) 871 months: [ 872 "ÑанÑаÑи", "ÑевÑÑаÑи", "маÑÑ", "апÑил", "маÑ", "ÑÑни", "ÑÑли", "авгÑÑÑ", "ÑепÑемвÑи", "окÑомвÑи", "ноемвÑи", "декемвÑи" 873 ], 874 dayOfWeekShort: [ 875 "нед", "пон", "вÑо", "ÑÑе", "ÑеÑ", "пеÑ", "Ñаб" 876 ], 877 dayOfWeek: ["Ðедела", "Ðонеделник", "ÐÑоÑник", "СÑеда", "ЧеÑвÑÑок", "ÐеÑок", "СабоÑа"] 878 }, 879 mn: { //Mongolian (Ðонгол) 880 months: [ 881 "1-Ñ ÑаÑ", "2-Ñ ÑаÑ", "3-Ñ ÑаÑ", "4-Ñ ÑаÑ", "5-Ñ ÑаÑ", "6-Ñ ÑаÑ", "7-Ñ ÑаÑ", "8-Ñ ÑаÑ", "9-Ñ ÑаÑ", "10-Ñ ÑаÑ", "11-Ñ ÑаÑ", "12-Ñ ÑаÑ" 882 ], 883 dayOfWeekShort: [ 884 "Ðав", "ÐÑг", "ÐÑ Ð°", "ÐÒ¯Ñ", "ÐÑн", "ÐÑм", "ÐÑм" 885 ], 886 dayOfWeek: ["Ðаваа", "ÐÑгмаÑ", "ÐÑ Ð°Ð³Ð²Ð°", "ÐÒ¯ÑÑв", "ÐааÑан", "ÐÑмба", "ÐÑм"] 887 }, 888 'pt-BR': { //Português(Brasil) 889 months: [ 890 "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" 891 ], 892 dayOfWeekShort: [ 893 "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" 894 ], 895 dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] 896 }, 897 sk: { //SlovenÄina 898 months: [ 899 "Január", "Február", "Marec", "AprÃl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" 900 ], 901 dayOfWeekShort: [ 902 "Ne", "Po", "Ut", "St", "Å t", "Pi", "So" 903 ], 904 dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Å tvrtok", "Piatok", "Sobota"] 905 }, 906 sq: { //Albanian (Shqip) 907 months: [ 908 "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor" 909 ], 910 dayOfWeekShort: [ 911 "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu" 912 ], 913 dayOfWeek: ["E Diel", "E Hënë", "E MartÄ", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"] 914 }, 915 'sr-YU': { //Serbian (Srpski) 916 months: [ 917 "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" 918 ], 919 dayOfWeekShort: [ 920 "Ned", "Pon", "Uto", "Sre", "Äet", "Pet", "Sub" 921 ], 922 dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Äetvrtak", "Petak", "Subota"] 923 }, 924 sr: { //Serbian Cyrillic (СÑпÑки) 925 months: [ 926 "ÑанÑаÑ", "ÑебÑÑаÑ", "маÑÑ", "апÑил", "маÑ", "ÑÑн", "ÑÑл", "авгÑÑÑ", "ÑепÑембаÑ", "окÑобаÑ", "новембаÑ", "деÑембаÑ" 927 ], 928 dayOfWeekShort: [ 929 "нед", "пон", "ÑÑо", "ÑÑе", "ÑеÑ", "пеÑ", "ÑÑб" 930 ], 931 dayOfWeek: ["ÐедеÑа","ÐонедеÑак", "УÑоÑак", "СÑеда", "ЧеÑвÑÑак", "ÐеÑак", "СÑбоÑа"] 932 }, 933 sv: { //Svenska 934 months: [ 935 "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" 936 ], 937 dayOfWeekShort: [ 938 "Sön", "MÃ¥n", "Tis", "Ons", "Tor", "Fre", "Lör" 939 ], 940 dayOfWeek: ["Söndag", "MÃ¥ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"] 941 }, 942 'zh-TW': { //Traditional Chinese (ç¹é«ä¸æ) 943 months: [ 944 "䏿", "äºæ", "䏿", "åæ", "äºæ", "å æ", "䏿", "å «æ", "乿", "åæ", "å䏿", "åäºæ" 945 ], 946 dayOfWeekShort: [ 947 "æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å " 948 ], 949 dayOfWeek: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå "] 950 }, 951 zh: { //Simplified Chinese (ç®ä½ä¸æ) 952 months: [ 953 "䏿", "äºæ", "䏿", "åæ", "äºæ", "å æ", "䏿", "å «æ", "乿", "åæ", "å䏿", "åäºæ" 954 ], 955 dayOfWeekShort: [ 956 "æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å " 957 ], 958 dayOfWeek: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå "] 959 }, 960 ug:{ // Uyghur(ئÛÙØºÛرÚÛ) 961 months: [ 962 "1-ئاÙ","2-ئاÙ","3-ئاÙ","4-ئاÙ","5-ئاÙ","6-ئاÙ","7-ئاÙ","8-ئاÙ","9-ئاÙ","10-ئاÙ","11-ئاÙ","12-ئاÙ" 963 ], 964 dayOfWeek: [ 965 "ÙÛÙØ´ÛÙØ¨Û", "Ø¯ÛØ´ÛÙØ¨Û","سÛÙØ´ÛÙØ¨Û","ÚØ§Ø±Ø´ÛÙØ¨Û","Ù¾ÛÙØ´ÛÙØ¨Û","جÛÙ Û","Ø´ÛÙØ¨Û" 966 ] 967 }, 968 he: { //Hebrew (×¢×ר×ת) 969 months: [ 970 '×× ××ר', 'פ×ר××ר', '×רץ', '×פר××', '×××', '××× ×', '××××', '××××ס×', 'ספ×××ר', '×××§×××ר', '× ××××ר', '×צ××ר' 971 ], 972 dayOfWeekShort: [ 973 '×\'', '×\'', '×\'', '×\'', '×\'', '×\'', 'ש×ת' 974 ], 975 dayOfWeek: ["ר×ש××", "×©× ×", "ש××ש×", "ר×××¢×", "×××ש×", "ש×ש×", "ש×ת", "ר×ש××"] 976 }, 977 hy: { // Armenian 978 months: [ 979 "ÕÕ¸ÖÕ¶Õ¾Õ¡Ö", "ÕÕ¥Õ¿ÖÕ¾Õ¡Ö", "ÕÕ¡ÖÕ¿", "Ô±ÕºÖÕ«Õ¬", "ÕÕ¡ÕµÕ«Õ½", "ÕÕ¸ÖÕ¶Õ«Õ½", "ÕÕ¸ÖÕ¬Õ«Õ½", "ÕÕ£Õ¸Õ½Õ¿Õ¸Õ½", "ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö", "ÕÕ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö", "ÕÕ¸ÕµÕ¥Õ´Õ¢Õ¥Ö", "Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö" 980 ], 981 dayOfWeekShort: [ 982 "Ô¿Õ«", "ÔµÖÕ¯", "ÔµÖÖ", "ÕÕ¸Ö", "ÕÕ¶Õ£", "ÕÖÖÕ¢", "ÕÕ¢Õ©" 983 ], 984 dayOfWeek: ["Ô¿Õ«ÖÕ¡Õ¯Õ«", "ÔµÖÕ¯Õ¸ÖÕ·Õ¡Õ¢Õ©Õ«", "ÔµÖÕ¥ÖÕ·Õ¡Õ¢Õ©Õ«", "ÕÕ¸ÖÕ¥ÖÕ·Õ¡Õ¢Õ©Õ«", "ÕÕ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«", "ÕÖÖÕ¢Õ¡Õ©", "ÕÕ¡Õ¢Õ¡Õ©"] 985 }, 986 kg: { // Kyrgyz 987 months: [ 988 'Ò®ÑÑүн айÑ', 'ÐиÑдин айÑ', 'Ðалган ÐÑÑан', 'ЧÑн ÐÑÑан', 'ÐÑгÑ', 'ÐÑлжа', 'Теке', 'ÐÐ°Ñ Ðона', 'ÐÑк Ðона', 'ТогÑздÑн айÑ', 'ÐеÑинин айÑ', 'ÐеÑÑин айÑ' 989 ], 990 dayOfWeekShort: [ 991 "Ðек", "Ðүй", "Шей", "ШаÑ", "Ðей", "ÐÑм", "ÐÑе" 992 ], 993 dayOfWeek: [ 994 "ÐекÑемб", "ÐүйÑөмб", "ШейÑемб", "ШаÑÑемб", "ÐейÑемби", "ÐÑма", "ÐÑенб" 995 ] 996 }, 997 rm: { // Romansh 998 months: [ 999 "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December" 1000 ], 1001 dayOfWeekShort: [ 1002 "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So" 1003 ], 1004 dayOfWeek: [ 1005 "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda" 1006 ] 1007 }, 1008 ka: { // Georgian 1009 months: [ 1010 'áááááá á', 'ááááá áááá', 'ááá á¢á', 'ááá ááá', 'áááá¡á', 'ááááá¡á', 'ááááá¡á', 'ááááá¡á¢á', 'á¡áá¥á¢ááááá á', 'áá¥á¢ááááá á', 'ááááááá á', 'áááááááá á' 1011 ], 1012 dayOfWeekShort: [ 1013 "áá", "áá á¨", "á¡ááá¨", "ááá®", "á®á£á", "ááá ", "á¨áá" 1014 ], 1015 dayOfWeek: ["áááá á", "áá á¨ááááá", "á¡ááá¨ááááá", "ááá®á¨ááááá", "á®á£áá¨ááááá", "ááá áá¡áááá", "á¨ááááá"] 1016 }
vendor: 3,550 bytes, lines 1016-1163
1016, 1017 kk: { // Kazakh 1018 months: [ 1019 'ÒаңÑаÑ', 'ÐÒпан', 'ÐаÑÑÑз', 'СÓÑÑÑ', 'ÐамÑÑ', 'ÐаÑÑÑм', 'ШÑлде', 'ТамÑз', 'ÒÑÑкүйек', 'Òазан', 'ÒаÑаÑа', 'ÐелÑоÒÑан' 1020 ], 1021 dayOfWeekShort: [ 1022 "Ðк", "ÐÑ", "СÑ", "СÑ", "ÐÑ", "Ðм", "Сб" 1023 ], 1024 dayOfWeek: ["ÐекÑенбÑ", "ÐүйÑенбÑ", "СейÑенбÑ", "СÓÑÑенбÑ", "ÐейÑенбÑ", "Ðұма", "СенбÑ"] 1025 } 1026 }, 1027 1028 ownerDocument: document, 1029 contentWindow: window, 1030 1031 value: '', 1032 rtl: false, 1033 1034 format: 'Y/m/d H:i', 1035 formatTime: 'H:i', 1036 formatDate: 'Y/m/d', 1037 1038 startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05', 1039 step: 60, 1040 monthChangeSpinner: true, 1041 1042 closeOnDateSelect: false, 1043 closeOnTimeSelect: true, 1044 closeOnWithoutClick: true, 1045 closeOnInputClick: true, 1046 openOnFocus: true, 1047 1048 timepicker: true, 1049 datepicker: true, 1050 weeks: false, 1051 1052 defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i') 1053 defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05') 1054 1055 minDate: false, 1056 maxDate: false, 1057 minTime: false, 1058 maxTime: false, 1059 minDateTime: false, 1060 maxDateTime: false, 1061 1062 allowTimes: [], 1063 opened: false, 1064 initTime: true, 1065 inline: false, 1066 theme: '', 1067 touchMovedThreshold: 5, 1068 1069 onSelectDate: function () {}, 1070 onSelectTime: function () {}, 1071 onChangeMonth: function () {}, 1072 onGetWeekOfYear: function () {}, 1073 onChangeYear: function () {}, 1074 onChangeDateTime: function () {}, 1075 onShow: function () {}, 1076 onClose: function () {}, 1077 onGenerate: function () {}, 1078 1079 withoutCopyright: true, 1080 inverseButton: false, 1081 hours12: false, 1082 next: 'xdsoft_next', 1083 prev : 'xdsoft_prev', 1084 dayOfWeekStart: 0, 1085 parentID: 'body', 1086 timeHeightInTimePicker: 25, 1087 timepickerScrollbar: true, 1088 todayButton: true, 1089 prevButton: true, 1090 nextButton: true, 1091 defaultSelect: true, 1092 1093 scrollMonth: true, 1094 scrollTime: true, 1095 scrollInput: true, 1096 1097 lazyInit: false, 1098 mask: false, 1099 validateOnBlur: true, 1100 allowBlank: true, 1101 yearStart: 1950, 1102 yearEnd: 2050, 1103 monthStart: 0, 1104 monthEnd: 11, 1105 style: '', 1106 id: '', 1107 fixed: false, 1108 roundTime: 'round', // ceil, floor 1109 className: '', 1110 weekends: [], 1111 highlightedDates: [], 1112 highlightedPeriods: [], 1113 allowDates : [], 1114 allowDateRe : null, 1115 disabledDates : [], 1116 disabledWeekDays: [], 1117 yearOffset: 0, 1118 beforeShowDay: null, 1119 1120 enterLikeTab: true, 1121 showApplyButton: false, 1122 insideParent: false, 1123 }; 1124 1125 var dateHelper = null, 1126 defaultDateHelper = null, 1127 globalLocaleDefault = 'en', 1128 globalLocale = 'en'; 1129 1130 var dateFormatterOptionsDefault = { 1131 meridiem: ['AM', 'PM'] 1132 }; 1133 1134 var initDateFormatter = function(){ 1135 var locale = default_options.i18n[globalLocale], 1136 opts = { 1137 days: locale.dayOfWeek, 1138 daysShort: locale.dayOfWeekShort, 1139 months: locale.months, 1140 monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) }) 1141 }; 1142 1143 if (typeof DateFormatter === 'function') { 1144 dateHelper = defaultDateHelper = new DateFormatter({ 1145 dateSettings: $.extend({}, dateFormatterOptionsDefault, opts) 1146 }); 1147 } 1148 }; 1149 1150 var dateFormatters = { 1151 moment: { 1152 default_options:{ 1153 format: 'YYYY/MM/DD HH:mm', 1154 formatDate: 'YYYY/MM/DD', 1155 formatTime: 'HH:mm', 1156 }, 1157 formatter: { 1158 parseDate: function (date, format) { 1159 if(isFormatStandard(format)){ 1160 return defaultDateHelper.parseDate(date, format); 1161 } 1162 var d = moment(date, format); 1163 return d.isValid() ? d.toDate() : false;
1164 }, 1165 1166 formatDate: function (date, format) { 1167 if(isFormatStandard(format)){ 1168 return defaultDateHelper.formatDate(date, format); 1169 } 1170 return moment(date).format(format); 1171 }, 1172 1173 formatMask: function(format){ 1174 return format 1175 .replace(/Y{4}/g, '9999') 1176 .replace(/Y{2}/g, '99') 1177 .replace(/M{2}/g, '19') 1178 .replace(/D{2}/g, '39') 1179 .replace(/H{2}/g, '29') 1180 .replace(/m{2}/g, '59') 1181 .replace(/s{2}/g, '59'); 1182 }, 1183 } 1184 } 1185 } 1186 1187 // for locale settings 1188 $.datetimepicker = { 1189 setLocale: function(locale){ 1190 var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault; 1191 if (globalLocale !== newLocale) { 1192 globalLocale = newLocale; 1193 // reinit date formatter 1194 initDateFormatter(); 1195 } 1196 }, 1197 1198 setDateFormatter: function(dateFormatter) { 1199 if(typeof dateFormatter === 'string' && dateFormatters.hasOwnProperty(dateFormatter)){ 1200 var df = dateFormatters[dateFormatter]; 1201 $.extend(default_options, df.default_options); 1202 dateHelper = df.formatter; 1203 } 1204 else { 1205 dateHelper = dateFormatter; 1206 } 1207 }, 1208 }; 1209 1210 var standardFormats = { 1211 RFC_2822: 'D, d M Y H:i:s O', 1212 ATOM: 'Y-m-d\TH:i:sP', 1213 ISO_8601: 'Y-m-d\TH:i:sO', 1214 RFC_822: 'D, d M y H:i:s O', 1215 RFC_850: 'l, d-M-y H:i:s T', 1216 RFC_1036: 'D, d M y H:i:s O', 1217 RFC_1123: 'D, d M Y H:i:s O', 1218 RSS: 'D, d M Y H:i:s O', 1219 W3C: 'Y-m-d\TH:i:sP' 1220 } 1221 1222 var isFormatStandard = function(format){ 1223 return Object.values(standardFormats).indexOf(format) === -1 ? false : true; 1224 } 1225 1226 $.extend($.datetimepicker, standardFormats); 1227 1228 // first init date formatter 1229 initDateFormatter(); 1230 1231 // fix for ie8 1232 if (!window.getComputedStyle) { 1233 window.getComputedStyle = function (el) { 1234 this.el = el; 1235 this.getPropertyValue = function (prop) { 1236 var re = /(-([a-z]))/g; 1237 if (prop === 'float') { 1238 prop = 'styleFloat'; 1239 } 1240 if (re.test(prop)) { 1241 prop = prop.replace(re, function (a, b, c) { 1242 return c.toUpperCase(); 1243 }); 1244 } 1245 return el.currentStyle[prop] || null; 1246 }; 1247 return this; 1248 }; 1249 } 1250 if (!Array.prototype.indexOf) { 1251 Array.prototype.indexOf = function (obj, start) { 1252 var i, j; 1253 for (i = (start || 0), j = this.length; i < j; i += 1) { 1254 if (this[i] === obj) { return i; } 1255 } 1256 return -1; 1257 }; 1258 } 1259 1260 Date.prototype.countDaysInMonth = function () { 1261 return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); 1262 }; 1263 1264 $.fn.xdsoftScroller = function (options, percent) { 1265 return this.each(function () { 1266 var timeboxparent = $(this), 1267 pointerEventToXY = function (e) { 1268 var out = {x: 0, y: 0}, 1269 touch; 1270 if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { 1271 touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 1272 out.x = touch.clientX; 1273 out.y = touch.clientY; 1274 } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') { 1275 out.x = e.clientX; 1276 out.y = e.clientY; 1277 } 1278 return out; 1279 }, 1280 getWheelDelta = function (e) { 1281 var deltaY = 0; 1282 1283 if ('detail' in e) { deltaY = e.detail; } 1284 if ('wheelDelta' in e) { deltaY = -e.wheelDelta / 120; } 1285 if ('wheelDeltaY' in e) { deltaY = -e.wheelDeltaY / 120; } 1286 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { deltaY = 0; } 1287 1288 deltaY *= 10; 1289 1290 if ('deltaY' in e) { deltaY = -e.deltaY; } 1291 1292 if (deltaY && e.deltaMode) { 1293 if (e.deltaMode === 1) { 1294 deltaY *= 40; 1295 } else { 1296 deltaY *= 800; 1297 } 1298 } 1299 1300 return deltaY; 1301 }, 1302 timebox, 1303 timeboxTop = 0, 1304 parentHeight, 1305 height, 1306 scrollbar, 1307 scroller, 1308 maximumOffset = 100, 1309 start = false, 1310 startY = 0, 1311 startTop = 0, 1312 h1 = 0, 1313 touchStart = false, 1314 startTopScroll = 0, 1315 calcOffset = function () {}; 1316 1317 if (percent === 'hide') { 1318 timeboxparent.find('.xdsoft_scrollbar').hide(); 1319 return; 1320 } 1321 1322 if (!$(this).hasClass('xdsoft_scroller_box')) { 1323 timebox = timeboxparent.children().eq(0); 1324 timeboxTop = Math.abs(parseInt(timebox.css('marginTop'), 10)); 1325 parentHeight = timeboxparent[0].clientHeight; 1326 height = timebox[0].offsetHeight; 1327 scrollbar = $('<div class="xdsoft_scrollbar"></div>');
vendor: 64,676 bytes, lines 1328-3166
1328 scroller = $('<div class="xdsoft_scroller"></div>'); 1329 scrollbar.append(scroller); 1330 1331 timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar); 1332 calcOffset = function calcOffset(event) { 1333 var offset = pointerEventToXY(event).y - startY + startTopScroll; 1334 if (offset < 0) { 1335 offset = 0; 1336 } 1337 if (offset + scroller[0].offsetHeight > h1) { 1338 offset = h1 - scroller[0].offsetHeight; 1339 } 1340 timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]); 1341 }; 1342 1343 scroller 1344 .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) { 1345 if (!parentHeight) { 1346 timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); 1347 } 1348 1349 startY = pointerEventToXY(event).y; 1350 startTopScroll = parseInt(scroller.css('marginTop'), 10); 1351 h1 = scrollbar[0].offsetHeight; 1352 1353 if (event.type === 'mousedown' || event.type === 'touchstart') { 1354 if (options.ownerDocument) { 1355 $(options.ownerDocument.body).addClass('xdsoft_noselect'); 1356 } 1357 $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() { 1358 $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft_scroller', arguments_callee) 1359 .off('mousemove.xdsoft_scroller', calcOffset) 1360 .removeClass('xdsoft_noselect'); 1361 }); 1362 $(options.ownerDocument.body).on('mousemove.xdsoft_scroller', calcOffset); 1363 } else { 1364 touchStart = true; 1365 event.stopPropagation(); 1366 event.preventDefault(); 1367 } 1368 }) 1369 .on('touchmove', function (event) { 1370 if (touchStart) { 1371 event.preventDefault(); 1372 calcOffset(event); 1373 } 1374 }) 1375 .on('touchend touchcancel', function () { 1376 touchStart = false; 1377 startTopScroll = 0; 1378 }); 1379 1380 timeboxparent 1381 .on('scroll_element.xdsoft_scroller', function (event, percentage) { 1382 if (!parentHeight) { 1383 timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]); 1384 } 1385 percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage; 1386 timeboxTop = parseFloat(Math.abs((timebox[0].offsetHeight - parentHeight) * percentage).toFixed(4)); 1387 1388 scroller.css('marginTop', maximumOffset * percentage); 1389 timebox.css('marginTop', -timeboxTop); 1390 }) 1391 .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) { 1392 var percent, sh; 1393 parentHeight = timeboxparent[0].clientHeight; 1394 height = timebox[0].offsetHeight; 1395 percent = parentHeight / height; 1396 sh = percent * scrollbar[0].offsetHeight; 1397 if (percent > 1) { 1398 scroller.hide(); 1399 } else { 1400 scroller.show(); 1401 scroller.css('height', parseInt(sh > 10 ? sh : 10, 10)); 1402 maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight; 1403 if (noTriggerScroll !== true) { 1404 timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || timeboxTop / (height - parentHeight)]); 1405 } 1406 } 1407 }); 1408 1409 timeboxparent.on('mousewheel', function (event) { 1410 var deltaY = getWheelDelta(event.originalEvent); 1411 var top = Math.max(0, timeboxTop - deltaY); 1412 timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]); 1413 event.stopPropagation(); 1414 return false; 1415 }); 1416 1417 timeboxparent.on('touchstart', function (event) { 1418 start = pointerEventToXY(event); 1419 startTop = timeboxTop; 1420 }); 1421 1422 timeboxparent.on('touchmove', function (event) { 1423 if (start) { 1424 event.preventDefault(); 1425 var coord = pointerEventToXY(event); 1426 timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]); 1427 } 1428 }); 1429 1430 timeboxparent.on('touchend touchcancel', function () { 1431 start = false; 1432 startTop = 0; 1433 }); 1434 } 1435 timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); 1436 }); 1437 }; 1438 1439 $.fn.datetimepicker = function (opt, opt2) { 1440 var result = this, 1441 KEY0 = 48, 1442 KEY9 = 57, 1443 _KEY0 = 96, 1444 _KEY9 = 105, 1445 CTRLKEY = 17, 1446 CMDKEY = 91, 1447 DEL = 46, 1448 ENTER = 13, 1449 ESC = 27, 1450 BACKSPACE = 8, 1451 ARROWLEFT = 37, 1452 ARROWUP = 38, 1453 ARROWRIGHT = 39, 1454 ARROWDOWN = 40, 1455 TAB = 9, 1456 F5 = 116, 1457 AKEY = 65, 1458 CKEY = 67, 1459 VKEY = 86, 1460 ZKEY = 90, 1461 YKEY = 89, 1462 ctrlDown = false, 1463 cmdDown = false, 1464 options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), 1465 1466 lazyInitTimer = 0, 1467 createDateTimePicker, 1468 destroyDateTimePicker, 1469 1470 lazyInit = function (input) { 1471 input 1472 .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() { 1473 if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) { 1474 return; 1475 } 1476 clearTimeout(lazyInitTimer); 1477 lazyInitTimer = setTimeout(function () { 1478 1479 if (!input.data('xdsoft_datetimepicker')) { 1480 createDateTimePicker(input); 1481 } 1482 input 1483 .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback) 1484 .trigger('open.xdsoft'); 1485 }, 100); 1486 }); 1487 }; 1488 1489 createDateTimePicker = function (input) { 1490 var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'), 1491 xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'), 1492 datepicker = $('<div class="xdsoft_datepicker active"></div>'), 1493 month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' + 1494 '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' + 1495 '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' + 1496 '<button type="button" class="xdsoft_next"></button></div>'), 1497 calendar = $('<div class="xdsoft_calendar"></div>'), 1498 timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'), 1499 timeboxparent = timepicker.find('.xdsoft_time_box').eq(0), 1500 timebox = $('<div class="xdsoft_time_variant"></div>'), 1501 applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'), 1502 1503 monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'), 1504 yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'), 1505 triggerAfterOpen = false, 1506 XDSoft_datetime, 1507 1508 xchangeTimer, 1509 timerclick, 1510 current_time_index, 1511 setPos, 1512 timer = 0, 1513 _xdsoft_datetime, 1514 forEachAncestorOf; 1515 1516 if (options.id) { 1517 datetimepicker.attr('id', options.id); 1518 } 1519 if (options.style) { 1520 datetimepicker.attr('style', options.style); 1521 } 1522 if (options.weeks) { 1523 datetimepicker.addClass('xdsoft_showweeks'); 1524 } 1525 if (options.rtl) { 1526 datetimepicker.addClass('xdsoft_rtl'); 1527 } 1528 1529 datetimepicker.addClass('xdsoft_' + options.theme); 1530 datetimepicker.addClass(options.className); 1531 1532 month_picker 1533 .find('.xdsoft_month span') 1534 .after(monthselect); 1535 month_picker 1536 .find('.xdsoft_year span') 1537 .after(yearselect); 1538 1539 month_picker 1540 .find('.xdsoft_month,.xdsoft_year') 1541 .on('touchstart mousedown.xdsoft', function (event) { 1542 var select = $(this).find('.xdsoft_select').eq(0), 1543 val = 0, 1544 top = 0, 1545 visible = select.is(':visible'), 1546 items, 1547 i; 1548 1549 month_picker 1550 .find('.xdsoft_select') 1551 .hide(); 1552 if (_xdsoft_datetime.currentTime) { 1553 val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear'](); 1554 } 1555 1556 select[visible ? 'hide' : 'show'](); 1557 for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) { 1558 if (items.eq(i).data('value') === val) { 1559 break; 1560 } else { 1561 top += items[0].offsetHeight; 1562 } 1563 } 1564 1565 select.xdsoftScroller(options, top / (select.children()[0].offsetHeight - (select[0].clientHeight))); 1566 event.stopPropagation(); 1567 return false; 1568 }); 1569 1570 var handleTouchMoved = function (event) { 1571 var evt = event.originalEvent; 1572 var touchPosition = evt.touches ? evt.touches[0] : evt; 1573 this.touchStartPosition = this.touchStartPosition || touchPosition; 1574 var xMovement = Math.abs(this.touchStartPosition.clientX - touchPosition.clientX); 1575 var yMovement = Math.abs(this.touchStartPosition.clientY - touchPosition.clientY); 1576 var distance = Math.sqrt(xMovement * xMovement + yMovement * yMovement); 1577 if(distance > options.touchMovedThreshold) { 1578 this.touchMoved = true; 1579 } 1580 } 1581 1582 month_picker 1583 .find('.xdsoft_select') 1584 .xdsoftScroller(options) 1585 .on('touchstart mousedown.xdsoft', function (event) { 1586 var evt = event.originalEvent; 1587 this.touchMoved = false; 1588 this.touchStartPosition = evt.touches ? evt.touches[0] : evt; 1589 event.stopPropagation(); 1590 event.preventDefault(); 1591 }) 1592 .on('touchmove', '.xdsoft_option', handleTouchMoved) 1593 .on('touchend mousedown.xdsoft', '.xdsoft_option', function () { 1594 if (!this.touchMoved) { 1595 if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) { 1596 _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); 1597 } 1598 1599 var year = _xdsoft_datetime.currentTime.getFullYear(); 1600 if (_xdsoft_datetime && _xdsoft_datetime.currentTime) { 1601 _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value')); 1602 } 1603 1604 $(this).parent().parent().hide(); 1605 1606 datetimepicker.trigger('xchange.xdsoft'); 1607 if (options.onChangeMonth && typeof options.onChangeMonth === 'function') { 1608 options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 1609 } 1610 1611 if (year !== _xdsoft_datetime.currentTime.getFullYear() && typeof options.onChangeYear === 'function') { 1612 options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 1613 } 1614 } 1615 }); 1616 1617 datetimepicker.getValue = function () { 1618 return _xdsoft_datetime.getCurrentTime(); 1619 }; 1620 1621 datetimepicker.setOptions = function (_options) { 1622 var highlightedDates = {}; 1623 1624 options = $.extend(true, {}, options, _options); 1625 1626 if (_options.allowTimes && Array.isArray(_options.allowTimes) && _options.allowTimes.length) { 1627 options.allowTimes = $.extend(true, [], _options.allowTimes); 1628 } 1629 1630 if (_options.weekends && Array.isArray(_options.weekends) && _options.weekends.length) { 1631 options.weekends = $.extend(true, [], _options.weekends); 1632 } 1633 1634 if (_options.allowDates && Array.isArray(_options.allowDates) && _options.allowDates.length) { 1635 options.allowDates = $.extend(true, [], _options.allowDates); 1636 } 1637 1638 if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") { 1639 options.allowDateRe = new RegExp(_options.allowDateRe); 1640 } 1641 1642 if (_options.highlightedDates && Array.isArray(_options.highlightedDates) && _options.highlightedDates.length) { 1643 $.each(_options.highlightedDates, function (index, value) { 1644 var splitData = $.map(value.split(','), $.trim), 1645 exDesc, 1646 hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style 1647 keyDate = dateHelper.formatDate(hDate.date, options.formatDate); 1648 if (highlightedDates[keyDate] !== undefined) { 1649 exDesc = highlightedDates[keyDate].desc; 1650 if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { 1651 highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; 1652 } 1653 } else { 1654 highlightedDates[keyDate] = hDate; 1655 } 1656 }); 1657 1658 options.highlightedDates = $.extend(true, [], highlightedDates); 1659 } 1660 1661 if (_options.highlightedPeriods && Array.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) { 1662 highlightedDates = $.extend(true, [], options.highlightedDates); 1663 $.each(_options.highlightedPeriods, function (index, value) { 1664 var dateTest, // start date 1665 dateEnd, 1666 desc, 1667 hDate, 1668 keyDate, 1669 exDesc, 1670 style; 1671 if (Array.isArray(value)) { 1672 dateTest = value[0]; 1673 dateEnd = value[1]; 1674 desc = value[2]; 1675 style = value[3]; 1676 } 1677 else { 1678 var splitData = $.map(value.split(','), $.trim); 1679 dateTest = dateHelper.parseDate(splitData[0], options.formatDate); 1680 dateEnd = dateHelper.parseDate(splitData[1], options.formatDate); 1681 desc = splitData[2]; 1682 style = splitData[3]; 1683 } 1684 1685 while (dateTest <= dateEnd) { 1686 hDate = new HighlightedDate(dateTest, desc, style); 1687 keyDate = dateHelper.formatDate(dateTest, options.formatDate); 1688 dateTest.setDate(dateTest.getDate() + 1); 1689 if (highlightedDates[keyDate] !== undefined) { 1690 exDesc = highlightedDates[keyDate].desc; 1691 if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) { 1692 highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc; 1693 } 1694 } else { 1695 highlightedDates[keyDate] = hDate; 1696 } 1697 } 1698 }); 1699 1700 options.highlightedDates = $.extend(true, [], highlightedDates); 1701 } 1702 1703 if (_options.disabledDates && Array.isArray(_options.disabledDates) && _options.disabledDates.length) { 1704 options.disabledDates = $.extend(true, [], _options.disabledDates); 1705 } 1706 1707 if (_options.disabledWeekDays && Array.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) { 1708 options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays); 1709 } 1710 1711 if ((options.open || options.opened) && (!options.inline)) { 1712 input.trigger('open.xdsoft'); 1713 } 1714 1715 if (options.inline) { 1716 triggerAfterOpen = true; 1717 datetimepicker.addClass('xdsoft_inline'); 1718 input.after(datetimepicker).hide(); 1719 } 1720 1721 if (options.inverseButton) { 1722 options.next = 'xdsoft_prev'; 1723 options.prev = 'xdsoft_next'; 1724 } 1725 1726 if (options.datepicker) { 1727 datepicker.addClass('active'); 1728 } else { 1729 datepicker.removeClass('active'); 1730 } 1731 1732 if (options.timepicker) { 1733 timepicker.addClass('active'); 1734 } else { 1735 timepicker.removeClass('active'); 1736 } 1737 1738 if (options.value) { 1739 _xdsoft_datetime.setCurrentTime(options.value); 1740 if (input && input.val) { 1741 input.val(_xdsoft_datetime.str); 1742 } 1743 } 1744 1745 if (isNaN(options.dayOfWeekStart)) { 1746 options.dayOfWeekStart = 0; 1747 } else { 1748 options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7; 1749 } 1750 1751 if (!options.timepickerScrollbar) { 1752 timeboxparent.xdsoftScroller(options, 'hide'); 1753 } 1754 1755 if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) { 1756 options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate); 1757 } 1758 1759 if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) { 1760 options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate); 1761 } 1762 1763 if (options.minDateTime && /^\+(.*)$/.test(options.minDateTime)) { 1764 options.minDateTime = _xdsoft_datetime.strToDateTime(options.minDateTime).dateFormat(options.formatDate); 1765 } 1766 1767 if (options.maxDateTime && /^\+(.*)$/.test(options.maxDateTime)) { 1768 options.maxDateTime = _xdsoft_datetime.strToDateTime(options.maxDateTime).dateFormat(options.formatDate); 1769 } 1770 1771 applyButton.toggle(options.showApplyButton); 1772 1773 month_picker 1774 .find('.xdsoft_today_button') 1775 .css('visibility', !options.todayButton ? 'hidden' : 'visible'); 1776 1777 month_picker 1778 .find('.' + options.prev) 1779 .css('visibility', !options.prevButton ? 'hidden' : 'visible'); 1780 1781 month_picker 1782 .find('.' + options.next) 1783 .css('visibility', !options.nextButton ? 'hidden' : 'visible'); 1784 1785 setMask(options); 1786 1787 if (options.validateOnBlur) { 1788 input 1789 .off('blur.xdsoft') 1790 .on('blur.xdsoft', function () { 1791 if (options.allowBlank && (!$(this).val().trim().length || 1792 (typeof options.mask === "string" && $(this).val().trim() === options.mask.replace(/[0-9]/g, '_')))) { 1793 $(this).val(null); 1794 datetimepicker.data('xdsoft_datetime').empty(); 1795 } else { 1796 var d = dateHelper.parseDate($(this).val(), options.format); 1797 if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time 1798 $(this).val(dateHelper.formatDate(d, options.format)); 1799 } else { 1800 var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')), 1801 splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join('')); 1802 1803 // parse the numbers as 0312 => 03:12 1804 if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) { 1805 $(this).val([splittedHours, splittedMinutes].map(function (item) { 1806 return item > 9 ? item : '0' + item; 1807 }).join(':')); 1808 } else { 1809 $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format)); 1810 } 1811 } 1812 datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); 1813 } 1814 1815 datetimepicker.trigger('changedatetime.xdsoft'); 1816 datetimepicker.trigger('close.xdsoft'); 1817 }); 1818 } 1819 options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1; 1820 1821 datetimepicker 1822 .trigger('xchange.xdsoft') 1823 .trigger('afterOpen.xdsoft'); 1824 }; 1825 1826 datetimepicker 1827 .data('options', options) 1828 .on('touchstart mousedown.xdsoft', function (event) { 1829 event.stopPropagation(); 1830 event.preventDefault(); 1831 yearselect.hide(); 1832 monthselect.hide(); 1833 return false; 1834 }); 1835 1836 //scroll_element = timepicker.find('.xdsoft_time_box'); 1837 timeboxparent.append(timebox); 1838 timeboxparent.xdsoftScroller(options); 1839 1840 datetimepicker.on('afterOpen.xdsoft', function () { 1841 timeboxparent.xdsoftScroller(options); 1842 }); 1843 1844 datetimepicker 1845 .append(datepicker) 1846 .append(timepicker); 1847 1848 if (options.withoutCopyright !== true) { 1849 datetimepicker 1850 .append(xdsoft_copyright); 1851 } 1852 1853 datepicker 1854 .append(month_picker) 1855 .append(calendar) 1856 .append(applyButton); 1857 1858 if (options.insideParent) { 1859 $(input).parent().append(datetimepicker); 1860 } else { 1861 $(options.parentID).append(datetimepicker); 1862 } 1863 1864 XDSoft_datetime = function () { 1865 var _this = this; 1866 _this.now = function (norecursion) { 1867 var d = new Date(), 1868 date, 1869 time; 1870 1871 if (!norecursion && options.defaultDate) { 1872 date = _this.strToDateTime(options.defaultDate); 1873 d.setFullYear(date.getFullYear()); 1874 d.setMonth(date.getMonth()); 1875 d.setDate(date.getDate()); 1876 } 1877 1878 d.setFullYear(d.getFullYear()); 1879 1880 if (!norecursion && options.defaultTime) { 1881 time = _this.strtotime(options.defaultTime); 1882 d.setHours(time.getHours()); 1883 d.setMinutes(time.getMinutes()); 1884 d.setSeconds(time.getSeconds()); 1885 d.setMilliseconds(time.getMilliseconds()); 1886 } 1887 return d; 1888 }; 1889 1890 _this.isValidDate = function (d) { 1891 if (Object.prototype.toString.call(d) !== "[object Date]") { 1892 return false; 1893 } 1894 return !isNaN(d.getTime()); 1895 }; 1896 1897 _this.setCurrentTime = function (dTime, requireValidDate) { 1898 if (typeof dTime === 'string') { 1899 _this.currentTime = _this.strToDateTime(dTime); 1900 } 1901 else if (_this.isValidDate(dTime)) { 1902 _this.currentTime = dTime; 1903 } 1904 else if (!dTime && !requireValidDate && options.allowBlank && !options.inline) { 1905 _this.currentTime = null; 1906 } 1907 else { 1908 _this.currentTime = _this.now(); 1909 } 1910 1911 datetimepicker.trigger('xchange.xdsoft'); 1912 }; 1913 1914 _this.empty = function () { 1915 _this.currentTime = null; 1916 }; 1917 1918 _this.getCurrentTime = function () { 1919 return _this.currentTime; 1920 }; 1921 1922 _this.nextMonth = function () { 1923 1924 if (_this.currentTime === undefined || _this.currentTime === null) { 1925 _this.currentTime = _this.now(); 1926 } 1927 1928 var month = _this.currentTime.getMonth() + 1, 1929 year; 1930 if (month === 12) { 1931 _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1); 1932 month = 0; 1933 } 1934 1935 year = _this.currentTime.getFullYear(); 1936 1937 _this.currentTime.setDate( 1938 Math.min( 1939 new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), 1940 _this.currentTime.getDate() 1941 ) 1942 ); 1943 _this.currentTime.setMonth(month); 1944 1945 if (options.onChangeMonth && typeof options.onChangeMonth === 'function') { 1946 options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 1947 } 1948 1949 if (year !== _this.currentTime.getFullYear() && typeof options.onChangeYear === 'function') { 1950 options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 1951 } 1952 1953 datetimepicker.trigger('xchange.xdsoft'); 1954 return month; 1955 }; 1956 1957 _this.prevMonth = function () { 1958 1959 if (_this.currentTime === undefined || _this.currentTime === null) { 1960 _this.currentTime = _this.now(); 1961 } 1962 1963 var month = _this.currentTime.getMonth() - 1; 1964 if (month === -1) { 1965 _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1); 1966 month = 11; 1967 } 1968 _this.currentTime.setDate( 1969 Math.min( 1970 new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), 1971 _this.currentTime.getDate() 1972 ) 1973 ); 1974 _this.currentTime.setMonth(month); 1975 if (options.onChangeMonth && typeof options.onChangeMonth === 'function') { 1976 options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 1977 } 1978 datetimepicker.trigger('xchange.xdsoft'); 1979 return month; 1980 }; 1981 1982 _this.getWeekOfYear = function (datetime) { 1983 if (options.onGetWeekOfYear && typeof options.onGetWeekOfYear === 'function') { 1984 var week = options.onGetWeekOfYear.call(datetimepicker, datetime); 1985 if (typeof week !== 'undefined') { 1986 return week; 1987 } 1988 } 1989 var onejan = new Date(datetime.getFullYear(), 0, 1); 1990 1991 //First week of the year is th one with the first Thursday according to ISO8601 1992 if (onejan.getDay() !== 4) { 1993 onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7)); 1994 } 1995 1996 return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7); 1997 }; 1998 1999 _this.strToDateTime = function (sDateTime) { 2000 var tmpDate = [], timeOffset, currentTime; 2001 2002 if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) { 2003 return sDateTime; 2004 } 2005 2006 tmpDate = /^([+-]{1})(.*)$/.exec(sDateTime); 2007 2008 if (tmpDate) { 2009 tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate); 2010 } 2011 2012 if (tmpDate && tmpDate[2]) { 2013 timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000; 2014 currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset); 2015 } else { 2016 currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now(); 2017 } 2018 2019 if (!_this.isValidDate(currentTime)) { 2020 currentTime = _this.now(); 2021 } 2022 2023 return currentTime; 2024 }; 2025 2026 _this.strToDate = function (sDate) { 2027 if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) { 2028 return sDate; 2029 } 2030 2031 var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true); 2032 if (!_this.isValidDate(currentTime)) { 2033 currentTime = _this.now(true); 2034 } 2035 return currentTime; 2036 }; 2037 2038 _this.strtotime = function (sTime) { 2039 if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) { 2040 return sTime; 2041 } 2042 var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true); 2043 if (!_this.isValidDate(currentTime)) { 2044 currentTime = _this.now(true); 2045 } 2046 return currentTime; 2047 }; 2048 2049 _this.str = function () { 2050 var format = options.format; 2051 if (options.yearOffset) { 2052 format = format.replace('Y', _this.currentTime.getFullYear() + options.yearOffset); 2053 format = format.replace('y', String(_this.currentTime.getFullYear() + options.yearOffset).substring(2, 4)); 2054 } 2055 return dateHelper.formatDate(_this.currentTime, format); 2056 }; 2057 _this.currentTime = this.now(); 2058 }; 2059 2060 _xdsoft_datetime = new XDSoft_datetime(); 2061 2062 applyButton.on('touchend click', function (e) {//pathbrite 2063 e.preventDefault(); 2064 datetimepicker.data('changed', true); 2065 _xdsoft_datetime.setCurrentTime(getCurrentValue()); 2066 input.val(_xdsoft_datetime.str()); 2067 datetimepicker.trigger('close.xdsoft'); 2068 }); 2069 month_picker 2070 .find('.xdsoft_today_button') 2071 .on('touchend mousedown.xdsoft', function () { 2072 datetimepicker.data('changed', true); 2073 _xdsoft_datetime.setCurrentTime(0, true); 2074 datetimepicker.trigger('afterOpen.xdsoft'); 2075 }).on('dblclick.xdsoft', function () { 2076 var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate; 2077 currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); 2078 minDate = _xdsoft_datetime.strToDate(options.minDate); 2079 minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); 2080 if (currentDate < minDate) { 2081 return; 2082 } 2083 maxDate = _xdsoft_datetime.strToDate(options.maxDate); 2084 maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()); 2085 if (currentDate > maxDate) { 2086 return; 2087 } 2088 input.val(_xdsoft_datetime.str()); 2089 input.trigger('change'); 2090 datetimepicker.trigger('close.xdsoft'); 2091 }); 2092 month_picker 2093 .find('.xdsoft_prev,.xdsoft_next') 2094 .on('touchend mousedown.xdsoft', function () { 2095 var $this = $(this), 2096 timer = 0, 2097 stop = false; 2098 2099 (function arguments_callee1(v) { 2100 if ($this.hasClass(options.next)) { 2101 _xdsoft_datetime.nextMonth(); 2102 } else if ($this.hasClass(options.prev)) { 2103 _xdsoft_datetime.prevMonth(); 2104 } 2105 if (options.monthChangeSpinner) { 2106 if (!stop) { 2107 timer = setTimeout(arguments_callee1, v || 100); 2108 } 2109 } 2110 }(500)); 2111 2112 $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee2() { 2113 clearTimeout(timer); 2114 stop = true; 2115 $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft', arguments_callee2); 2116 }); 2117 }); 2118 2119 timepicker 2120 .find('.xdsoft_prev,.xdsoft_next') 2121 .on('touchend mousedown.xdsoft', function () { 2122 var $this = $(this), 2123 timer = 0, 2124 stop = false, 2125 period = 110; 2126 (function arguments_callee4(v) { 2127 var pheight = timeboxparent[0].clientHeight, 2128 height = timebox[0].offsetHeight, 2129 top = Math.abs(parseInt(timebox.css('marginTop'), 10)); 2130 /** 2131 * Fixes a bug which happens if: 2132 * top is < the timeHeightInTimePicker, it will cause the up arrow to stop working 2133 * same for the down arrow if it's not exactly on the pixel 2134 */ 2135 if (top < options.timeHeightInTimePicker) { 2136 top = options.timeHeightInTimePicker; 2137 } else if ($this.hasClass(options.next) && (height - pheight) < top) { 2138 timebox.css('marginTop', '-' + height + 'px'); 2139 } 2140 2141 if ($this.hasClass(options.next) && (height - pheight) > top) { 2142 timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px'); 2143 } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) { 2144 timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px'); 2145 } 2146 /** 2147 * Fixed bug: 2148 * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list. 2149 * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this 2150 * would cause a bug when you use jquery.css method. 2151 * Let's say: * { transition: all .5s ease; } 2152 * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button, 2153 * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the 2154 * next/prev button. 2155 * 2156 * What we should do: 2157 * Replace timebox.css('marginTop') with timebox[0].style.marginTop. 2158 */ 2159 timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]); 2160 period = (period > 10) ? 10 : period - 10; 2161 if (!stop) { 2162 timer = setTimeout(arguments_callee4, v || period); 2163 } 2164 }(500)); 2165 $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee5() { 2166 clearTimeout(timer); 2167 stop = true; 2168 $([options.ownerDocument.body, options.contentWindow]) 2169 .off('touchend mouseup.xdsoft', arguments_callee5); 2170 }); 2171 }); 2172 2173 xchangeTimer = 0; 2174 // base handler - generating a calendar and timepicker 2175 datetimepicker 2176 .on('xchange.xdsoft', function (event) { 2177 clearTimeout(xchangeTimer); 2178 xchangeTimer = setTimeout(function () { 2179 2180 if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null || isNaN(_xdsoft_datetime.currentTime.getTime())) { 2181 _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); 2182 } 2183 2184 var table = '', 2185 start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), 2186 i = 0, 2187 j, 2188 today = _xdsoft_datetime.now(), 2189 maxDate = false, 2190 minDate = false, 2191 minDateTime = false, 2192 maxDateTime = false, 2193 hDate, 2194 day, 2195 d, 2196 y, 2197 m, 2198 w, 2199 classes = [], 2200 customDateSettings, 2201 newRow = true, 2202 time = '', 2203 h, 2204 line_time, 2205 description; 2206 2207 while (start.getDay() !== options.dayOfWeekStart) { 2208 start.setDate(start.getDate() - 1); 2209 } 2210 2211 table += '<table><thead><tr>'; 2212 2213 if (options.weeks) { 2214 table += '<th></th>'; 2215 } 2216 2217 for (j = 0; j < 7; j += 1) { 2218 table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>'; 2219 } 2220 2221 table += '</tr></thead>'; 2222 table += '<tbody>'; 2223 2224 if (options.maxDate !== false) { 2225 maxDate = _xdsoft_datetime.strToDate(options.maxDate); 2226 maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999); 2227 } 2228 2229 if (options.minDate !== false) { 2230 minDate = _xdsoft_datetime.strToDate(options.minDate); 2231 minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); 2232 } 2233 2234 if (options.minDateTime !== false) { 2235 minDateTime = _xdsoft_datetime.strToDate(options.minDateTime); 2236 minDateTime = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), minDateTime.getHours(), minDateTime.getMinutes(), minDateTime.getSeconds()); 2237 } 2238 2239 if (options.maxDateTime !== false) { 2240 maxDateTime = _xdsoft_datetime.strToDate(options.maxDateTime); 2241 maxDateTime = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), maxDateTime.getHours(), maxDateTime.getMinutes(), maxDateTime.getSeconds()); 2242 } 2243 2244 var maxDateTimeDay; 2245 if (maxDateTime !== false) { 2246 maxDateTimeDay = ((maxDateTime.getFullYear() * 12) + maxDateTime.getMonth()) * 31 + maxDateTime.getDate(); 2247 } 2248 2249 while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) { 2250 classes = []; 2251 i += 1; 2252 2253 day = start.getDay(); 2254 d = start.getDate(); 2255 y = start.getFullYear(); 2256 m = start.getMonth(); 2257 w = _xdsoft_datetime.getWeekOfYear(start); 2258 description = ''; 2259 2260 classes.push('xdsoft_date'); 2261 2262 if (options.beforeShowDay && typeof options.beforeShowDay.call === 'function') { 2263 customDateSettings = options.beforeShowDay.call(datetimepicker, start); 2264 } else { 2265 customDateSettings = null; 2266 } 2267 2268 if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){ 2269 if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){ 2270 classes.push('xdsoft_disabled'); 2271 } 2272 } 2273 2274 if(options.allowDates && options.allowDates.length>0){ 2275 if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){ 2276 classes.push('xdsoft_disabled'); 2277 } 2278 } 2279 2280 var currentDay = ((start.getFullYear() * 12) + start.getMonth()) * 31 + start.getDate(); 2281 if ((maxDate !== false && start > maxDate) || (minDateTime !== false && start < minDateTime) || (minDate !== false && start < minDate) || (maxDateTime !== false && currentDay > maxDateTimeDay) || (customDateSettings && customDateSettings[0] === false)) { 2282 classes.push('xdsoft_disabled'); 2283 } 2284 2285 if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) { 2286 classes.push('xdsoft_disabled'); 2287 } 2288 2289 if (options.disabledWeekDays.indexOf(day) !== -1) { 2290 classes.push('xdsoft_disabled'); 2291 } 2292 2293 if (input.is('[disabled]')) { 2294 classes.push('xdsoft_disabled'); 2295 } 2296 2297 if (customDateSettings && customDateSettings[1] !== "") { 2298 classes.push(customDateSettings[1]); 2299 } 2300 2301 if (_xdsoft_datetime.currentTime.getMonth() !== m) { 2302 classes.push('xdsoft_other_month'); 2303 } 2304 2305 if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) { 2306 classes.push('xdsoft_current'); 2307 } 2308 2309 if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) { 2310 classes.push('xdsoft_today'); 2311 } 2312 2313 if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) { 2314 classes.push('xdsoft_weekend'); 2315 } 2316 2317 if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) { 2318 hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)]; 2319 classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style); 2320 description = hDate.desc === undefined ? '' : hDate.desc; 2321 } 2322 2323 if (options.beforeShowDay && typeof options.beforeShowDay === 'function') { 2324 classes.push(options.beforeShowDay(start)); 2325 } 2326 2327 if (newRow) { 2328 table += '<tr>'; 2329 newRow = false; 2330 if (options.weeks) { 2331 table += '<th>' + w + '</th>'; 2332 } 2333 } 2334 2335 table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' + 2336 '<div>' + d + '</div>' + 2337 '</td>'; 2338 2339 if (start.getDay() === options.dayOfWeekStartPrev) { 2340 table += '</tr>'; 2341 newRow = true; 2342 } 2343 2344 start.setDate(d + 1); 2345 } 2346 table += '</tbody></table>'; 2347 2348 calendar.html(table); 2349 2350 month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]); 2351 month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear() + options.yearOffset); 2352 2353 // generate timebox 2354 time = ''; 2355 h = ''; 2356 m = ''; 2357 2358 var minTimeMinutesOfDay = 0; 2359 if (options.minTime !== false) { 2360 var t = _xdsoft_datetime.strtotime(options.minTime); 2361 minTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes(); 2362 } 2363 var maxTimeMinutesOfDay = 24 * 60; 2364 if (options.maxTime !== false) { 2365 var t = _xdsoft_datetime.strtotime(options.maxTime); 2366 maxTimeMinutesOfDay = 60 * t.getHours() + t.getMinutes(); 2367 } 2368 2369 if (options.minDateTime !== false) { 2370 var t = _xdsoft_datetime.strToDateTime(options.minDateTime); 2371 var currentDayIsMinDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate); 2372 if (currentDayIsMinDateTimeDay) { 2373 var m = 60 * t.getHours() + t.getMinutes(); 2374 if (m > minTimeMinutesOfDay) minTimeMinutesOfDay = m; 2375 } 2376 } 2377 2378 if (options.maxDateTime !== false) { 2379 var t = _xdsoft_datetime.strToDateTime(options.maxDateTime); 2380 var currentDayIsMaxDateTimeDay = dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(t, options.formatDate); 2381 if (currentDayIsMaxDateTimeDay) { 2382 var m = 60 * t.getHours() + t.getMinutes(); 2383 if (m < maxTimeMinutesOfDay) maxTimeMinutesOfDay = m; 2384 } 2385 } 2386 2387 line_time = function line_time(h, m) { 2388 var now = _xdsoft_datetime.now(), current_time, 2389 isALlowTimesInit = options.allowTimes && Array.isArray(options.allowTimes) && options.allowTimes.length; 2390 now.setHours(h); 2391 h = parseInt(now.getHours(), 10); 2392 now.setMinutes(m); 2393 m = parseInt(now.getMinutes(), 10); 2394 classes = []; 2395 var currentMinutesOfDay = 60 * h + m; 2396 if (input.is('[disabled]') || (currentMinutesOfDay >= maxTimeMinutesOfDay) || (currentMinutesOfDay < minTimeMinutesOfDay)) { 2397 classes.push('xdsoft_disabled'); 2398 } 2399 2400 current_time = new Date(_xdsoft_datetime.currentTime); 2401 current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10)); 2402 2403 if (!isALlowTimesInit) { 2404 current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step); 2405 } 2406 2407 if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) { 2408 if (options.defaultSelect || datetimepicker.data('changed')) { 2409 classes.push('xdsoft_current'); 2410 } else if (options.initTime) { 2411 classes.push('xdsoft_init_time'); 2412 } 2413 } 2414 if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) { 2415 classes.push('xdsoft_today'); 2416 } 2417 time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>'; 2418 }; 2419 2420 if (!options.allowTimes || !Array.isArray(options.allowTimes) || !options.allowTimes.length) { 2421 for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) { 2422 for (j = 0; j < 60; j += options.step) { 2423 var currentMinutesOfDay = i * 60 + j; 2424 if (currentMinutesOfDay < minTimeMinutesOfDay) continue; 2425 if (currentMinutesOfDay >= maxTimeMinutesOfDay) continue; 2426 h = (i < 10 ? '0' : '') + i; 2427 m = (j < 10 ? '0' : '') + j; 2428 line_time(h, m); 2429 } 2430 } 2431 } else { 2432 for (i = 0; i < options.allowTimes.length; i += 1) { 2433 h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(); 2434 m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(); 2435 line_time(h, m); 2436 } 2437 } 2438 2439 timebox.html(time); 2440 2441 opt = ''; 2442 2443 for (i = parseInt(options.yearStart, 10); i <= parseInt(options.yearEnd, 10); i += 1) { 2444 opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + (i + options.yearOffset) + '</div>'; 2445 } 2446 yearselect.children().eq(0) 2447 .html(opt); 2448 2449 for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) { 2450 opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>'; 2451 } 2452 monthselect.children().eq(0).html(opt); 2453 $(datetimepicker) 2454 .trigger('generate.xdsoft'); 2455 }, 10); 2456 event.stopPropagation(); 2457 }) 2458 .on('afterOpen.xdsoft', function () { 2459 if (options.timepicker) { 2460 var classType, pheight, height, top; 2461 if (timebox.find('.xdsoft_current').length) { 2462 classType = '.xdsoft_current'; 2463 } else if (timebox.find('.xdsoft_init_time').length) { 2464 classType = '.xdsoft_init_time'; 2465 } 2466 if (classType) { 2467 pheight = timeboxparent[0].clientHeight; 2468 height = timebox[0].offsetHeight; 2469 top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1; 2470 if ((height - pheight) < top) { 2471 top = height - pheight; 2472 } 2473 timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]); 2474 } else { 2475 timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]); 2476 } 2477 } 2478 }); 2479 2480 timerclick = 0; 2481 calendar 2482 .on('touchend click.xdsoft', 'td', function (xdevent) { 2483 xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap 2484 timerclick += 1; 2485 var $this = $(this), 2486 currentTime = _xdsoft_datetime.currentTime; 2487 2488 if (currentTime === undefined || currentTime === null) { 2489 _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); 2490 currentTime = _xdsoft_datetime.currentTime; 2491 } 2492 2493 if ($this.hasClass('xdsoft_disabled')) { 2494 return false; 2495 } 2496 2497 currentTime.setDate(1); 2498 currentTime.setFullYear($this.data('year')); 2499 currentTime.setMonth($this.data('month')); 2500 currentTime.setDate($this.data('date')); 2501 2502 datetimepicker.trigger('select.xdsoft', [currentTime]); 2503 2504 input.val(_xdsoft_datetime.str()); 2505 2506 if (options.onSelectDate && typeof options.onSelectDate === 'function') { 2507 options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); 2508 } 2509 2510 datetimepicker.data('changed', true); 2511 datetimepicker.trigger('xchange.xdsoft'); 2512 datetimepicker.trigger('changedatetime.xdsoft'); 2513 if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) { 2514 datetimepicker.trigger('close.xdsoft'); 2515 } 2516 setTimeout(function () { 2517 timerclick = 0; 2518 }, 200); 2519 }); 2520 2521 timebox 2522 .on('touchstart', 'div', function (xdevent) { 2523 this.touchMoved = false; 2524 }) 2525 .on('touchmove', 'div', handleTouchMoved) 2526 .on('touchend click.xdsoft', 'div', function (xdevent) { 2527 if (!this.touchMoved) { 2528 xdevent.stopPropagation(); 2529 var $this = $(this), 2530 currentTime = _xdsoft_datetime.currentTime; 2531 2532 if (currentTime === undefined || currentTime === null) { 2533 _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); 2534 currentTime = _xdsoft_datetime.currentTime; 2535 } 2536 2537 if ($this.hasClass('xdsoft_disabled')) { 2538 return false; 2539 } 2540 currentTime.setHours($this.data('hour')); 2541 currentTime.setMinutes($this.data('minute')); 2542 datetimepicker.trigger('select.xdsoft', [currentTime]); 2543 2544 datetimepicker.data('input').val(_xdsoft_datetime.str()); 2545 2546 if (options.onSelectTime && typeof options.onSelectTime === 'function') { 2547 options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); 2548 } 2549 datetimepicker.data('changed', true); 2550 datetimepicker.trigger('xchange.xdsoft'); 2551 datetimepicker.trigger('changedatetime.xdsoft'); 2552 if (options.inline !== true && options.closeOnTimeSelect === true) { 2553 datetimepicker.trigger('close.xdsoft'); 2554 } 2555 } 2556 }); 2557 2558 datepicker 2559 .on('mousewheel.xdsoft', function (event) { 2560 if (!options.scrollMonth) { 2561 return true; 2562 } 2563 if (event.deltaY < 0) { 2564 _xdsoft_datetime.nextMonth(); 2565 } else { 2566 _xdsoft_datetime.prevMonth(); 2567 } 2568 return false; 2569 }); 2570 2571 input 2572 .on('mousewheel.xdsoft', function (event) { 2573 if (!options.scrollInput) { 2574 return true; 2575 } 2576 if (!options.datepicker && options.timepicker) { 2577 current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0; 2578 if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) { 2579 current_time_index += event.deltaY; 2580 } 2581 if (timebox.children().eq(current_time_index).length) { 2582 timebox.children().eq(current_time_index).trigger('mousedown'); 2583 } 2584 return false; 2585 } 2586 if (options.datepicker && !options.timepicker) { 2587 datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]); 2588 if (input.val) { 2589 input.val(_xdsoft_datetime.str()); 2590 } 2591 datetimepicker.trigger('changedatetime.xdsoft'); 2592 return false; 2593 } 2594 }); 2595 2596 datetimepicker 2597 .on('changedatetime.xdsoft', function (event) { 2598 if (options.onChangeDateTime && typeof options.onChangeDateTime === 'function') { 2599 var $input = datetimepicker.data('input'); 2600 options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event); 2601 delete options.value; 2602 $input.trigger('change'); 2603 } 2604 }) 2605 .on('generate.xdsoft', function () { 2606 if (options.onGenerate && typeof options.onGenerate === 'function') { 2607 options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); 2608 } 2609 if (triggerAfterOpen) { 2610 datetimepicker.trigger('afterOpen.xdsoft'); 2611 triggerAfterOpen = false; 2612 } 2613 }) 2614 .on('click.xdsoft', function (xdevent) { 2615 xdevent.stopPropagation(); 2616 }); 2617 2618 current_time_index = 0; 2619 2620 /** 2621 * Runs the callback for each of the specified node's ancestors. 2622 * 2623 * Return FALSE from the callback to stop ascending. 2624 * 2625 * @param {DOMNode} node 2626 * @param {Function} callback 2627 * @returns {undefined} 2628 */ 2629 forEachAncestorOf = function (node, callback) { 2630 do { 2631 node = node.parentNode; 2632 2633 if (!node || callback(node) === false) { 2634 break; 2635 } 2636 } while (node.nodeName !== 'HTML'); 2637 }; 2638 2639 /** 2640 * Sets the position of the picker. 2641 * 2642 * @returns {undefined} 2643 */ 2644 setPos = function () { 2645 var dateInputOffset, 2646 dateInputElem, 2647 verticalPosition, 2648 left, 2649 position, 2650 datetimepickerElem, 2651 dateInputHasFixedAncestor, 2652 $dateInput, 2653 windowWidth, 2654 verticalAnchorEdge, 2655 datetimepickerCss, 2656 windowHeight, 2657 windowScrollTop; 2658 2659 $dateInput = datetimepicker.data('input'); 2660 dateInputOffset = $dateInput.offset(); 2661 dateInputElem = $dateInput[0]; 2662 2663 verticalAnchorEdge = 'top'; 2664 verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1; 2665 left = dateInputOffset.left; 2666 position = "absolute"; 2667 2668 windowWidth = $(options.contentWindow).width(); 2669 windowHeight = $(options.contentWindow).height(); 2670 windowScrollTop = $(options.contentWindow).scrollTop(); 2671 2672 if ((options.ownerDocument.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) { 2673 var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth; 2674 left = left - diff; 2675 } 2676 2677 if ($dateInput.parent().css('direction') === 'rtl') { 2678 left -= (datetimepicker.outerWidth() - $dateInput.outerWidth()); 2679 } 2680 2681 if (options.fixed) { 2682 verticalPosition -= windowScrollTop; 2683 left -= $(options.contentWindow).scrollLeft(); 2684 position = "fixed"; 2685 } else { 2686 dateInputHasFixedAncestor = false; 2687 2688 forEachAncestorOf(dateInputElem, function (ancestorNode) { 2689 if (ancestorNode === null) { 2690 return false; 2691 } 2692 2693 if (options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') { 2694 dateInputHasFixedAncestor = true; 2695 return false; 2696 } 2697 }); 2698 2699 if (dateInputHasFixedAncestor && !options.insideParent) { 2700 position = 'fixed'; 2701 2702 //If the picker won't fit entirely within the viewport then display it above the date input. 2703 if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) { 2704 verticalAnchorEdge = 'bottom'; 2705 verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top; 2706 } else { 2707 verticalPosition -= windowScrollTop; 2708 } 2709 } else { 2710 if (verticalPosition + datetimepicker[0].offsetHeight > windowHeight + windowScrollTop) { 2711 verticalPosition = dateInputOffset.top - datetimepicker[0].offsetHeight + 1; 2712 } 2713 } 2714 2715 if (verticalPosition < 0) { 2716 verticalPosition = 0; 2717 } 2718 2719 if (left + dateInputElem.offsetWidth > windowWidth) { 2720 left = windowWidth - dateInputElem.offsetWidth; 2721 } 2722 } 2723 2724 datetimepickerElem = datetimepicker[0]; 2725 2726 forEachAncestorOf(datetimepickerElem, function (ancestorNode) { 2727 var ancestorNodePosition; 2728 2729 ancestorNodePosition = options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position'); 2730 2731 if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) { 2732 left = left - ((windowWidth - ancestorNode.offsetWidth) / 2); 2733 return false; 2734 } 2735 }); 2736 2737 datetimepickerCss = { 2738 position: position, 2739 left: options.insideParent ? dateInputElem.offsetLeft : left, 2740 top: '', //Initialize to prevent previous values interfering with new ones. 2741 bottom: '' //Initialize to prevent previous values interfering with new ones. 2742 }; 2743 2744 if (options.insideParent) { 2745 datetimepickerCss[verticalAnchorEdge] = dateInputElem.offsetTop + dateInputElem.offsetHeight; 2746 } else { 2747 datetimepickerCss[verticalAnchorEdge] = verticalPosition; 2748 } 2749 2750 datetimepicker.css(datetimepickerCss); 2751 }; 2752 2753 datetimepicker 2754 .on('open.xdsoft', function (event) { 2755 var onShow = true; 2756 if (options.onShow && typeof options.onShow === 'function') { 2757 onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); 2758 } 2759 if (onShow !== false) { 2760 datetimepicker.show(); 2761 setPos(); 2762 $(options.contentWindow) 2763 .off('resize.xdsoft', setPos) 2764 .on('resize.xdsoft', setPos); 2765 2766 if (options.closeOnWithoutClick) { 2767 $([options.ownerDocument.body, options.contentWindow]).on('touchstart mousedown.xdsoft', function arguments_callee6() { 2768 datetimepicker.trigger('close.xdsoft'); 2769 $([options.ownerDocument.body, options.contentWindow]).off('touchstart mousedown.xdsoft', arguments_callee6); 2770 }); 2771 } 2772 } 2773 }) 2774 .on('close.xdsoft', function (event) { 2775 var onClose = true; 2776 month_picker 2777 .find('.xdsoft_month,.xdsoft_year') 2778 .find('.xdsoft_select') 2779 .hide(); 2780 if (options.onClose && typeof options.onClose === 'function') { 2781 onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); 2782 } 2783 if (onClose !== false && !options.opened && !options.inline) { 2784 datetimepicker.hide(); 2785 } 2786 event.stopPropagation(); 2787 }) 2788 .on('toggle.xdsoft', function () { 2789 if (datetimepicker.is(':visible')) { 2790 datetimepicker.trigger('close.xdsoft'); 2791 } else { 2792 datetimepicker.trigger('open.xdsoft'); 2793 } 2794 }) 2795 .data('input', input); 2796 2797 timer = 0; 2798 2799 datetimepicker.data('xdsoft_datetime', _xdsoft_datetime); 2800 datetimepicker.setOptions(options); 2801 2802 function getCurrentValue() { 2803 var ct = false, time; 2804 2805 if (options.startDate) { 2806 ct = _xdsoft_datetime.strToDate(options.startDate); 2807 } else { 2808 ct = options.value || ((input && input.val && input.val()) ? input.val() : ''); 2809 if (ct) { 2810 ct = _xdsoft_datetime.strToDateTime(ct); 2811 if (options.yearOffset) { 2812 ct = new Date(ct.getFullYear() - options.yearOffset, ct.getMonth(), ct.getDate(), ct.getHours(), ct.getMinutes(), ct.getSeconds(), ct.getMilliseconds()); 2813 } 2814 } else if (options.defaultDate) { 2815 ct = _xdsoft_datetime.strToDateTime(options.defaultDate); 2816 if (options.defaultTime) { 2817 time = _xdsoft_datetime.strtotime(options.defaultTime); 2818 ct.setHours(time.getHours()); 2819 ct.setMinutes(time.getMinutes()); 2820 } 2821 } 2822 } 2823 2824 if (ct && _xdsoft_datetime.isValidDate(ct)) { 2825 datetimepicker.data('changed', true); 2826 } else { 2827 ct = ''; 2828 } 2829 2830 return ct || 0; 2831 } 2832 2833 function setMask(options) { 2834 2835 var isValidValue = function (mask, value) { 2836 var reg = mask 2837 .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1') 2838 .replace(/_/g, '{digit+}') 2839 .replace(/([0-9]{1})/g, '{digit$1}') 2840 .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}') 2841 .replace(/\{digit[\+]\}/g, '[0-9_]{1}'); 2842 return (new RegExp(reg)).test(value); 2843 }, 2844 getCaretPos = function (input) { 2845 try { 2846 if (options.ownerDocument.selection && options.ownerDocument.selection.createRange) { 2847 var range = options.ownerDocument.selection.createRange(); 2848 return range.getBookmark().charCodeAt(2) - 2; 2849 } 2850 if (input.setSelectionRange) { 2851 return input.selectionStart; 2852 } 2853 } catch (e) { 2854 return 0; 2855 } 2856 }, 2857 setCaretPos = function (node, pos) { 2858 node = (typeof node === "string" || node instanceof String) ? options.ownerDocument.getElementById(node) : node; 2859 if (!node) { 2860 return false; 2861 } 2862 if (node.createTextRange) { 2863 var textRange = node.createTextRange(); 2864 textRange.collapse(true); 2865 textRange.moveEnd('character', pos); 2866 textRange.moveStart('character', pos); 2867 textRange.select(); 2868 return true; 2869 } 2870 if (node.setSelectionRange) { 2871 node.setSelectionRange(pos, pos); 2872 return true; 2873 } 2874 return false; 2875 }; 2876 2877 if(options.mask) { 2878 input.off('keydown.xdsoft'); 2879 } 2880 2881 if (options.mask === true) { 2882 if (dateHelper.formatMask) { 2883 options.mask = dateHelper.formatMask(options.format) 2884 } else { 2885 options.mask = options.format 2886 .replace(/Y/g, '9999') 2887 .replace(/F/g, '9999') 2888 .replace(/m/g, '19') 2889 .replace(/d/g, '39') 2890 .replace(/H/g, '29') 2891 .replace(/i/g, '59') 2892 .replace(/s/g, '59'); 2893 } 2894 } 2895 2896 if (typeof options.mask === 'string') { 2897 if (!isValidValue(options.mask, input.val())) { 2898 input.val(options.mask.replace(/[0-9]/g, '_')); 2899 setCaretPos(input[0], 0); 2900 } 2901 2902 input.on('paste.xdsoft', function (event) { 2903 // couple options here 2904 // 1. return false - tell them they can't paste 2905 // 2. insert over current characters - minimal validation 2906 // 3. full fledged parsing and validation 2907 // let's go option 2 for now 2908 2909 // fires multiple times for some reason 2910 2911 // https://stackoverflow.com/a/30496488/1366033 2912 var clipboardData = event.clipboardData || event.originalEvent.clipboardData || window.clipboardData, 2913 pastedData = clipboardData.getData('text'), 2914 val = this.value, 2915 pos = this.selectionStart 2916 2917 var valueBeforeCursor = val.substr(0, pos); 2918 var valueAfterPaste = val.substr(pos + pastedData.length); 2919 2920 val = valueBeforeCursor + pastedData + valueAfterPaste; 2921 pos += pastedData.length; 2922 2923 if (isValidValue(options.mask, val)) { 2924 this.value = val; 2925 setCaretPos(this, pos); 2926 } else if (val.trim() === '') { 2927 this.value = options.mask.replace(/[0-9]/g, '_'); 2928 } else { 2929 input.trigger('error_input.xdsoft'); 2930 } 2931 2932 event.preventDefault(); 2933 return false; 2934 }); 2935 2936 input.on('keydown.xdsoft', function (event) { 2937 var val = this.value, 2938 key = event.which, 2939 pos = this.selectionStart, 2940 selEnd = this.selectionEnd, 2941 hasSel = pos !== selEnd, 2942 digit; 2943 2944 // only alow these characters 2945 if (((key >= KEY0 && key <= KEY9) || 2946 (key >= _KEY0 && key <= _KEY9)) || 2947 (key === BACKSPACE || key === DEL)) { 2948 2949 // get char to insert which is new character or placeholder ('_') 2950 digit = (key === BACKSPACE || key === DEL) ? '_' : 2951 String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key); 2952 2953 // we're deleting something, we're not at the start, and have normal cursor, move back one 2954 // if we have a selection length, cursor actually sits behind deletable char, not in front 2955 if (key === BACKSPACE && pos && !hasSel) { 2956 pos -= 1; 2957 } 2958 2959 // don't stop on a separator, continue whatever direction you were going 2960 // value char - keep incrementing position while on separator char and we still have room 2961 // del char - keep decrementing position while on separator char and we still have room 2962 while (true) { 2963 var maskValueAtCurPos = options.mask.substr(pos, 1); 2964 var posShorterThanMaskLength = pos < options.mask.length; 2965 var posGreaterThanZero = pos > 0; 2966 var notNumberOrPlaceholder = /[^0-9_]/; 2967 var curPosOnSep = notNumberOrPlaceholder.test(maskValueAtCurPos); 2968 var continueMovingPosition = curPosOnSep && posShorterThanMaskLength && posGreaterThanZero 2969 2970 // if we hit a real char, stay where we are 2971 if (!continueMovingPosition) break; 2972 2973 // hitting backspace in a selection, you can possibly go back any further - go forward 2974 pos += (key === BACKSPACE && !hasSel) ? -1 : 1; 2975 2976 } 2977 2978 if (event.metaKey) { // cmd has been pressed 2979 pos = 0; 2980 hasSel = true; 2981 } 2982 2983 if (hasSel) { 2984 // pos might have moved so re-calc length 2985 var selLength = selEnd - pos 2986 2987 // if we have a selection length we will wipe out entire selection and replace with default template for that range 2988 var defaultBlank = options.mask.replace(/[0-9]/g, '_'); 2989 var defaultBlankSelectionReplacement = defaultBlank.substr(pos, selLength); 2990 var selReplacementRemainder = defaultBlankSelectionReplacement.substr(1) // might be empty 2991 2992 var valueBeforeSel = val.substr(0, pos); 2993 var insertChars = digit + selReplacementRemainder; 2994 var charsAfterSelection = val.substr(pos + selLength); 2995 2996 val = valueBeforeSel + insertChars + charsAfterSelection 2997 2998 } else { 2999 var valueBeforeCursor = val.substr(0, pos); 3000 var insertChar = digit; 3001 var valueAfterNextChar = val.substr(pos + 1); 3002 3003 val = valueBeforeCursor + insertChar + valueAfterNextChar 3004 } 3005 3006 if (val.trim() === '') { 3007 // if empty, set to default 3008 val = defaultBlank 3009 } else { 3010 // if at the last character don't need to do anything 3011 if (pos === options.mask.length) { 3012 event.preventDefault(); 3013 return false; 3014 } 3015 } 3016 3017 // resume cursor location 3018 pos += (key === BACKSPACE) ? 0 : 1; 3019 // don't stop on a separator, continue whatever direction you were going 3020 while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { 3021 pos += (key === BACKSPACE) ? 0 : 1; 3022 } 3023 3024 if (isValidValue(options.mask, val)) { 3025 this.value = val; 3026 setCaretPos(this, pos); 3027 } else if (val.trim() === '') { 3028 this.value = options.mask.replace(/[0-9]/g, '_'); 3029 } else { 3030 input.trigger('error_input.xdsoft'); 3031 } 3032 } else { 3033 if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) { 3034 return true; 3035 } 3036 } 3037 3038 event.preventDefault(); 3039 return false; 3040 }); 3041 } 3042 } 3043 3044 _xdsoft_datetime.setCurrentTime(getCurrentValue()); 3045 3046 input 3047 .data('xdsoft_datetimepicker', datetimepicker) 3048 .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () { 3049 if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) { 3050 return; 3051 } 3052 if (!options.openOnFocus) { 3053 return; 3054 } 3055 clearTimeout(timer); 3056 timer = setTimeout(function () { 3057 if (input.is(':disabled')) { 3058 return; 3059 } 3060 3061 triggerAfterOpen = true; 3062 _xdsoft_datetime.setCurrentTime(getCurrentValue(), true); 3063 if(options.mask) { 3064 setMask(options); 3065 } 3066 datetimepicker.trigger('open.xdsoft'); 3067 }, 100); 3068 }) 3069 .on('keydown.xdsoft', function (event) { 3070 var elementSelector, 3071 key = event.which; 3072 if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) { 3073 elementSelector = $("input:visible,textarea:visible,button:visible,a:visible"); 3074 datetimepicker.trigger('close.xdsoft'); 3075 elementSelector.eq(elementSelector.index(this) + 1).focus(); 3076 return false; 3077 } 3078 if ([TAB].indexOf(key) !== -1) { 3079 datetimepicker.trigger('close.xdsoft'); 3080 return true; 3081 } 3082 }) 3083 .on('blur.xdsoft', function () { 3084 datetimepicker.trigger('close.xdsoft'); 3085 }); 3086 }; 3087 destroyDateTimePicker = function (input) { 3088 var datetimepicker = input.data('xdsoft_datetimepicker'); 3089 if (datetimepicker) { 3090 datetimepicker.data('xdsoft_datetime', null); 3091 datetimepicker.remove(); 3092 input 3093 .data('xdsoft_datetimepicker', null) 3094 .off('.xdsoft'); 3095 $(options.contentWindow).off('resize.xdsoft'); 3096 $([options.contentWindow, options.ownerDocument.body]).off('mousedown.xdsoft touchstart'); 3097 if (input.unmousewheel) { 3098 input.unmousewheel(); 3099 } 3100 } 3101 }; 3102 $(options.ownerDocument) 3103 .off('keydown.xdsoftctrl keyup.xdsoftctrl') 3104 .off('keydown.xdsoftcmd keyup.xdsoftcmd') 3105 .on('keydown.xdsoftctrl', function (e) { 3106 if (e.keyCode === CTRLKEY) { 3107 ctrlDown = true; 3108 } 3109 }) 3110 .on('keyup.xdsoftctrl', function (e) { 3111 if (e.keyCode === CTRLKEY) { 3112 ctrlDown = false; 3113 } 3114 }) 3115 .on('keydown.xdsoftcmd', function (e) { 3116 if (e.keyCode === CMDKEY) { 3117 cmdDown = true; 3118 } 3119 }) 3120 .on('keyup.xdsoftcmd', function (e) { 3121 if (e.keyCode === CMDKEY) { 3122 cmdDown = false; 3123 } 3124 }); 3125 3126 this.each(function () { 3127 var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input; 3128 if (datetimepicker) { 3129 if (typeof opt === 'string') { 3130 switch (opt) { 3131 case 'show': 3132 $(this).select().focus(); 3133 datetimepicker.trigger('open.xdsoft'); 3134 break; 3135 case 'hide': 3136 datetimepicker.trigger('close.xdsoft'); 3137 break; 3138 case 'toggle': 3139 datetimepicker.trigger('toggle.xdsoft'); 3140 break; 3141 case 'destroy': 3142 destroyDateTimePicker($(this)); 3143 break; 3144 case 'reset': 3145 this.value = this.defaultValue; 3146 if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) { 3147 datetimepicker.data('changed', false); 3148 } 3149 datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value); 3150 break; 3151 case 'validate': 3152 $input = datetimepicker.data('input'); 3153 $input.trigger('blur.xdsoft'); 3154 break; 3155 default: 3156 if (datetimepicker[opt] && typeof datetimepicker[opt] === 'function') { 3157 result = datetimepicker[opt](opt2); 3158 } 3159 } 3160 } else { 3161 datetimepicker 3162 .setOptions(opt); 3163 } 3164 return 0; 3165 } 3166 if (typeof opt
vendor: 9,026 bytes, lines 3166-3422
3166 !== 'string') { 3167 if (!options.lazyInit || options.open || options.inline) { 3168 createDateTimePicker($(this)); 3169 } else { 3170 lazyInit($(this)); 3171 } 3172 } 3173 }); 3174 3175 return result; 3176 }; 3177 3178 $.fn.datetimepicker.defaults = default_options; 3179 3180 function HighlightedDate(date, desc, style) { 3181 "use strict"; 3182 this.date = date; 3183 this.desc = desc; 3184 this.style = style; 3185 } 3186}; 3187;(function (factory) { 3188 if ( typeof define === 'function' && define.amd ) { 3189 // AMD. Register as an anonymous module. 3190 define(['jquery', 'jquery-mousewheel'], factory); 3191 } else if (typeof exports === 'object') { 3192 // Node/CommonJS style for Browserify 3193 module.exports = factory(require('jquery'));; 3194 } else { 3195 // Browser globals 3196 factory(jQuery); 3197 } 3198}(datetimepickerFactory)); 3199 3200 3201 3202/*! 3203 * jQuery Mousewheel 3.1.13 3204 * 3205 * Copyright jQuery Foundation and other contributors 3206 * Released under the MIT license 3207 * http://jquery.org/license 3208 */ 3209 3210(function (factory) { 3211 if ( typeof define === 'function' && define.amd ) { 3212 // AMD. Register as an anonymous module. 3213 define(['jquery'], factory); 3214 } else if (typeof exports === 'object') { 3215 // Node/CommonJS style for Browserify 3216 module.exports = factory; 3217 } else { 3218 // Browser globals 3219 factory(jQuery); 3220 } 3221}(function ($) { 3222 3223 var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], 3224 toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? 3225 ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], 3226 slice = Array.prototype.slice, 3227 nullLowestDeltaTimeout, lowestDelta; 3228 3229 if ( $.event.fixHooks ) { 3230 for ( var i = toFix.length; i; ) { 3231 $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; 3232 } 3233 } 3234 3235 var special = $.event.special.mousewheel = { 3236 version: '3.1.12', 3237 3238 setup: function() { 3239 if ( this.addEventListener ) { 3240 for ( var i = toBind.length; i; ) { 3241 this.addEventListener( toBind[--i], handler, false ); 3242 } 3243 } else { 3244 this.onmousewheel = handler; 3245 } 3246 // Store the line height and page height for this particular element 3247 $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); 3248 $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); 3249 }, 3250 3251 teardown: function() { 3252 if ( this.removeEventListener ) { 3253 for ( var i = toBind.length; i; ) { 3254 this.removeEventListener( toBind[--i], handler, false ); 3255 } 3256 } else { 3257 this.onmousewheel = null; 3258 } 3259 // Clean up the data we added to the element 3260 $.removeData(this, 'mousewheel-line-height'); 3261 $.removeData(this, 'mousewheel-page-height'); 3262 }, 3263 3264 getLineHeight: function(elem) { 3265 var $elem = $(elem), 3266 $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); 3267 if (!$parent.length) { 3268 $parent = $('body'); 3269 } 3270 return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; 3271 }, 3272 3273 getPageHeight: function(elem) { 3274 return $(elem).height(); 3275 }, 3276 3277 settings: { 3278 adjustOldDeltas: true, // see shouldAdjustOldDeltas() below 3279 normalizeOffset: true // calls getBoundingClientRect for each event 3280 } 3281 }; 3282 3283 $.fn.extend({ 3284 mousewheel: function(fn) { 3285 return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); 3286 }, 3287 3288 unmousewheel: function(fn) { 3289 return this.unbind('mousewheel', fn); 3290 } 3291 }); 3292 3293 3294 function handler(event) { 3295 var orgEvent = event || window.event, 3296 args = slice.call(arguments, 1), 3297 delta = 0, 3298 deltaX = 0, 3299 deltaY = 0, 3300 absDelta = 0, 3301 offsetX = 0, 3302 offsetY = 0; 3303 event = $.event.fix(orgEvent); 3304 event.type = 'mousewheel'; 3305 3306 // Old school scrollwheel delta 3307 if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } 3308 if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } 3309 if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } 3310 if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } 3311 3312 // Firefox < 17 horizontal scrolling related to DOMMouseScroll event 3313 if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { 3314 deltaX = deltaY * -1; 3315 deltaY = 0; 3316 } 3317 3318 // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy 3319 delta = deltaY === 0 ? deltaX : deltaY; 3320 3321 // New school wheel delta (wheel event) 3322 if ( 'deltaY' in orgEvent ) { 3323 deltaY = orgEvent.deltaY * -1; 3324 delta = deltaY; 3325 } 3326 if ( 'deltaX' in orgEvent ) { 3327 deltaX = orgEvent.deltaX; 3328 if ( deltaY === 0 ) { delta = deltaX * -1; } 3329 } 3330 3331 // No change actually happened, no reason to go any further 3332 if ( deltaY === 0 && deltaX === 0 ) { return; } 3333 3334 // Need to convert lines and pages to pixels if we aren't already in pixels 3335 // There are three delta modes: 3336 // * deltaMode 0 is by pixels, nothing to do 3337 // * deltaMode 1 is by lines 3338 // * deltaMode 2 is by pages 3339 if ( orgEvent.deltaMode === 1 ) { 3340 var lineHeight = $.data(this, 'mousewheel-line-height'); 3341 delta *= lineHeight; 3342 deltaY *= lineHeight; 3343 deltaX *= lineHeight; 3344 } else if ( orgEvent.deltaMode === 2 ) { 3345 var pageHeight = $.data(this, 'mousewheel-page-height'); 3346 delta *= pageHeight; 3347 deltaY *= pageHeight; 3348 deltaX *= pageHeight; 3349 } 3350 3351 // Store lowest absolute delta to normalize the delta values 3352 absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); 3353 3354 if ( !lowestDelta || absDelta < lowestDelta ) { 3355 lowestDelta = absDelta; 3356 3357 // Adjust older deltas if necessary 3358 if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { 3359 lowestDelta /= 40; 3360 } 3361 } 3362 3363 // Adjust older deltas if necessary 3364 if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { 3365 // Divide all the things by 40! 3366 delta /= 40; 3367 deltaX /= 40; 3368 deltaY /= 40; 3369 } 3370 3371 // Get a whole, normalized value for the deltas 3372 delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); 3373 deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); 3374 deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); 3375 3376 // Normalise offsetX and offsetY properties 3377 if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { 3378 var boundingRect = this.getBoundingClientRect(); 3379 offsetX = event.clientX - boundingRect.left; 3380 offsetY = event.clientY - boundingRect.top; 3381 } 3382 3383 // Add information to the event object 3384 event.deltaX = deltaX; 3385 event.deltaY = deltaY; 3386 event.deltaFactor = lowestDelta; 3387 event.offsetX = offsetX; 3388 event.offsetY = offsetY; 3389 // Go ahead and set deltaMode to 0 since we converted to pixels 3390 // Although this is a little odd since we overwrite the deltaX/Y 3391 // properties with normalized deltas. 3392 event.deltaMode = 0; 3393 3394 // Add event and delta to the front of the arguments 3395 args.unshift(event, delta, deltaX, deltaY); 3396 3397 // Clearout lowestDelta after sometime to better 3398 // handle multiple device types that give different 3399 // a different lowestDelta 3400 // Ex: trackpad = 3 and mouse wheel = 120 3401 if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } 3402 nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); 3403 3404 return ($.event.dispatch || $.event.handle).apply(this, args); 3405 } 3406 3407 function nullLowestDelta() { 3408 lowestDelta = null; 3409 } 3410 3411 function shouldAdjustOldDeltas(orgEvent, absDelta) { 3412 // If this is an older event and the delta is divisable by 120, 3413 // then we are assuming that the browser is treating this as an 3414 // older mouse wheel event and that we should divide the deltas 3415 // by 40 to try and get a more usable deltaFactor. 3416 // Side note, this actually impacts the reported scroll distance 3417 // in older browsers and can cause scrolling to be slower than native. 3418 // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. 3419 return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; 3420 } 3421 3422}));
vendor: 285,622 bytes, lines 3423-11437
3423 3424/* End */ 3425; 3426; /* Start:"a:4:{s:4:"full";s:55:"/local/templates/ntk_new/lib/swiper.js?1719817022288320";s:6:"source";s:38:"/local/templates/ntk_new/lib/swiper.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 3427/** 3428 * Swiper 4.5.0 3429 * Most modern mobile touch slider and framework with hardware accelerated transitions 3430 * http://www.idangero.us/swiper/ 3431 * 3432 * Copyright 2014-2019 Vladimir Kharlampidi 3433 * 3434 * Released under the MIT License 3435 * 3436 * Released on: February 22, 2019 3437 */ 3438 3439(function (global, factory) { 3440 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 3441 typeof define === 'function' && define.amd ? define(factory) : 3442 (global = global || self, global.Swiper = factory()); 3443}(this, function () { 'use strict'; 3444 3445 /** 3446 * SSR Window 1.0.1 3447 * Better handling for window object in SSR environment 3448 * https://github.com/nolimits4web/ssr-window 3449 * 3450 * Copyright 2018, Vladimir Kharlampidi 3451 * 3452 * Licensed under MIT 3453 * 3454 * Released on: July 18, 2018 3455 */ 3456 var doc = (typeof document === 'undefined') ? { 3457 body: {}, 3458 addEventListener: function addEventListener() {}, 3459 removeEventListener: function removeEventListener() {}, 3460 activeElement: { 3461 blur: function blur() {}, 3462 nodeName: '', 3463 }, 3464 querySelector: function querySelector() { 3465 return null; 3466 }, 3467 querySelectorAll: function querySelectorAll() { 3468 return []; 3469 }, 3470 getElementById: function getElementById() { 3471 return null; 3472 }, 3473 createEvent: function createEvent() { 3474 return { 3475 initEvent: function initEvent() {}, 3476 }; 3477 }, 3478 createElement: function createElement() { 3479 return { 3480 children: [], 3481 childNodes: [], 3482 style: {}, 3483 setAttribute: function setAttribute() {}, 3484 getElementsByTagName: function getElementsByTagName() { 3485 return []; 3486 }, 3487 }; 3488 }, 3489 location: { hash: '' }, 3490 } : document; // eslint-disable-line 3491 3492 var win = (typeof window === 'undefined') ? { 3493 document: doc, 3494 navigator: { 3495 userAgent: '', 3496 }, 3497 location: {}, 3498 history: {}, 3499 CustomEvent: function CustomEvent() { 3500 return this; 3501 }, 3502 addEventListener: function addEventListener() {}, 3503 removeEventListener: function removeEventListener() {}, 3504 getComputedStyle: function getComputedStyle() { 3505 return { 3506 getPropertyValue: function getPropertyValue() { 3507 return ''; 3508 }, 3509 }; 3510 }, 3511 Image: function Image() {}, 3512 Date: function Date() {}, 3513 screen: {}, 3514 setTimeout: function setTimeout() {}, 3515 clearTimeout: function clearTimeout() {}, 3516 } : window; // eslint-disable-line 3517 3518 /** 3519 * Dom7 2.1.3 3520 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API 3521 * http://framework7.io/docs/dom.html 3522 * 3523 * Copyright 2019, Vladimir Kharlampidi 3524 * The iDangero.us 3525 * http://www.idangero.us/ 3526 * 3527 * Licensed under MIT 3528 * 3529 * Released on: February 11, 2019 3530 */ 3531 3532 var Dom7 = function Dom7(arr) { 3533 var self = this; 3534 // Create array-like object 3535 for (var i = 0; i < arr.length; i += 1) { 3536 self[i] = arr[i]; 3537 } 3538 self.length = arr.length; 3539 // Return collection with methods 3540 return this; 3541 }; 3542 3543 function $(selector, context) { 3544 var arr = []; 3545 var i = 0; 3546 if (selector && !context) { 3547 if (selector instanceof Dom7) { 3548 return selector; 3549 } 3550 } 3551 if (selector) { 3552 // String 3553 if (typeof selector === 'string') { 3554 var els; 3555 var tempParent; 3556 var html = selector.trim(); 3557 if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { 3558 var toCreate = 'div'; 3559 if (html.indexOf('<li') === 0) { toCreate = 'ul'; } 3560 if (html.indexOf('<tr') === 0) { toCreate = 'tbody'; } 3561 if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) { toCreate = 'tr'; } 3562 if (html.indexOf('<tbody') === 0) { toCreate = 'table'; } 3563 if (html.indexOf('<option') === 0) { toCreate = 'select'; } 3564 tempParent = doc.createElement(toCreate); 3565 tempParent.innerHTML = html; 3566 for (i = 0; i < tempParent.childNodes.length; i += 1) { 3567 arr.push(tempParent.childNodes[i]); 3568 } 3569 } else { 3570 if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) { 3571 // Pure ID selector 3572 els = [doc.getElementById(selector.trim().split('#')[1])]; 3573 } else { 3574 // Other selectors 3575 els = (context || doc).querySelectorAll(selector.trim()); 3576 } 3577 for (i = 0; i < els.length; i += 1) { 3578 if (els[i]) { arr.push(els[i]); } 3579 } 3580 } 3581 } else if (selector.nodeType || selector === win || selector === doc) { 3582 // Node/element 3583 arr.push(selector); 3584 } else if (selector.length > 0 && selector[0].nodeType) { 3585 // Array of elements or instance of Dom 3586 for (i = 0; i < selector.length; i += 1) { 3587 arr.push(selector[i]); 3588 } 3589 } 3590 } 3591 return new Dom7(arr); 3592 } 3593 3594 $.fn = Dom7.prototype; 3595 $.Class = Dom7; 3596 $.Dom7 = Dom7; 3597 3598 function unique(arr) { 3599 var uniqueArray = []; 3600 for (var i = 0; i < arr.length; i += 1) { 3601 if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); } 3602 } 3603 return uniqueArray; 3604 } 3605 3606 // Classes and attributes 3607 function addClass(className) { 3608 if (typeof className === 'undefined') { 3609 return this; 3610 } 3611 var classes = className.split(' '); 3612 for (var i = 0; i < classes.length; i += 1) { 3613 for (var j = 0; j < this.length; j += 1) { 3614 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); } 3615 } 3616 } 3617 return this; 3618 } 3619 function removeClass(className) { 3620 var classes = className.split(' '); 3621 for (var i = 0; i < classes.length; i += 1) { 3622 for (var j = 0; j < this.length; j += 1) { 3623 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); } 3624 } 3625 } 3626 return this; 3627 } 3628 function hasClass(className) { 3629 if (!this[0]) { return false; } 3630 return this[0].classList.contains(className); 3631 } 3632 function toggleClass(className) { 3633 var classes = className.split(' '); 3634 for (var i = 0; i < classes.length; i += 1) { 3635 for (var j = 0; j < this.length; j += 1) { 3636 if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); } 3637 } 3638 } 3639 return this; 3640 } 3641 function attr(attrs, value) { 3642 var arguments$1 = arguments; 3643 3644 if (arguments.length === 1 && typeof attrs === 'string') { 3645 // Get attr 3646 if (this[0]) { return this[0].getAttribute(attrs); } 3647 return undefined; 3648 } 3649 3650 // Set attrs 3651 for (var i = 0; i < this.length; i += 1) { 3652 if (arguments$1.length === 2) { 3653 // String 3654 this[i].setAttribute(attrs, value); 3655 } else { 3656 // Object 3657 // eslint-disable-next-line 3658 for (var attrName in attrs) { 3659 this[i][attrName] = attrs[attrName]; 3660 this[i].setAttribute(attrName, attrs[attrName]); 3661 } 3662 } 3663 } 3664 return this; 3665 } 3666 // eslint-disable-next-line 3667 function removeAttr(attr) { 3668 for (var i = 0; i < this.length; i += 1) { 3669 this[i].removeAttribute(attr); 3670 } 3671 return this; 3672 } 3673 function data(key, value) { 3674 var el; 3675 if (typeof value === 'undefined') { 3676 el = this[0]; 3677 // Get value 3678 if (el) { 3679 if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) { 3680 return el.dom7ElementDataStorage[key]; 3681 } 3682 3683 var dataKey = el.getAttribute(("data-" + key)); 3684 if (dataKey) { 3685 return dataKey; 3686 } 3687 return undefined; 3688 } 3689 return undefined; 3690 } 3691 3692 // Set value 3693 for (var i = 0; i < this.length; i += 1) { 3694 el = this[i]; 3695 if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; } 3696 el.dom7ElementDataStorage[key] = value; 3697 } 3698 return this; 3699 } 3700 // Transforms 3701 // eslint-disable-next-line 3702 function transform(transform) { 3703 for (var i = 0; i < this.length; i += 1) { 3704 var elStyle = this[i].style; 3705 elStyle.webkitTransform = transform; 3706 elStyle.transform = transform; 3707 } 3708 return this; 3709 } 3710 function transition(duration) { 3711 if (typeof duration !== 'string') { 3712 duration = duration + "ms"; // eslint-disable-line 3713 } 3714 for (var i = 0; i < this.length; i += 1) { 3715 var elStyle = this[i].style; 3716 elStyle.webkitTransitionDuration = duration; 3717 elStyle.transitionDuration = duration; 3718 } 3719 return this; 3720 } 3721 // Events 3722 function on() { 3723 var assign; 3724 3725 var args = [], len = arguments.length; 3726 while ( len-- ) args[ len ] = arguments[ len ]; 3727 var eventType = args[0]; 3728 var targetSelector = args[1]; 3729 var listener = args[2]; 3730 var capture = args[3]; 3731 if (typeof args[1] === 'function') { 3732 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 3733 targetSelector = undefined; 3734 } 3735 if (!capture) { capture = false; } 3736 3737 function handleLiveEvent(e) { 3738 var target = e.target; 3739 if (!target) { return; } 3740 var eventData = e.target.dom7EventData || []; 3741 if (eventData.indexOf(e) < 0) { 3742 eventData.unshift(e); 3743 } 3744 if ($(target).is(targetSelector)) { listener.apply(target, eventData); } 3745 else { 3746 var parents = $(target).parents(); // eslint-disable-line 3747 for (var k = 0; k < parents.length; k += 1) { 3748 if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); } 3749 } 3750 } 3751 } 3752 function handleEvent(e) { 3753 var eventData = e && e.target ? e.target.dom7EventData || [] : []; 3754 if (eventData.indexOf(e) < 0) { 3755 eventData.unshift(e); 3756 } 3757 listener.apply(this, eventData); 3758 } 3759 var events = eventType.split(' '); 3760 var j; 3761 for (var i = 0; i < this.length; i += 1) { 3762 var el = this[i]; 3763 if (!targetSelector) { 3764 for (j = 0; j < events.length; j += 1) { 3765 var event = events[j]; 3766 if (!el.dom7Listeners) { el.dom7Listeners = {}; } 3767 if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; } 3768 el.dom7Listeners[event].push({ 3769 listener: listener, 3770 proxyListener: handleEvent, 3771 }); 3772 el.addEventListener(event, handleEvent, capture); 3773 } 3774 } else { 3775 // Live events 3776 for (j = 0; j < events.length; j += 1) { 3777 var event$1 = events[j]; 3778 if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; } 3779 if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; } 3780 el.dom7LiveListeners[event$1].push({ 3781 listener: listener, 3782 proxyListener: handleLiveEvent, 3783 }); 3784 el.addEventListener(event$1, handleLiveEvent, capture); 3785 } 3786 } 3787 } 3788 return this; 3789 } 3790 function off() { 3791 var assign; 3792 3793 var args = [], len = arguments.length; 3794 while ( len-- ) args[ len ] = arguments[ len ]; 3795 var eventType = args[0]; 3796 var targetSelector = args[1]; 3797 var listener = args[2]; 3798 var capture = args[3]; 3799 if (typeof args[1] === 'function') { 3800 (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]); 3801 targetSelector = undefined; 3802 } 3803 if (!capture) { capture = false; } 3804 3805 var events = eventType.split(' '); 3806 for (var i = 0; i < events.length; i += 1) { 3807 var event = events[i]; 3808 for (var j = 0; j < this.length; j += 1) { 3809 var el = this[j]; 3810 var handlers = (void 0); 3811 if (!targetSelector && el.dom7Listeners) { 3812 handlers = el.dom7Listeners[event]; 3813 } else if (targetSelector && el.dom7LiveListeners) { 3814 handlers = el.dom7LiveListeners[event]; 3815 } 3816 if (handlers && handlers.length) { 3817 for (var k = handlers.length - 1; k >= 0; k -= 1) { 3818 var handler = handlers[k]; 3819 if (listener && handler.listener === listener) { 3820 el.removeEventListener(event, handler.proxyListener, capture); 3821 handlers.splice(k, 1); 3822 } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { 3823 el.removeEventListener(event, handler.proxyListener, capture); 3824 handlers.splice(k, 1); 3825 } else if (!listener) { 3826 el.removeEventListener(event, handler.proxyListener, capture); 3827 handlers.splice(k, 1); 3828 } 3829 } 3830 } 3831 } 3832 } 3833 return this; 3834 } 3835 function trigger() { 3836 var args = [], len = arguments.length; 3837 while ( len-- ) args[ len ] = arguments[ len ]; 3838 3839 var events = args[0].split(' '); 3840 var eventData = args[1]; 3841 for (var i = 0; i < events.length; i += 1) { 3842 var event = events[i]; 3843 for (var j = 0; j < this.length; j += 1) { 3844 var el = this[j]; 3845 var evt = (void 0); 3846 try { 3847 evt = new win.CustomEvent(event, { 3848 detail: eventData, 3849 bubbles: true, 3850 cancelable: true, 3851 }); 3852 } catch (e) { 3853 evt = doc.createEvent('Event'); 3854 evt.initEvent(event, true, true); 3855 evt.detail = eventData; 3856 } 3857 // eslint-disable-next-line 3858 el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; }); 3859 el.dispatchEvent(evt); 3860 el.dom7EventData = []; 3861 delete el.dom7EventData; 3862 } 3863 } 3864 return this; 3865 } 3866 function transitionEnd(callback) { 3867 var events = ['webkitTransitionEnd', 'transitionend']; 3868 var dom = this; 3869 var i; 3870 function fireCallBack(e) { 3871 /* jshint validthis:true */ 3872 if (e.target !== this) { return; } 3873 callback.call(this, e); 3874 for (i = 0; i < events.length; i += 1) { 3875 dom.off(events[i], fireCallBack); 3876 } 3877 } 3878 if (callback) { 3879 for (i = 0; i < events.length; i += 1) { 3880 dom.on(events[i], fireCallBack); 3881 } 3882 } 3883 return this; 3884 } 3885 function outerWidth(includeMargins) { 3886 if (this.length > 0) { 3887 if (includeMargins) { 3888 // eslint-disable-next-line 3889 var styles = this.styles(); 3890 return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); 3891 } 3892 return this[0].offsetWidth; 3893 } 3894 return null; 3895 } 3896 function outerHeight(includeMargins) { 3897 if (this.length > 0) { 3898 if (includeMargins) { 3899 // eslint-disable-next-line 3900 var styles = this.styles(); 3901 return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); 3902 } 3903 return this[0].offsetHeight; 3904 } 3905 return null; 3906 } 3907 function offset() { 3908 if (this.length > 0) { 3909 var el = this[0]; 3910 var box = el.getBoundingClientRect(); 3911 var body = doc.body; 3912 var clientTop = el.clientTop || body.clientTop || 0; 3913 var clientLeft = el.clientLeft || body.clientLeft || 0; 3914 var scrollTop = el === win ? win.scrollY : el.scrollTop; 3915 var scrollLeft = el === win ? win.scrollX : el.scrollLeft; 3916 return { 3917 top: (box.top + scrollTop) - clientTop, 3918 left: (box.left + scrollLeft) - clientLeft, 3919 }; 3920 } 3921 3922 return null; 3923 } 3924 function styles() { 3925 if (this[0]) { return win.getComputedStyle(this[0], null); } 3926 return {}; 3927 } 3928 function css(props, value) { 3929 var i; 3930 if (arguments.length === 1) { 3931 if (typeof props === 'string') { 3932 if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); } 3933 } else { 3934 for (i = 0; i < this.length; i += 1) { 3935 // eslint-disable-next-line 3936 for (var prop in props) { 3937 this[i].style[prop] = props[prop]; 3938 } 3939 } 3940 return this; 3941 } 3942 } 3943 if (arguments.length === 2 && typeof props === 'string') { 3944 for (i = 0; i < this.length; i += 1) { 3945 this[i].style[props] = value; 3946 } 3947 return this; 3948 } 3949 return this; 3950 } 3951 // Iterate over the collection passing elements to `callback` 3952 function each(callback) { 3953 // Don't bother continuing without a callback 3954 if (!callback) { return this; } 3955 // Iterate over the current collection 3956 for (var i = 0; i < this.length; i += 1) { 3957 // If the callback returns false 3958 if (callback.call(this[i], i, this[i]) === false) { 3959 // End the loop early 3960 return this; 3961 } 3962 } 3963 // Return `this` to allow chained DOM operations 3964 return this; 3965 } 3966 // eslint-disable-next-line 3967 function html(html) { 3968 if (typeof html === 'undefined') { 3969 return this[0] ? this[0].innerHTML : undefined; 3970 } 3971 3972 for (var i = 0; i < this.length; i += 1) { 3973 this[i].innerHTML = html; 3974 } 3975 return this; 3976 } 3977 // eslint-disable-next-line 3978 function text(text) { 3979 if (typeof text === 'undefined') { 3980 if (this[0]) { 3981 return this[0].textContent.trim(); 3982 } 3983 return null; 3984 } 3985 3986 for (var i = 0; i < this.length; i += 1) { 3987 this[i].textContent = text; 3988 } 3989 return this; 3990 } 3991 function is(selector) { 3992 var el = this[0]; 3993 var compareWith; 3994 var i; 3995 if (!el || typeof selector === 'undefined') { return false; } 3996 if (typeof selector === 'string') { 3997 if (el.matches) { return el.matches(selector); } 3998 else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); } 3999 else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); } 4000 4001 compareWith = $(selector); 4002 for (i = 0; i < compareWith.length; i += 1) { 4003 if (compareWith[i] === el) { return true; } 4004 } 4005 return false; 4006 } else if (selector === doc) { return el === doc; } 4007 else if (selector === win) { return el === win; } 4008 4009 if (selector.nodeType || selector instanceof Dom7) { 4010 compareWith = selector.nodeType ? [selector] : selector; 4011 for (i = 0; i < compareWith.length; i += 1) { 4012 if (compareWith[i] === el) { return true; } 4013 } 4014 return false; 4015 } 4016 return false; 4017 } 4018 function index() { 4019 var child = this[0]; 4020 var i; 4021 if (child) { 4022 i = 0; 4023 // eslint-disable-next-line 4024 while ((child = child.previousSibling) !== null) { 4025 if (child.nodeType === 1) { i += 1; } 4026 } 4027 return i; 4028 } 4029 return undefined; 4030 } 4031 // eslint-disable-next-line 4032 function eq(index) { 4033 if (typeof index === 'undefined') { return this; } 4034 var length = this.length; 4035 var returnIndex; 4036 if (index > length - 1) { 4037 return new Dom7([]); 4038 } 4039 if (index < 0) { 4040 returnIndex = length + index; 4041 if (returnIndex < 0) { return new Dom7([]); } 4042 return new Dom7([this[returnIndex]]); 4043 } 4044 return new Dom7([this[index]]); 4045 } 4046 function append() { 4047 var args = [], len = arguments.length; 4048 while ( len-- ) args[ len ] = arguments[ len ]; 4049 4050 var newChild; 4051 4052 for (var k = 0; k < args.length; k += 1) { 4053 newChild = args[k]; 4054 for (var i = 0; i < this.length; i += 1) { 4055 if (typeof newChild === 'string') { 4056 var tempDiv = doc.createElement('div'); 4057 tempDiv.innerHTML = newChild; 4058 while (tempDiv.firstChild) { 4059 this[i].appendChild(tempDiv.firstChild); 4060 } 4061 } else if (newChild instanceof Dom7) { 4062 for (var j = 0; j < newChild.length; j += 1) { 4063 this[i].appendChild(newChild[j]); 4064 } 4065 } else { 4066 this[i].appendChild(newChild); 4067 } 4068 } 4069 } 4070 4071 return this; 4072 } 4073 function prepend(newChild) { 4074 var i; 4075 var j; 4076 for (i = 0; i < this.length; i += 1) { 4077 if (typeof newChild === 'string') { 4078 var tempDiv = doc.createElement('div'); 4079 tempDiv.innerHTML = newChild; 4080 for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { 4081 this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); 4082 } 4083 } else if (newChild instanceof Dom7) { 4084 for (j = 0; j < newChild.length; j += 1) { 4085 this[i].insertBefore(newChild[j], this[i].childNodes[0]); 4086 } 4087 } else { 4088 this[i].insertBefore(newChild, this[i].childNodes[0]); 4089 } 4090 } 4091 return this; 4092 } 4093 function next(selector) { 4094 if (this.length > 0) { 4095 if (selector) { 4096 if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { 4097 return new Dom7([this[0].nextElementSibling]); 4098 } 4099 return new Dom7([]); 4100 } 4101 4102 if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); } 4103 return new Dom7([]); 4104 } 4105 return new Dom7([]); 4106 } 4107 function nextAll(selector) { 4108 var nextEls = []; 4109 var el = this[0]; 4110 if (!el) { return new Dom7([]); } 4111 while (el.nextElementSibling) { 4112 var next = el.nextElementSibling; // eslint-disable-line 4113 if (selector) { 4114 if ($(next).is(selector)) { nextEls.push(next); } 4115 } else { nextEls.push(next); } 4116 el = next; 4117 } 4118 return new Dom7(nextEls); 4119 } 4120 function prev(selector) { 4121 if (this.length > 0) { 4122 var el = this[0]; 4123 if (selector) { 4124 if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { 4125 return new Dom7([el.previousElementSibling]); 4126 } 4127 return new Dom7([]); 4128 } 4129 4130 if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); } 4131 return new Dom7([]); 4132 } 4133 return new Dom7([]); 4134 } 4135 function prevAll(selector) { 4136 var prevEls = []; 4137 var el = this[0]; 4138 if (!el) { return new Dom7([]); } 4139 while (el.previousElementSibling) { 4140 var prev = el.previousElementSibling; // eslint-disable-line 4141 if (selector) { 4142 if ($(prev).is(selector)) { prevEls.push(prev); } 4143 } else { prevEls.push(prev); } 4144 el = prev; 4145 } 4146 return new Dom7(prevEls); 4147 } 4148 function parent(selector) { 4149 var parents = []; // eslint-disable-line 4150 for (var i = 0; i < this.length; i += 1) { 4151 if (this[i].parentNode !== null) { 4152 if (selector) { 4153 if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); } 4154 } else { 4155 parents.push(this[i].parentNode); 4156 } 4157 } 4158 } 4159 return $(unique(parents)); 4160 } 4161 function parents(selector) { 4162 var parents = []; // eslint-disable-line 4163 for (var i = 0; i < this.length; i += 1) { 4164 var parent = this[i].parentNode; // eslint-disable-line 4165 while (parent) { 4166 if (selector) { 4167 if ($(parent).is(selector)) { parents.push(parent); } 4168 } else { 4169 parents.push(parent); 4170 } 4171 parent = parent.parentNode; 4172 } 4173 } 4174 return $(unique(parents)); 4175 } 4176 function closest(selector) { 4177 var closest = this; // eslint-disable-line 4178 if (typeof selector === 'undefined') { 4179 return new Dom7([]); 4180 } 4181 if (!closest.is(selector)) { 4182 closest = closest.parents(selector).eq(0); 4183 } 4184 return closest; 4185 } 4186 function find(selector) { 4187 var foundElements = []; 4188 for (var i = 0; i < this.length; i += 1) { 4189 var found = this[i].querySelectorAll(selector); 4190 for (var j = 0; j < found.length; j += 1) { 4191 foundElements.push(found[j]); 4192 } 4193 } 4194 return new Dom7(foundElements); 4195 } 4196 function children(selector) { 4197 var children = []; // eslint-disable-line 4198 for (var i = 0; i < this.length; i += 1) { 4199 var childNodes = this[i].childNodes; 4200 4201 for (var j = 0; j < childNodes.length; j += 1) { 4202 if (!selector) { 4203 if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); } 4204 } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) { 4205 children.push(childNodes[j]); 4206 } 4207 } 4208 } 4209 return new Dom7(unique(children)); 4210 } 4211 function remove() { 4212 for (var i = 0; i < this.length; i += 1) { 4213 if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); } 4214 } 4215 return this; 4216 } 4217 function add() { 4218 var args = [], len = arguments.length; 4219 while ( len-- ) args[ len ] = arguments[ len ]; 4220 4221 var dom = this; 4222 var i; 4223 var j; 4224 for (i = 0; i < args.length; i += 1) { 4225 var toAdd = $(args[i]); 4226 for (j = 0; j < toAdd.length; j += 1) { 4227 dom[dom.length] = toAdd[j]; 4228 dom.length += 1; 4229 } 4230 } 4231 return dom; 4232 } 4233 4234 var Methods = { 4235 addClass: addClass, 4236 removeClass: removeClass, 4237 hasClass: hasClass, 4238 toggleClass: toggleClass, 4239 attr: attr, 4240 removeAttr: removeAttr, 4241 data: data, 4242 transform: transform, 4243 transition: transition, 4244 on: on, 4245 off: off, 4246 trigger: trigger, 4247 transitionEnd: transitionEnd, 4248 outerWidth: outerWidth, 4249 outerHeight: outerHeight, 4250 offset: offset, 4251 css: css, 4252 each: each, 4253 html: html, 4254 text: text, 4255 is: is, 4256 index: index, 4257 eq: eq, 4258 append: append, 4259 prepend: prepend, 4260 next: next, 4261 nextAll: nextAll, 4262 prev: prev, 4263 prevAll: prevAll, 4264 parent: parent, 4265 parents: parents, 4266 closest: closest, 4267 find: find, 4268 children: children, 4269 remove: remove, 4270 add: add, 4271 styles: styles, 4272 }; 4273 4274 Object.keys(Methods).forEach(function (methodName) { 4275 $.fn[methodName] = Methods[methodName]; 4276 }); 4277 4278 var Utils = { 4279 deleteProps: function deleteProps(obj) { 4280 var object = obj; 4281 Object.keys(object).forEach(function (key) { 4282 try { 4283 object[key] = null; 4284 } catch (e) { 4285 // no getter for object 4286 } 4287 try { 4288 delete object[key]; 4289 } catch (e) { 4290 // something got wrong 4291 } 4292 }); 4293 }, 4294 nextTick: function nextTick(callback, delay) { 4295 if ( delay === void 0 ) delay = 0; 4296 4297 return setTimeout(callback, delay); 4298 }, 4299 now: function now() { 4300 return Date.now(); 4301 }, 4302 getTranslate: function getTranslate(el, axis) { 4303 if ( axis === void 0 ) axis = 'x'; 4304 4305 var matrix; 4306 var curTransform; 4307 var transformMatrix; 4308 4309 var curStyle = win.getComputedStyle(el, null); 4310 4311 if (win.WebKitCSSMatrix) { 4312 curTransform = curStyle.transform || curStyle.webkitTransform; 4313 if (curTransform.split(',').length > 6) { 4314 curTransform = curTransform.split(', ').map(function (a) { return a.replace(',', '.'); }).join(', '); 4315 } 4316 // Some old versions of Webkit choke when 'none' is passed; pass 4317 // empty string instead in this case 4318 transformMatrix = new win.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 4319 } else { 4320 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 4321 matrix = transformMatrix.toString().split(','); 4322 } 4323 4324 if (axis === 'x') { 4325 // Latest Chrome and webkits Fix 4326 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m41; } 4327 // Crazy IE10 Matrix 4328 else if (matrix.length === 16) { curTransform = parseFloat(matrix[12]); } 4329 // Normal Browsers 4330 else { curTransform = parseFloat(matrix[4]); } 4331 } 4332 if (axis === 'y') { 4333 // Latest Chrome and webkits Fix 4334 if (win.WebKitCSSMatrix) { curTransform = transformMatrix.m42; } 4335 // Crazy IE10 Matrix 4336 else if (matrix.length === 16) { curTransform = parseFloat(matrix[13]); } 4337 // Normal Browsers 4338 else { curTransform = parseFloat(matrix[5]); } 4339 } 4340 return curTransform || 0; 4341 }, 4342 parseUrlQuery: function parseUrlQuery(url) { 4343 var query = {}; 4344 var urlToParse = url || win.location.href; 4345 var i; 4346 var params; 4347 var param; 4348 var length; 4349 if (typeof urlToParse === 'string' && urlToParse.length) { 4350 urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : ''; 4351 params = urlToParse.split('&').filter(function (paramsPart) { return paramsPart !== ''; }); 4352 length = params.length; 4353 4354 for (i = 0; i < length; i += 1) { 4355 param = params[i].replace(/#\S+/g, '').split('='); 4356 query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || ''; 4357 } 4358 } 4359 return query; 4360 }, 4361 isObject: function isObject(o) { 4362 return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object; 4363 }, 4364 extend: function extend() { 4365 var args = [], len$1 = arguments.length; 4366 while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ]; 4367 4368 var to = Object(args[0]); 4369 for (var i = 1; i < args.length; i += 1) { 4370 var nextSource = args[i]; 4371 if (nextSource !== undefined && nextSource !== null) { 4372 var keysArray = Object.keys(Object(nextSource)); 4373 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 4374 var nextKey = keysArray[nextIndex]; 4375 var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 4376 if (desc !== undefined && desc.enumerable) { 4377 if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 4378 Utils.extend(to[nextKey], nextSource[nextKey]); 4379 } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) { 4380 to[nextKey] = {}; 4381 Utils.extend(to[nextKey], nextSource[nextKey]); 4382 } else { 4383 to[nextKey] = nextSource[nextKey]; 4384 } 4385 } 4386 } 4387 } 4388 } 4389 return to; 4390 }, 4391 }; 4392 4393 var Support = (function Support() { 4394 var testDiv = doc.createElement('div'); 4395 return { 4396 touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() { 4397 return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)); 4398 }()), 4399 4400 pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)), 4401 prefixedPointerEvents: !!win.navigator.msPointerEnabled, 4402 4403 transition: (function checkTransition() { 4404 var style = testDiv.style; 4405 return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style); 4406 }()), 4407 transforms3d: (win.Modernizr && win.Modernizr.csstransforms3d === true) || (function checkTransforms3d() { 4408 var style = testDiv.style; 4409 return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style); 4410 }()), 4411 4412 flexbox: (function checkFlexbox() { 4413 var style = testDiv.style; 4414 var styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); 4415 for (var i = 0; i < styles.length; i += 1) { 4416 if (styles[i] in style) { return true; } 4417 } 4418 return false; 4419 }()), 4420 4421 observer: (function checkObserver() { 4422 return ('MutationObserver' in win || 'WebkitMutationObserver' in win); 4423 }()), 4424 4425 passiveListener: (function checkPassiveListener() { 4426 var supportsPassive = false; 4427 try { 4428 var opts = Object.defineProperty({}, 'passive', { 4429 // eslint-disable-next-line 4430 get: function get() { 4431 supportsPassive = true; 4432 }, 4433 }); 4434 win.addEventListener('testPassiveListener', null, opts); 4435 } catch (e) { 4436 // No support 4437 } 4438 return supportsPassive; 4439 }()), 4440 4441 gestures: (function checkGestures() { 4442 return 'ongesturestart' in win; 4443 }()), 4444 }; 4445 }()); 4446 4447 var Browser = (function Browser() { 4448 function isSafari() { 4449 var ua = win.navigator.userAgent.toLowerCase(); 4450 return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0); 4451 } 4452 return { 4453 isIE: !!win.navigator.userAgent.match(/Trident/g) || !!win.navigator.userAgent.match(/MSIE/g), 4454 isEdge: !!win.navigator.userAgent.match(/Edge/g), 4455 isSafari: isSafari(), 4456 isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent), 4457 }; 4458 }()); 4459 4460 var SwiperClass = function SwiperClass(params) { 4461 if ( params === void 0 ) params = {}; 4462 4463 var self = this; 4464 self.params = params; 4465 4466 // Events 4467 self.eventsListeners = {}; 4468 4469 if (self.params && self.params.on) { 4470 Object.keys(self.params.on).forEach(function (eventName) { 4471 self.on(eventName, self.params.on[eventName]); 4472 }); 4473 } 4474 }; 4475 4476 var staticAccessors = { components: { configurable: true } }; 4477 4478 SwiperClass.prototype.on = function on (events, handler, priority) { 4479 var self = this; 4480 if (typeof handler !== 'function') { return self; } 4481 var method = priority ? 'unshift' : 'push'; 4482 events.split(' ').forEach(function (event) { 4483 if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; } 4484 self.eventsListeners[event][method](handler); 4485 }); 4486 return self; 4487 }; 4488 4489 SwiperClass.prototype.once = function once (events, handler, priority) { 4490 var self = this; 4491 if (typeof handler !== 'function') { return self; } 4492 function onceHandler() { 4493 var args = [], len = arguments.length; 4494 while ( len-- ) args[ len ] = arguments[ len ]; 4495 4496 handler.apply(self, args); 4497 self.off(events, onceHandler); 4498 if (onceHandler.f7proxy) { 4499 delete onceHandler.f7proxy; 4500 } 4501 } 4502 onceHandler.f7proxy = handler; 4503 return self.on(events, onceHandler, priority); 4504 }; 4505 4506 SwiperClass.prototype.off = function off (events, handler) { 4507 var self = this; 4508 if (!self.eventsListeners) { return self; } 4509 events.split(' ').forEach(function (event) { 4510 if (typeof handler === 'undefined') { 4511 self.eventsListeners[event] = []; 4512 } else if (self.eventsListeners[event] && self.eventsListeners[event].length) { 4513 self.eventsListeners[event].forEach(function (eventHandler, index) { 4514 if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) { 4515 self.eventsListeners[event].splice(index, 1); 4516 } 4517 }); 4518 } 4519 }); 4520 return self; 4521 }; 4522 4523 SwiperClass.prototype.emit = function emit () { 4524 var args = [], len = arguments.length; 4525 while ( len-- ) args[ len ] = arguments[ len ]; 4526 4527 var self = this; 4528 if (!self.eventsListeners) { return self; } 4529 var events; 4530 var data; 4531 var context; 4532 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 4533 events = args[0]; 4534 data = args.slice(1, args.length); 4535 context = self; 4536 } else { 4537 events = args[0].events; 4538 data = args[0].data; 4539 context = args[0].context || self; 4540 } 4541 var eventsArray = Array.isArray(events) ? events : events.split(' '); 4542 eventsArray.forEach(function (event) { 4543 if (self.eventsListeners && self.eventsListeners[event]) { 4544 var handlers = []; 4545 self.eventsListeners[event].forEach(function (eventHandler) { 4546 handlers.push(eventHandler); 4547 }); 4548 handlers.forEach(function (eventHandler) { 4549 eventHandler.apply(context, data); 4550 }); 4551 } 4552 }); 4553 return self; 4554 }; 4555 4556 SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) { 4557 var instance = this; 4558 if (!instance.modules) { return; } 4559 Object.keys(instance.modules).forEach(function (moduleName) { 4560 var module = instance.modules[moduleName]; 4561 // Extend params 4562 if (module.params) { 4563 Utils.extend(instanceParams, module.params); 4564 } 4565 }); 4566 }; 4567 4568 SwiperClass.prototype.useModules = function useModules (modulesParams) { 4569 if ( modulesParams === void 0 ) modulesParams = {}; 4570 4571 var instance = this; 4572 if (!instance.modules) { return; } 4573 Object.keys(instance.modules).forEach(function (moduleName) { 4574 var module = instance.modules[moduleName]; 4575 var moduleParams = modulesParams[moduleName] || {}; 4576 // Extend instance methods and props 4577 if (module.instance) { 4578 Object.keys(module.instance).forEach(function (modulePropName) { 4579 var moduleProp = module.instance[modulePropName]; 4580 if (typeof moduleProp === 'function') { 4581 instance[modulePropName] = moduleProp.bind(instance); 4582 } else { 4583 instance[modulePropName] = moduleProp; 4584 } 4585 }); 4586 } 4587 // Add event listeners 4588 if (module.on && instance.on) { 4589 Object.keys(module.on).forEach(function (moduleEventName) { 4590 instance.on(moduleEventName, module.on[moduleEventName]); 4591 }); 4592 } 4593 4594 // Module create callback 4595 if (module.create) { 4596 module.create.bind(instance)(moduleParams); 4597 } 4598 }); 4599 }; 4600 4601 staticAccessors.components.set = function (components) { 4602 var Class = this; 4603 if (!Class.use) { return; } 4604 Class.use(components); 4605 }; 4606 4607 SwiperClass.installModule = function installModule (module) { 4608 var params = [], len = arguments.length - 1; 4609 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 4610 4611 var Class = this; 4612 if (!Class.prototype.modules) { Class.prototype.modules = {}; } 4613 var name = module.name || (((Object.keys(Class.prototype.modules).length) + "_" + (Utils.now()))); 4614 Class.prototype.modules[name] = module; 4615 // Prototype 4616 if (module.proto) { 4617 Object.keys(module.proto).forEach(function (key) { 4618 Class.prototype[key] = module.proto[key]; 4619 }); 4620 } 4621 // Class 4622 if (module.static) { 4623 Object.keys(module.static).forEach(function (key) { 4624 Class[key] = module.static[key]; 4625 }); 4626 } 4627 // Callback 4628 if (module.install) { 4629 module.install.apply(Class, params); 4630 } 4631 return Class; 4632 }; 4633 4634 SwiperClass.use = function use (module) { 4635 var params = [], len = arguments.length - 1; 4636 while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ]; 4637 4638 var Class = this; 4639 if (Array.isArray(module)) { 4640 module.forEach(function (m) { return Class.installModule(m); }); 4641 return Class; 4642 } 4643 return Class.installModule.apply(Class, [ module ].concat( params )); 4644 }; 4645 4646 Object.defineProperties( SwiperClass, staticAccessors ); 4647 4648 function updateSize () { 4649 var swiper = this; 4650 var width; 4651 var height; 4652 var $el = swiper.$el; 4653 if (typeof swiper.params.width !== 'undefined') { 4654 width = swiper.params.width; 4655 } else { 4656 width = $el[0].clientWidth; 4657 } 4658 if (typeof swiper.params.height !== 'undefined') { 4659 height = swiper.params.height; 4660 } else { 4661 height = $el[0].clientHeight; 4662 } 4663 if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) { 4664 return; 4665 } 4666 4667 // Subtract paddings 4668 width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10); 4669 height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10); 4670 4671 Utils.extend(swiper, { 4672 width: width, 4673 height: height, 4674 size: swiper.isHorizontal() ? width : height, 4675 }); 4676 } 4677 4678 function updateSlides () { 4679 var swiper = this; 4680 var params = swiper.params; 4681 4682 var $wrapperEl = swiper.$wrapperEl; 4683 var swiperSize = swiper.size; 4684 var rtl = swiper.rtlTranslate; 4685 var wrongRTL = swiper.wrongRTL; 4686 var isVirtual = swiper.virtual && params.virtual.enabled; 4687 var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 4688 var slides = $wrapperEl.children(("." + (swiper.params.slideClass))); 4689 var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 4690 var snapGrid = []; 4691 var slidesGrid = []; 4692 var slidesSizesGrid = []; 4693 4694 var offsetBefore = params.slidesOffsetBefore; 4695 if (typeof offsetBefore === 'function') { 4696 offsetBefore = params.slidesOffsetBefore.call(swiper); 4697 } 4698 4699 var offsetAfter = params.slidesOffsetAfter; 4700 if (typeof offsetAfter === 'function') { 4701 offsetAfter = params.slidesOffsetAfter.call(swiper); 4702 } 4703 4704 var previousSnapGridLength = swiper.snapGrid.length; 4705 var previousSlidesGridLength = swiper.snapGrid.length; 4706 4707 var spaceBetween = params.spaceBetween; 4708 var slidePosition = -offsetBefore; 4709 var prevSlideSize = 0; 4710 var index = 0; 4711 if (typeof swiperSize === 'undefined') { 4712 return; 4713 } 4714 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 4715 spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize; 4716 } 4717 4718 swiper.virtualSize = -spaceBetween; 4719 4720 // reset margins 4721 if (rtl) { slides.css({ marginLeft: '', marginTop: '' }); } 4722 else { slides.css({ marginRight: '', marginBottom: '' }); } 4723 4724 var slidesNumberEvenToRows; 4725 if (params.slidesPerColumn > 1) { 4726 if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { 4727 slidesNumberEvenToRows = slidesLength; 4728 } else { 4729 slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn; 4730 } 4731 if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') { 4732 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn); 4733 } 4734 } 4735 4736 // Calc slides 4737 var slideSize; 4738 var slidesPerColumn = params.slidesPerColumn; 4739 var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; 4740 var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); 4741 for (var i = 0; i < slidesLength; i += 1) { 4742 slideSize = 0; 4743 var slide = slides.eq(i); 4744 if (params.slidesPerColumn > 1) { 4745 // Set slides order 4746 var newSlideOrderIndex = (void 0); 4747 var column = (void 0); 4748 var row = (void 0); 4749 if (params.slidesPerColumnFill === 'column') { 4750 column = Math.floor(i / slidesPerColumn); 4751 row = i - (column * slidesPerColumn); 4752 if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) { 4753 row += 1; 4754 if (row >= slidesPerColumn) { 4755 row = 0; 4756 column += 1; 4757 } 4758 } 4759 newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn); 4760 slide 4761 .css({ 4762 '-webkit-box-ordinal-group': newSlideOrderIndex, 4763 '-moz-box-ordinal-group': newSlideOrderIndex, 4764 '-ms-flex-order': newSlideOrderIndex, 4765 '-webkit-order': newSlideOrderIndex, 4766 order: newSlideOrderIndex, 4767 }); 4768 } else { 4769 row = Math.floor(i / slidesPerRow); 4770 column = i - (row * slidesPerRow); 4771 } 4772 slide 4773 .css( 4774 ("margin-" + (swiper.isHorizontal() ? 'top' : 'left')), 4775 (row !== 0 && params.spaceBetween) && (((params.spaceBetween) + "px")) 4776 ) 4777 .attr('data-swiper-column', column) 4778 .attr('data-swiper-row', row); 4779 } 4780 if (slide.css('display') === 'none') { continue; } // eslint-disable-line 4781 4782 if (params.slidesPerView === 'auto') { 4783 var slideStyles = win.getComputedStyle(slide[0], null); 4784 var currentTransform = slide[0].style.transform; 4785 var currentWebKitTransform = slide[0].style.webkitTransform; 4786 if (currentTransform) { 4787 slide[0].style.transform = 'none'; 4788 } 4789 if (currentWebKitTransform) { 4790 slide[0].style.webkitTransform = 'none'; 4791 } 4792 if (params.roundLengths) { 4793 slideSize = swiper.isHorizontal() 4794 ? slide.outerWidth(true) 4795 : slide.outerHeight(true); 4796 } else { 4797 // eslint-disable-next-line 4798 if (swiper.isHorizontal()) { 4799 var width = parseFloat(slideStyles.getPropertyValue('width')); 4800 var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left')); 4801 var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right')); 4802 var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left')); 4803 var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right')); 4804 var boxSizing = slideStyles.getPropertyValue('box-sizing'); 4805 if (boxSizing && boxSizing === 'border-box') { 4806 slideSize = width + marginLeft + marginRight; 4807 } else { 4808 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight; 4809 } 4810 } else { 4811 var height = parseFloat(slideStyles.getPropertyValue('height')); 4812 var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top')); 4813 var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom')); 4814 var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top')); 4815 var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom')); 4816 var boxSizing$1 = slideStyles.getPropertyValue('box-sizing'); 4817 if (boxSizing$1 && boxSizing$1 === 'border-box') { 4818 slideSize = height + marginTop + marginBottom; 4819 } else { 4820 slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom; 4821 } 4822 } 4823 } 4824 if (currentTransform) { 4825 slide[0].style.transform = currentTransform; 4826 } 4827 if (currentWebKitTransform) { 4828 slide[0].style.webkitTransform = currentWebKitTransform; 4829 } 4830 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 4831 } else { 4832 slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView; 4833 if (params.roundLengths) { slideSize = Math.floor(slideSize); } 4834 4835 if (slides[i]) { 4836 if (swiper.isHorizontal()) { 4837 slides[i].style.width = slideSize + "px"; 4838 } else { 4839 slides[i].style.height = slideSize + "px"; 4840 } 4841 } 4842 } 4843 if (slides[i]) { 4844 slides[i].swiperSlideSize = slideSize; 4845 } 4846 slidesSizesGrid.push(slideSize); 4847 4848 4849 if (params.centeredSlides) { 4850 slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween; 4851 if (prevSlideSize === 0 && i !== 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 4852 if (i === 0) { slidePosition = slidePosition - (swiperSize / 2) - spaceBetween; } 4853 if (Math.abs(slidePosition) < 1 / 1000) { slidePosition = 0; } 4854 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 4855 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 4856 slidesGrid.push(slidePosition); 4857 } else { 4858 if (params.roundLengths) { slidePosition = Math.floor(slidePosition); } 4859 if ((index) % params.slidesPerGroup === 0) { snapGrid.push(slidePosition); } 4860 slidesGrid.push(slidePosition); 4861 slidePosition = slidePosition + slideSize + spaceBetween; 4862 } 4863 4864 swiper.virtualSize += slideSize + spaceBetween; 4865 4866 prevSlideSize = slideSize; 4867 4868 index += 1; 4869 } 4870 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 4871 var newSlidesGrid; 4872 4873 if ( 4874 rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 4875 $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); 4876 } 4877 if (!Support.flexbox || params.setWrapperSize) { 4878 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 4879 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 4880 } 4881 4882 if (params.slidesPerColumn > 1) { 4883 swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows; 4884 swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; 4885 if (swiper.isHorizontal()) { $wrapperEl.css({ width: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 4886 else { $wrapperEl.css({ height: ((swiper.virtualSize + params.spaceBetween) + "px") }); } 4887 if (params.centeredSlides) { 4888 newSlidesGrid = []; 4889 for (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) { 4890 var slidesGridItem = snapGrid[i$1]; 4891 if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); } 4892 if (snapGrid[i$1] < swiper.virtualSize + snapGrid[0]) { newSlidesGrid.push(slidesGridItem); } 4893 } 4894 snapGrid = newSlidesGrid; 4895 } 4896 } 4897 4898 // Remove last grid elements depending on width 4899 if (!params.centeredSlides) { 4900 newSlidesGrid = []; 4901 for (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) { 4902 var slidesGridItem$1 = snapGrid[i$2]; 4903 if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); } 4904 if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) { 4905 newSlidesGrid.push(slidesGridItem$1); 4906 } 4907 } 4908 snapGrid = newSlidesGrid; 4909 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 4910 snapGrid.push(swiper.virtualSize - swiperSize); 4911 } 4912 } 4913 if (snapGrid.length === 0) { snapGrid = [0]; } 4914 4915 if (params.spaceBetween !== 0) { 4916 if (swiper.isHorizontal()) { 4917 if (rtl) { slides.css({ marginLeft: (spaceBetween + "px") }); } 4918 else { slides.css({ marginRight: (spaceBetween + "px") }); } 4919 } else { slides.css({ marginBottom: (spaceBetween + "px") }); } 4920 } 4921 4922 if (params.centerInsufficientSlides) { 4923 var allSlidesSize = 0; 4924 slidesSizesGrid.forEach(function (slideSizeValue) { 4925 allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); 4926 }); 4927 allSlidesSize -= params.spaceBetween; 4928 if (allSlidesSize < swiperSize) { 4929 var allSlidesOffset = (swiperSize - allSlidesSize) / 2; 4930 snapGrid.forEach(function (snap, snapIndex) { 4931 snapGrid[snapIndex] = snap - allSlidesOffset; 4932 }); 4933 slidesGrid.forEach(function (snap, snapIndex) { 4934 slidesGrid[snapIndex] = snap + allSlidesOffset; 4935 }); 4936 } 4937 } 4938 4939 Utils.extend(swiper, { 4940 slides: slides, 4941 snapGrid: snapGrid, 4942 slidesGrid: slidesGrid, 4943 slidesSizesGrid: slidesSizesGrid, 4944 }); 4945 4946 if (slidesLength !== previousSlidesLength) { 4947 swiper.emit('slidesLengthChange'); 4948 } 4949 if (snapGrid.length !== previousSnapGridLength) { 4950 if (swiper.params.watchOverflow) { swiper.checkOverflow(); } 4951 swiper.emit('snapGridLengthChange'); 4952 } 4953 if (slidesGrid.length !== previousSlidesGridLength) { 4954 swiper.emit('slidesGridLengthChange'); 4955 } 4956 4957 if (params.watchSlidesProgress || params.watchSlidesVisibility) { 4958 swiper.updateSlidesOffset(); 4959 } 4960 } 4961 4962 function updateAutoHeight (speed) { 4963 var swiper = this; 4964 var activeSlides = []; 4965 var newHeight = 0; 4966 var i; 4967 if (typeof speed === 'number') { 4968 swiper.setTransition(speed); 4969 } else if (speed === true) { 4970 swiper.setTransition(swiper.params.speed); 4971 } 4972 // Find slides currently in view 4973 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 4974 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 4975 var index = swiper.activeIndex + i; 4976 if (index > swiper.slides.length) { break; } 4977 activeSlides.push(swiper.slides.eq(index)[0]); 4978 } 4979 } else { 4980 activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]); 4981 } 4982 4983 // Find new height from highest slide in view 4984 for (i = 0; i < activeSlides.length; i += 1) { 4985 if (typeof activeSlides[i] !== 'undefined') { 4986 var height = activeSlides[i].offsetHeight; 4987 newHeight = height > newHeight ? height : newHeight; 4988 } 4989 } 4990 4991 // Update Height 4992 if (newHeight) { swiper.$wrapperEl.css('height', (newHeight + "px")); } 4993 } 4994 4995 function updateSlidesOffset () { 4996 var swiper = this; 4997 var slides = swiper.slides; 4998 for (var i = 0; i < slides.length; i += 1) { 4999 slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 5000 } 5001 } 5002 5003 function updateSlidesProgress (translate) { 5004 if ( translate === void 0 ) translate = (this && this.translate) || 0; 5005 5006 var swiper = this; 5007 var params = swiper.params; 5008 5009 var slides = swiper.slides; 5010 var rtl = swiper.rtlTranslate; 5011 5012 if (slides.length === 0) { return; } 5013 if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); } 5014 5015 var offsetCenter = -translate; 5016 if (rtl) { offsetCenter = translate; } 5017 5018 // Visible Slides 5019 slides.removeClass(params.slideVisibleClass); 5020 5021 swiper.visibleSlidesIndexes = []; 5022 swiper.visibleSlides = []; 5023 5024 for (var i = 0; i < slides.length; i += 1) { 5025 var slide = slides[i]; 5026 var slideProgress = ( 5027 (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset 5028 ) / (slide.swiperSlideSize + params.spaceBetween); 5029 if (params.watchSlidesVisibility) { 5030 var slideBefore = -(offsetCenter - slide.swiperSlideOffset); 5031 var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 5032 var isVisible = (slideBefore >= 0 && slideBefore < swiper.size) 5033 || (slideAfter > 0 && slideAfter <= swiper.size) 5034 || (slideBefore <= 0 && slideAfter >= swiper.size); 5035 if (isVisible) { 5036 swiper.visibleSlides.push(slide); 5037 swiper.visibleSlidesIndexes.push(i); 5038 slides.eq(i).addClass(params.slideVisibleClass); 5039 } 5040 } 5041 slide.progress = rtl ? -slideProgress : slideProgress; 5042 } 5043 swiper.visibleSlides = $(swiper.visibleSlides); 5044 } 5045 5046 function updateProgress (translate) { 5047 if ( translate === void 0 ) translate = (this && this.translate) || 0; 5048 5049 var swiper = this; 5050 var params = swiper.params; 5051 5052 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 5053 var progress = swiper.progress; 5054 var isBeginning = swiper.isBeginning; 5055 var isEnd = swiper.isEnd; 5056 var wasBeginning = isBeginning; 5057 var wasEnd = isEnd; 5058 if (translatesDiff === 0) { 5059 progress = 0; 5060 isBeginning = true; 5061 isEnd = true; 5062 } else { 5063 progress = (translate - swiper.minTranslate()) / (translatesDiff); 5064 isBeginning = progress <= 0; 5065 isEnd = progress >= 1; 5066 } 5067 Utils.extend(swiper, { 5068 progress: progress, 5069 isBeginning: isBeginning, 5070 isEnd: isEnd, 5071 }); 5072 5073 if (params.watchSlidesProgress || params.watchSlidesVisibility) { swiper.updateSlidesProgress(translate); } 5074 5075 if (isBeginning && !wasBeginning) { 5076 swiper.emit('reachBeginning toEdge'); 5077 } 5078 if (isEnd && !wasEnd) { 5079 swiper.emit('reachEnd toEdge'); 5080 } 5081 if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) { 5082 swiper.emit('fromEdge'); 5083 } 5084 5085 swiper.emit('progress', progress); 5086 } 5087 5088 function updateSlidesClasses () { 5089 var swiper = this; 5090 5091 var slides = swiper.slides; 5092 var params = swiper.params; 5093 var $wrapperEl = swiper.$wrapperEl; 5094 var activeIndex = swiper.activeIndex; 5095 var realIndex = swiper.realIndex; 5096 var isVirtual = swiper.virtual && params.virtual.enabled; 5097 5098 slides.removeClass(((params.slideActiveClass) + " " + (params.slideNextClass) + " " + (params.slidePrevClass) + " " + (params.slideDuplicateActiveClass) + " " + (params.slideDuplicateNextClass) + " " + (params.slideDuplicatePrevClass))); 5099 5100 var activeSlide; 5101 if (isVirtual) { 5102 activeSlide = swiper.$wrapperEl.find(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + activeIndex + "\"]")); 5103 } else { 5104 activeSlide = slides.eq(activeIndex); 5105 } 5106 5107 // Active classes 5108 activeSlide.addClass(params.slideActiveClass); 5109 5110 if (params.loop) { 5111 // Duplicate to all looped slides 5112 if (activeSlide.hasClass(params.slideDuplicateClass)) { 5113 $wrapperEl 5114 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + realIndex + "\"]")) 5115 .addClass(params.slideDuplicateActiveClass); 5116 } else { 5117 $wrapperEl 5118 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]")) 5119 .addClass(params.slideDuplicateActiveClass); 5120 } 5121 } 5122 // Next Slide 5123 var nextSlide = activeSlide.nextAll(("." + (params.slideClass))).eq(0).addClass(params.slideNextClass); 5124 if (params.loop && nextSlide.length === 0) { 5125 nextSlide = slides.eq(0); 5126 nextSlide.addClass(params.slideNextClass); 5127 } 5128 // Prev Slide 5129 var prevSlide = activeSlide.prevAll(("." + (params.slideClass))).eq(0).addClass(params.slidePrevClass); 5130 if (params.loop && prevSlide.length === 0) { 5131 prevSlide = slides.eq(-1); 5132 prevSlide.addClass(params.slidePrevClass); 5133 } 5134 if (params.loop) { 5135 // Duplicate to all looped slides 5136 if (nextSlide.hasClass(params.slideDuplicateClass)) { 5137 $wrapperEl 5138 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 5139 .addClass(params.slideDuplicateNextClass); 5140 } else { 5141 $wrapperEl 5142 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (nextSlide.attr('data-swiper-slide-index')) + "\"]")) 5143 .addClass(params.slideDuplicateNextClass); 5144 } 5145 if (prevSlide.hasClass(params.slideDuplicateClass)) { 5146 $wrapperEl 5147 .children(("." + (params.slideClass) + ":not(." + (params.slideDuplicateClass) + ")[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 5148 .addClass(params.slideDuplicatePrevClass); 5149 } else { 5150 $wrapperEl 5151 .children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + (prevSlide.attr('data-swiper-slide-index')) + "\"]")) 5152 .addClass(params.slideDuplicatePrevClass); 5153 } 5154 } 5155 } 5156 5157 function updateActiveIndex (newActiveIndex) { 5158 var swiper = this; 5159 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 5160 var slidesGrid = swiper.slidesGrid; 5161 var snapGrid = swiper.snapGrid; 5162 var params = swiper.params; 5163 var previousIndex = swiper.activeIndex; 5164 var previousRealIndex = swiper.realIndex; 5165 var previousSnapIndex = swiper.snapIndex; 5166 var activeIndex = newActiveIndex; 5167 var snapIndex; 5168 if (typeof activeIndex === 'undefined') { 5169 for (var i = 0; i < slidesGrid.length; i += 1) { 5170 if (typeof slidesGrid[i + 1] !== 'undefined') { 5171 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) { 5172 activeIndex = i; 5173 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 5174 activeIndex = i + 1; 5175 } 5176 } else if (translate >= slidesGrid[i]) { 5177 activeIndex = i; 5178 } 5179 } 5180 // Normalize slideIndex 5181 if (params.normalizeSlideIndex) { 5182 if (activeIndex < 0 || typeof activeIndex === 'undefined') { activeIndex = 0; } 5183 } 5184 } 5185 if (snapGrid.indexOf(translate) >= 0) { 5186 snapIndex = snapGrid.indexOf(translate); 5187 } else { 5188 snapIndex = Math.floor(activeIndex / params.slidesPerGroup); 5189 } 5190 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 5191 if (activeIndex === previousIndex) { 5192 if (snapIndex !== previousSnapIndex) { 5193 swiper.snapIndex = snapIndex; 5194 swiper.emit('snapIndexChange'); 5195 } 5196 return; 5197 } 5198 5199 // Get real index 5200 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); 5201 5202 Utils.extend(swiper, { 5203 snapIndex: snapIndex, 5204 realIndex: realIndex, 5205 previousIndex: previousIndex, 5206 activeIndex: activeIndex, 5207 }); 5208 swiper.emit('activeIndexChange'); 5209 swiper.emit('snapIndexChange'); 5210 if (previousRealIndex !== realIndex) { 5211 swiper.emit('realIndexChange'); 5212 } 5213 swiper.emit('slideChange'); 5214 } 5215 5216 function updateClickedSlide (e) { 5217 var swiper = this; 5218 var params = swiper.params; 5219 var slide = $(e.target).closest(("." + (params.slideClass)))[0]; 5220 var slideFound = false; 5221 if (slide) { 5222 for (var i = 0; i < swiper.slides.length; i += 1) { 5223 if (swiper.slides[i] === slide) { slideFound = true; } 5224 } 5225 } 5226 5227 if (slide && slideFound) { 5228 swiper.clickedSlide = slide; 5229 if (swiper.virtual && swiper.params.virtual.enabled) { 5230 swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10); 5231 } else { 5232 swiper.clickedIndex = $(slide).index(); 5233 } 5234 } else { 5235 swiper.clickedSlide = undefined; 5236 swiper.clickedIndex = undefined; 5237 return; 5238 } 5239 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 5240 swiper.slideToClickedSlide(); 5241 } 5242 } 5243 5244 var update = { 5245 updateSize: updateSize, 5246 updateSlides: updateSlides, 5247 updateAutoHeight: updateAutoHeight, 5248 updateSlidesOffset: updateSlidesOffset, 5249 updateSlidesProgress: updateSlidesProgress, 5250 updateProgress: updateProgress, 5251 updateSlidesClasses: updateSlidesClasses, 5252 updateActiveIndex: updateActiveIndex, 5253 updateClickedSlide: updateClickedSlide, 5254 }; 5255 5256 function getTranslate (axis) { 5257 if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y'; 5258 5259 var swiper = this; 5260 5261 var params = swiper.params; 5262 var rtl = swiper.rtlTranslate; 5263 var translate = swiper.translate; 5264 var $wrapperEl = swiper.$wrapperEl; 5265 5266 if (params.virtualTranslate) { 5267 return rtl ? -translate : translate; 5268 } 5269 5270 var currentTranslate = Utils.getTranslate($wrapperEl[0], axis); 5271 if (rtl) { currentTranslate = -currentTranslate; } 5272 5273 return currentTranslate || 0; 5274 } 5275 5276 function setTranslate (translate, byController) { 5277 var swiper = this; 5278 var rtl = swiper.rtlTranslate; 5279 var params = swiper.params; 5280 var $wrapperEl = swiper.$wrapperEl; 5281 var progress = swiper.progress; 5282 var x = 0; 5283 var y = 0; 5284 var z = 0; 5285 5286 if (swiper.isHorizontal()) { 5287 x = rtl ? -translate : translate; 5288 } else { 5289 y = translate; 5290 } 5291 5292 if (params.roundLengths) { 5293 x = Math.floor(x); 5294 y = Math.floor(y); 5295 } 5296 5297 if (!params.virtualTranslate) { 5298 if (Support.transforms3d) { $wrapperEl.transform(("translate3d(" + x + "px, " + y + "px, " + z + "px)")); } 5299 else { $wrapperEl.transform(("translate(" + x + "px, " + y + "px)")); } 5300 } 5301 swiper.previousTranslate = swiper.translate; 5302 swiper.translate = swiper.isHorizontal() ? x : y; 5303 5304 // Check if we need to update progress 5305 var newProgress; 5306 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 5307 if (translatesDiff === 0) { 5308 newProgress = 0; 5309 } else { 5310 newProgress = (translate - swiper.minTranslate()) / (translatesDiff); 5311 } 5312 if (newProgress !== progress) { 5313 swiper.updateProgress(translate); 5314 } 5315 5316 swiper.emit('setTranslate', swiper.translate, byController); 5317 } 5318 5319 function minTranslate () { 5320 return (-this.snapGrid[0]); 5321 } 5322 5323 function maxTranslate () { 5324 return (-this.snapGrid[this.snapGrid.length - 1]); 5325 } 5326 5327 var translate = { 5328 getTranslate: getTranslate, 5329 setTranslate: setTranslate, 5330 minTranslate: minTranslate, 5331 maxTranslate: maxTranslate, 5332 }; 5333 5334 function setTransition (duration, byController) { 5335 var swiper = this; 5336 5337 swiper.$wrapperEl.transition(duration); 5338 5339 swiper.emit('setTransition', duration, byController); 5340 } 5341 5342 function transitionStart (runCallbacks, direction) { 5343 if ( runCallbacks === void 0 ) runCallbacks = true; 5344 5345 var swiper = this; 5346 var activeIndex = swiper.activeIndex; 5347 var params = swiper.params; 5348 var previousIndex = swiper.previousIndex; 5349 if (params.autoHeight) { 5350 swiper.updateAutoHeight(); 5351 } 5352 5353 var dir = direction; 5354 if (!dir) { 5355 if (activeIndex > previousIndex) { dir = 'next'; } 5356 else if (activeIndex < previousIndex) { dir = 'prev'; } 5357 else { dir = 'reset'; } 5358 } 5359 5360 swiper.emit('transitionStart'); 5361 5362 if (runCallbacks && activeIndex !== previousIndex) { 5363 if (dir === 'reset') { 5364 swiper.emit('slideResetTransitionStart'); 5365 return; 5366 } 5367 swiper.emit('slideChangeTransitionStart'); 5368 if (dir === 'next') { 5369 swiper.emit('slideNextTransitionStart'); 5370 } else { 5371 swiper.emit('slidePrevTransitionStart'); 5372 } 5373 } 5374 } 5375 5376 function transitionEnd$1 (runCallbacks, direction) { 5377 if ( runCallbacks === void 0 ) runCallbacks = true; 5378 5379 var swiper = this; 5380 var activeIndex = swiper.activeIndex; 5381 var previousIndex = swiper.previousIndex; 5382 swiper.animating = false; 5383 swiper.setTransition(0); 5384 5385 var dir = direction; 5386 if (!dir) { 5387 if (activeIndex > previousIndex) { dir = 'next'; } 5388 else if (activeIndex < previousIndex) { dir = 'prev'; } 5389 else { dir = 'reset'; } 5390 } 5391 5392 swiper.emit('transitionEnd'); 5393 5394 if (runCallbacks && activeIndex !== previousIndex) { 5395 if (dir === 'reset') { 5396 swiper.emit('slideResetTransitionEnd'); 5397 return; 5398 } 5399 swiper.emit('slideChangeTransitionEnd'); 5400 if (dir === 'next') { 5401 swiper.emit('slideNextTransitionEnd'); 5402 } else { 5403 swiper.emit('slidePrevTransitionEnd'); 5404 } 5405 } 5406 } 5407 5408 var transition$1 = { 5409 setTransition: setTransition, 5410 transitionStart: transitionStart, 5411 transitionEnd: transitionEnd$1, 5412 }; 5413 5414 function slideTo (index, speed, runCallbacks, internal) { 5415 if ( index === void 0 ) index = 0; 5416 if ( speed === void 0 ) speed = this.params.speed; 5417 if ( runCallbacks === void 0 ) runCallbacks = true; 5418 5419 var swiper = this; 5420 var slideIndex = index; 5421 if (slideIndex < 0) { slideIndex = 0; } 5422 5423 var params = swiper.params; 5424 var snapGrid = swiper.snapGrid; 5425 var slidesGrid = swiper.slidesGrid; 5426 var previousIndex = swiper.previousIndex; 5427 var activeIndex = swiper.activeIndex; 5428 var rtl = swiper.rtlTranslate; 5429 if (swiper.animating && params.preventInteractionOnTransition) { 5430 return false; 5431 } 5432 5433 var snapIndex = Math.floor(slideIndex / params.slidesPerGroup); 5434 if (snapIndex >= snapGrid.length) { snapIndex = snapGrid.length - 1; } 5435 5436 if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { 5437 swiper.emit('beforeSlideChangeStart'); 5438 } 5439 5440 var translate = -snapGrid[snapIndex]; 5441 5442 // Update progress 5443 swiper.updateProgress(translate); 5444 5445 // Normalize slideIndex 5446 if (params.normalizeSlideIndex) { 5447 for (var i = 0; i < slidesGrid.length; i += 1) { 5448 if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { 5449 slideIndex = i; 5450 } 5451 } 5452 } 5453 // Directions locks 5454 if (swiper.initialized && slideIndex !== activeIndex) { 5455 if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { 5456 return false; 5457 } 5458 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 5459 if ((activeIndex || 0) !== slideIndex) { return false; } 5460 } 5461 } 5462 5463 var direction; 5464 if (slideIndex > activeIndex) { direction = 'next'; } 5465 else if (slideIndex < activeIndex) { direction = 'prev'; } 5466 else { direction = 'reset'; } 5467 5468 5469 // Update Index 5470 if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) { 5471 swiper.updateActiveIndex(slideIndex); 5472 // Update Height 5473 if (params.autoHeight) { 5474 swiper.updateAutoHeight(); 5475 } 5476 swiper.updateSlidesClasses(); 5477 if (params.effect !== 'slide') { 5478 swiper.setTranslate(translate); 5479 } 5480 if (direction !== 'reset') { 5481 swiper.transitionStart(runCallbacks, direction); 5482 swiper.transitionEnd(runCallbacks, direction); 5483 } 5484 return false; 5485 } 5486 5487 if (speed === 0 || !Support.transition) { 5488 swiper.setTransition(0); 5489 swiper.setTranslate(translate); 5490 swiper.updateActiveIndex(slideIndex); 5491 swiper.updateSlidesClasses(); 5492 swiper.emit('beforeTransitionStart', speed, internal); 5493 swiper.transitionStart(runCallbacks, direction); 5494 swiper.transitionEnd(runCallbacks, direction); 5495 } else { 5496 swiper.setTransition(speed); 5497 swiper.setTranslate(translate); 5498 swiper.updateActiveIndex(slideIndex); 5499 swiper.updateSlidesClasses(); 5500 swiper.emit('beforeTransitionStart', speed, internal); 5501 swiper.transitionStart(runCallbacks, direction); 5502 if (!swiper.animating) { 5503 swiper.animating = true; 5504 if (!swiper.onSlideToWrapperTransitionEnd) { 5505 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 5506 if (!swiper || swiper.destroyed) { return; } 5507 if (e.target !== this) { return; } 5508 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 5509 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 5510 swiper.onSlideToWrapperTransitionEnd = null; 5511 delete swiper.onSlideToWrapperTransitionEnd; 5512 swiper.transitionEnd(runCallbacks, direction); 5513 }; 5514 } 5515 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 5516 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 5517 } 5518 } 5519 5520 return true; 5521 } 5522 5523 function slideToLoop (index, speed, runCallbacks, internal) { 5524 if ( index === void 0 ) index = 0; 5525 if ( speed === void 0 ) speed = this.params.speed; 5526 if ( runCallbacks === void 0 ) runCallbacks = true; 5527 5528 var swiper = this; 5529 var newIndex = index; 5530 if (swiper.params.loop) { 5531 newIndex += swiper.loopedSlides; 5532 } 5533 5534 return swiper.slideTo(newIndex, speed, runCallbacks, internal); 5535 } 5536 5537 /* eslint no-unused-vars: "off" */ 5538 function slideNext (speed, runCallbacks, internal) { 5539 if ( speed === void 0 ) speed = this.params.speed; 5540 if ( runCallbacks === void 0 ) runCallbacks = true; 5541 5542 var swiper = this; 5543 var params = swiper.params; 5544 var animating = swiper.animating; 5545 if (params.loop) { 5546 if (animating) { return false; } 5547 swiper.loopFix(); 5548 // eslint-disable-next-line 5549 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 5550 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 5551 } 5552 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal); 5553 } 5554 5555 /* eslint no-unused-vars: "off" */ 5556 function slidePrev (speed, runCallbacks, internal) { 5557 if ( speed === void 0 ) speed = this.params.speed; 5558 if ( runCallbacks === void 0 ) runCallbacks = true; 5559 5560 var swiper = this; 5561 var params = swiper.params; 5562 var animating = swiper.animating; 5563 var snapGrid = swiper.snapGrid; 5564 var slidesGrid = swiper.slidesGrid; 5565 var rtlTranslate = swiper.rtlTranslate; 5566 5567 if (params.loop) { 5568 if (animating) { return false; } 5569 swiper.loopFix(); 5570 // eslint-disable-next-line 5571 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 5572 } 5573 var translate = rtlTranslate ? swiper.translate : -swiper.translate; 5574 function normalize(val) { 5575 if (val < 0) { return -Math.floor(Math.abs(val)); } 5576 return Math.floor(val); 5577 } 5578 var normalizedTranslate = normalize(translate); 5579 var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); }); 5580 var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); }); 5581 5582 var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; 5583 var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 5584 var prevIndex; 5585 if (typeof prevSnap !== 'undefined') { 5586 prevIndex = slidesGrid.indexOf(prevSnap); 5587 if (prevIndex < 0) { prevIndex = swiper.activeIndex - 1; } 5588 } 5589 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 5590 } 5591 5592 /* eslint no-unused-vars: "off" */ 5593 function slideReset (speed, runCallbacks, internal) { 5594 if ( speed === void 0 ) speed = this.params.speed; 5595 if ( runCallbacks === void 0 ) runCallbacks = true; 5596 5597 var swiper = this; 5598 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 5599 } 5600 5601 /* eslint no-unused-vars: "off" */ 5602 function slideToClosest (speed, runCallbacks, internal) { 5603 if ( speed === void 0 ) speed = this.params.speed; 5604 if ( runCallbacks === void 0 ) runCallbacks = true; 5605 5606 var swiper = this; 5607 var index = swiper.activeIndex; 5608 var snapIndex = Math.floor(index / swiper.params.slidesPerGroup); 5609 5610 if (snapIndex < swiper.snapGrid.length - 1) { 5611 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 5612 5613 var currentSnap = swiper.snapGrid[snapIndex]; 5614 var nextSnap = swiper.snapGrid[snapIndex + 1]; 5615 5616 if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) { 5617 index = swiper.params.slidesPerGroup; 5618 } 5619 } 5620 5621 return swiper.slideTo(index, speed, runCallbacks, internal); 5622 } 5623 5624 function slideToClickedSlide () { 5625 var swiper = this; 5626 var params = swiper.params; 5627 var $wrapperEl = swiper.$wrapperEl; 5628 5629 var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 5630 var slideToIndex = swiper.clickedIndex; 5631 var realIndex; 5632 if (params.loop) { 5633 if (swiper.animating) { return; } 5634 realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); 5635 if (params.centeredSlides) { 5636 if ( 5637 (slideToIndex < swiper.loopedSlides - (slidesPerView / 2)) 5638 || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2)) 5639 ) { 5640 swiper.loopFix(); 5641 slideToIndex = $wrapperEl 5642 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 5643 .eq(0) 5644 .index(); 5645 5646 Utils.nextTick(function () { 5647 swiper.slideTo(slideToIndex); 5648 }); 5649 } else { 5650 swiper.slideTo(slideToIndex); 5651 } 5652 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 5653 swiper.loopFix(); 5654 slideToIndex = $wrapperEl 5655 .children(("." + (params.slideClass) + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + (params.slideDuplicateClass) + ")")) 5656 .eq(0) 5657 .index(); 5658 5659 Utils.nextTick(function () { 5660 swiper.slideTo(slideToIndex); 5661 }); 5662 } else { 5663 swiper.slideTo(slideToIndex); 5664 } 5665 } else { 5666 swiper.slideTo(slideToIndex); 5667 } 5668 } 5669 5670 var slide = { 5671 slideTo: slideTo, 5672 slideToLoop: slideToLoop, 5673 slideNext: slideNext, 5674 slidePrev: slidePrev, 5675 slideReset: slideReset, 5676 slideToClosest: slideToClosest, 5677 slideToClickedSlide: slideToClickedSlide, 5678 }; 5679 5680 function loopCreate () { 5681 var swiper = this; 5682 var params = swiper.params; 5683 var $wrapperEl = swiper.$wrapperEl; 5684 // Remove duplicated slides 5685 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass))).remove(); 5686 5687 var slides = $wrapperEl.children(("." + (params.slideClass))); 5688 5689 if (params.loopFillGroupWithBlank) { 5690 var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup); 5691 if (blankSlidesNum !== params.slidesPerGroup) { 5692 for (var i = 0; i < blankSlidesNum; i += 1) { 5693 var blankNode = $(doc.createElement('div')).addClass(((params.slideClass) + " " + (params.slideBlankClass))); 5694 $wrapperEl.append(blankNode); 5695 } 5696 slides = $wrapperEl.children(("." + (params.slideClass))); 5697 } 5698 } 5699 5700 if (params.slidesPerView === 'auto' && !params.loopedSlides) { params.loopedSlides = slides.length; } 5701 5702 swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10); 5703 swiper.loopedSlides += params.loopAdditionalSlides; 5704 if (swiper.loopedSlides > slides.length) { 5705 swiper.loopedSlides = slides.length; 5706 } 5707 5708 var prependSlides = []; 5709 var appendSlides = []; 5710 slides.each(function (index, el) { 5711 var slide = $(el); 5712 if (index < swiper.loopedSlides) { appendSlides.push(el); } 5713 if (index < slides.length && index >= slides.length - swiper.loopedSlides) { prependSlides.push(el); } 5714 slide.attr('data-swiper-slide-index', index); 5715 }); 5716 for (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) { 5717 $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass)); 5718 } 5719 for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) { 5720 $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass)); 5721 } 5722 } 5723 5724 function loopFix () { 5725 var swiper = this; 5726 var params = swiper.params; 5727 var activeIndex = swiper.activeIndex; 5728 var slides = swiper.slides; 5729 var loopedSlides = swiper.loopedSlides; 5730 var allowSlidePrev = swiper.allowSlidePrev; 5731 var allowSlideNext = swiper.allowSlideNext; 5732 var snapGrid = swiper.snapGrid; 5733 var rtl = swiper.rtlTranslate; 5734 var newIndex; 5735 swiper.allowSlidePrev = true; 5736 swiper.allowSlideNext = true; 5737 5738 var snapTranslate = -snapGrid[activeIndex]; 5739 var diff = snapTranslate - swiper.getTranslate(); 5740 5741 5742 // Fix For Negative Oversliding 5743 if (activeIndex < loopedSlides) { 5744 newIndex = (slides.length - (loopedSlides * 3)) + activeIndex; 5745 newIndex += loopedSlides; 5746 var slideChanged = swiper.slideTo(newIndex, 0, false, true); 5747 if (slideChanged && diff !== 0) { 5748 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 5749 } 5750 } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) { 5751 // Fix For Positive Oversliding 5752 newIndex = -slides.length + activeIndex + loopedSlides; 5753 newIndex += loopedSlides; 5754 var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true); 5755 if (slideChanged$1 && diff !== 0) { 5756 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 5757 } 5758 } 5759 swiper.allowSlidePrev = allowSlidePrev; 5760 swiper.allowSlideNext = allowSlideNext; 5761 } 5762 5763 function loopDestroy () { 5764 var swiper = this; 5765 var $wrapperEl = swiper.$wrapperEl; 5766 var params = swiper.params; 5767 var slides = swiper.slides; 5768 $wrapperEl.children(("." + (params.slideClass) + "." + (params.slideDuplicateClass) + ",." + (params.slideClass) + "." + (params.slideBlankClass))).remove(); 5769 slides.removeAttr('data-swiper-slide-index'); 5770 } 5771 5772 var loop = { 5773 loopCreate: loopCreate, 5774 loopFix: loopFix, 5775 loopDestroy: loopDestroy, 5776 }; 5777 5778 function setGrabCursor (moving) { 5779 var swiper = this; 5780 if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 5781 var el = swiper.el; 5782 el.style.cursor = 'move'; 5783 el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab'; 5784 el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab'; 5785 el.style.cursor = moving ? 'grabbing' : 'grab'; 5786 } 5787 5788 function unsetGrabCursor () { 5789 var swiper = this; 5790 if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) { return; } 5791 swiper.el.style.cursor = ''; 5792 } 5793 5794 var grabCursor = { 5795 setGrabCursor: setGrabCursor, 5796 unsetGrabCursor: unsetGrabCursor, 5797 }; 5798 5799 function appendSlide (slides) { 5800 var swiper = this; 5801 var $wrapperEl = swiper.$wrapperEl; 5802 var params = swiper.params; 5803 if (params.loop) { 5804 swiper.loopDestroy(); 5805 } 5806 if (typeof slides === 'object' && 'length' in slides) { 5807 for (var i = 0; i < slides.length; i += 1) { 5808 if (slides[i]) { $wrapperEl.append(slides[i]); } 5809 } 5810 } else { 5811 $wrapperEl.append(slides); 5812 } 5813 if (params.loop) { 5814 swiper.loopCreate(); 5815 } 5816 if (!(params.observer && Support.observer)) { 5817 swiper.update(); 5818 } 5819 } 5820 5821 function prependSlide (slides) { 5822 var swiper = this; 5823 var params = swiper.params; 5824 var $wrapperEl = swiper.$wrapperEl; 5825 var activeIndex = swiper.activeIndex; 5826 5827 if (params.loop) { 5828 swiper.loopDestroy(); 5829 } 5830 var newActiveIndex = activeIndex + 1; 5831 if (typeof slides === 'object' && 'length' in slides) { 5832 for (var i = 0; i < slides.length; i += 1) { 5833 if (slides[i]) { $wrapperEl.prepend(slides[i]); } 5834 } 5835 newActiveIndex = activeIndex + slides.length; 5836 } else { 5837 $wrapperEl.prepend(slides); 5838 } 5839 if (params.loop) { 5840 swiper.loopCreate(); 5841 } 5842 if (!(params.observer && Support.observer)) { 5843 swiper.update(); 5844 } 5845 swiper.slideTo(newActiveIndex, 0, false); 5846 } 5847 5848 function addSlide (index, slides) { 5849 var swiper = this; 5850 var $wrapperEl = swiper.$wrapperEl; 5851 var params = swiper.params; 5852 var activeIndex = swiper.activeIndex; 5853 var activeIndexBuffer = activeIndex; 5854 if (params.loop) { 5855 activeIndexBuffer -= swiper.loopedSlides; 5856 swiper.loopDestroy(); 5857 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 5858 } 5859 var baseLength = swiper.slides.length; 5860 if (index <= 0) { 5861 swiper.prependSlide(slides); 5862 return; 5863 } 5864 if (index >= baseLength) { 5865 swiper.appendSlide(slides); 5866 return; 5867 } 5868 var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 5869 5870 var slidesBuffer = []; 5871 for (var i = baseLength - 1; i >= index; i -= 1) { 5872 var currentSlide = swiper.slides.eq(i); 5873 currentSlide.remove(); 5874 slidesBuffer.unshift(currentSlide); 5875 } 5876 5877 if (typeof slides === 'object' && 'length' in slides) { 5878 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 5879 if (slides[i$1]) { $wrapperEl.append(slides[i$1]); } 5880 } 5881 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 5882 } else { 5883 $wrapperEl.append(slides); 5884 } 5885 5886 for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) { 5887 $wrapperEl.append(slidesBuffer[i$2]); 5888 } 5889 5890 if (params.loop) { 5891 swiper.loopCreate(); 5892 } 5893 if (!(params.observer && Support.observer)) { 5894 swiper.update(); 5895 } 5896 if (params.loop) { 5897 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 5898 } else { 5899 swiper.slideTo(newActiveIndex, 0, false); 5900 } 5901 } 5902 5903 function removeSlide (slidesIndexes) { 5904 var swiper = this; 5905 var params = swiper.params; 5906 var $wrapperEl = swiper.$wrapperEl; 5907 var activeIndex = swiper.activeIndex; 5908 5909 var activeIndexBuffer = activeIndex; 5910 if (params.loop) { 5911 activeIndexBuffer -= swiper.loopedSlides; 5912 swiper.loopDestroy(); 5913 swiper.slides = $wrapperEl.children(("." + (params.slideClass))); 5914 } 5915 var newActiveIndex = activeIndexBuffer; 5916 var indexToRemove; 5917 5918 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 5919 for (var i = 0; i < slidesIndexes.length; i += 1) { 5920 indexToRemove = slidesIndexes[i]; 5921 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 5922 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 5923 } 5924 newActiveIndex = Math.max(newActiveIndex, 0); 5925 } else { 5926 indexToRemove = slidesIndexes; 5927 if (swiper.slides[indexToRemove]) { swiper.slides.eq(indexToRemove).remove(); } 5928 if (indexToRemove < newActiveIndex) { newActiveIndex -= 1; } 5929 newActiveIndex = Math.max(newActiveIndex, 0); 5930 } 5931 5932 if (params.loop) { 5933 swiper.loopCreate(); 5934 } 5935 5936 if (!(params.observer && Support.observer)) { 5937 swiper.update(); 5938 } 5939 if (params.loop) { 5940 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 5941 } else { 5942 swiper.slideTo(newActiveIndex, 0, false); 5943 } 5944 } 5945 5946 function removeAllSlides () { 5947 var swiper = this; 5948 5949 var slidesIndexes = []; 5950 for (var i = 0; i < swiper.slides.length; i += 1) { 5951 slidesIndexes.push(i); 5952 } 5953 swiper.removeSlide(slidesIndexes); 5954 } 5955 5956 var manipulation = { 5957 appendSlide: appendSlide, 5958 prependSlide: prependSlide, 5959 addSlide: addSlide, 5960 removeSlide: removeSlide, 5961 removeAllSlides: removeAllSlides, 5962 }; 5963 5964 var Device = (function Device() { 5965 var ua = win.navigator.userAgent; 5966 5967 var device = { 5968 ios: false, 5969 android: false, 5970 androidChrome: false, 5971 desktop: false, 5972 windows: false, 5973 iphone: false, 5974 ipod: false, 5975 ipad: false, 5976 cordova: win.cordova || win.phonegap, 5977 phonegap: win.cordova || win.phonegap, 5978 }; 5979 5980 var windows = ua.match(/(Windows Phone);?[\s\/]+([\d.]+)?/); // eslint-disable-line 5981 var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 5982 var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 5983 var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 5984 var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 5985 5986 5987 // Windows 5988 if (windows) { 5989 device.os = 'windows'; 5990 device.osVersion = windows[2]; 5991 device.windows = true; 5992 } 5993 // Android 5994 if (android && !windows) { 5995 device.os = 'android'; 5996 device.osVersion = android[2]; 5997 device.android = true; 5998 device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0; 5999 } 6000 if (ipad || iphone || ipod) { 6001 device.os = 'ios'; 6002 device.ios = true; 6003 } 6004 // iOS 6005 if (iphone && !ipod) { 6006 device.osVersion = iphone[2].replace(/_/g, '.'); 6007 device.iphone = true; 6008 } 6009 if (ipad) { 6010 device.osVersion = ipad[2].replace(/_/g, '.'); 6011 device.ipad = true; 6012 } 6013 if (ipod) { 6014 device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null; 6015 device.iphone = true; 6016 } 6017 // iOS 8+ changed UA 6018 if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) { 6019 if (device.osVersion.split('.')[0] === '10') { 6020 device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0]; 6021 } 6022 } 6023 6024 // Desktop 6025 device.desktop = !(device.os || device.android || device.webView); 6026 6027 // Webview 6028 device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i); 6029 6030 // Minimal UI 6031 if (device.os && device.os === 'ios') { 6032 var osVersionArr = device.osVersion.split('.'); 6033 var metaViewport = doc.querySelector('meta[name="viewport"]'); 6034 device.minimalUi = !device.webView 6035 && (ipod || iphone) 6036 && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7) 6037 && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0; 6038 } 6039 6040 // Pixel Ratio 6041 device.pixelRatio = win.devicePixelRatio || 1; 6042 6043 // Export object 6044 return device; 6045 }()); 6046 6047 function onTouchStart (event) { 6048 var swiper = this; 6049 var data = swiper.touchEventsData; 6050 var params = swiper.params; 6051 var touches = swiper.touches; 6052 if (swiper.animating && params.preventInteractionOnTransition) { 6053 return; 6054 } 6055 var e = event; 6056 if (e.originalEvent) { e = e.originalEvent; } 6057 data.isTouchEvent = e.type === 'touchstart'; 6058 if (!data.isTouchEvent && 'which' in e && e.which === 3) { return; } 6059 if (!data.isTouchEvent && 'button' in e && e.button > 0) { return; } 6060 if (data.isTouched && data.isMoved) { return; } 6061 if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : ("." + (params.noSwipingClass)))[0]) { 6062 swiper.allowClick = true; 6063 return; 6064 } 6065 if (params.swipeHandler) { 6066 if (!$(e).closest(params.swipeHandler)[0]) { return; } 6067 } 6068 6069 touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 6070 touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 6071 var startX = touches.currentX; 6072 var startY = touches.currentY; 6073 6074 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore 6075 6076 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; 6077 var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; 6078 if ( 6079 edgeSwipeDetection 6080 && ((startX <= edgeSwipeThreshold) 6081 || (startX >= win.screen.width - edgeSwipeThreshold)) 6082 ) { 6083 return; 6084 } 6085 6086 Utils.extend(data, { 6087 isTouched: true, 6088 isMoved: false, 6089 allowTouchCallbacks: true, 6090 isScrolling: undefined, 6091 startMoving: undefined, 6092 }); 6093 6094 touches.startX = startX; 6095 touches.startY = startY; 6096 data.touchStartTime = Utils.now(); 6097 swiper.allowClick = true; 6098 swiper.updateSize(); 6099 swiper.swipeDirection = undefined; 6100 if (params.threshold > 0) { data.allowThresholdMove = false; } 6101 if (e.type !== 'touchstart') { 6102 var preventDefault = true; 6103 if ($(e.target).is(data.formElements)) { preventDefault = false; } 6104 if ( 6105 doc.activeElement 6106 && $(doc.activeElement).is(data.formElements) 6107 && doc.activeElement !== e.target 6108 ) { 6109 doc.activeElement.blur(); 6110 } 6111 6112 var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 6113 if (params.touchStartForcePreventDefault || shouldPreventDefault) { 6114 e.preventDefault(); 6115 } 6116 } 6117 swiper.emit('touchStart', e); 6118 } 6119 6120 function onTouchMove (event) { 6121 var swiper = this; 6122 var data = swiper.touchEventsData; 6123 var params = swiper.params; 6124 var touches = swiper.touches; 6125 var rtl = swiper.rtlTranslate; 6126 var e = event; 6127 if (e.originalEvent) { e = e.originalEvent; } 6128 if (!data.isTouched) { 6129 if (data.startMoving && data.isScrolling) { 6130 swiper.emit('touchMoveOpposite', e); 6131 } 6132 return; 6133 } 6134 if (data.isTouchEvent && e.type === 'mousemove') { return; } 6135 var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 6136 var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 6137 if (e.preventedByNestedSwiper) { 6138 touches.startX = pageX; 6139 touches.startY = pageY; 6140 return; 6141 } 6142 if (!swiper.allowTouchMove) { 6143 // isMoved = true; 6144 swiper.allowClick = false; 6145 if (data.isTouched) { 6146 Utils.extend(touches, { 6147 startX: pageX, 6148 startY: pageY, 6149 currentX: pageX, 6150 currentY: pageY, 6151 }); 6152 data.touchStartTime = Utils.now(); 6153 } 6154 return; 6155 } 6156 if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { 6157 if (swiper.isVertical()) { 6158 // Vertical 6159 if ( 6160 (pageY < touches.startY && swiper.translate <= swiper.maxTranslate()) 6161 || (pageY > touches.startY && swiper.translate >= swiper.minTranslate()) 6162 ) { 6163 data.isTouched = false; 6164 data.isMoved = false; 6165 return; 6166 } 6167 } else if ( 6168 (pageX < touches.startX && swiper.translate <= swiper.maxTranslate()) 6169 || (pageX > touches.startX && swiper.translate >= swiper.minTranslate()) 6170 ) { 6171 return; 6172 } 6173 } 6174 if (data.isTouchEvent && doc.activeElement) { 6175 if (e.target === doc.activeElement && $(e.target).is(data.formElements)) { 6176 data.isMoved = true; 6177 swiper.allowClick = false; 6178 return; 6179 } 6180 } 6181 if (data.allowTouchCallbacks) { 6182 swiper.emit('touchMove', e); 6183 } 6184 if (e.targetTouches && e.targetTouches.length > 1) { return; } 6185 6186 touches.currentX = pageX; 6187 touches.currentY = pageY; 6188 6189 var diffX = touches.currentX - touches.startX; 6190 var diffY = touches.currentY - touches.startY; 6191 if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; } 6192 6193 if (typeof data.isScrolling === 'undefined') { 6194 var touchAngle; 6195 if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) { 6196 data.isScrolling = false; 6197 } else { 6198 // eslint-disable-next-line 6199 if ((diffX * diffX) + (diffY * diffY) >= 25) { 6200 touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI; 6201 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle); 6202 } 6203 } 6204 } 6205 if (data.isScrolling) { 6206 swiper.emit('touchMoveOpposite', e); 6207 } 6208 if (typeof data.startMoving === 'undefined') { 6209 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 6210 data.startMoving = true; 6211 } 6212 } 6213 if (data.isScrolling) { 6214 data.isTouched = false; 6215 return; 6216 } 6217 if (!data.startMoving) { 6218 return; 6219 } 6220 swiper.allowClick = false; 6221 e.preventDefault(); 6222 if (params.touchMoveStopPropagation && !params.nested) { 6223 e.stopPropagation(); 6224 } 6225 6226 if (!data.isMoved) { 6227 if (params.loop) { 6228 swiper.loopFix(); 6229 } 6230 data.startTranslate = swiper.getTranslate(); 6231 swiper.setTransition(0); 6232 if (swiper.animating) { 6233 swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); 6234 } 6235 data.allowMomentumBounce = false; 6236 // Grab Cursor 6237 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 6238 swiper.setGrabCursor(true); 6239 } 6240 swiper.emit('sliderFirstMove', e); 6241 } 6242 swiper.emit('sliderMove', e); 6243 data.isMoved = true; 6244 6245 var diff = swiper.isHorizontal() ? diffX : diffY; 6246 touches.diff = diff; 6247 6248 diff *= params.touchRatio; 6249 if (rtl) { diff = -diff; } 6250 6251 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 6252 data.currentTranslate = diff + data.startTranslate; 6253 6254 var disableParentSwiper = true; 6255 var resistanceRatio = params.resistanceRatio; 6256 if (params.touchReleaseOnEdges) { 6257 resistanceRatio = 0; 6258 } 6259 if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) { 6260 disableParentSwiper = false; 6261 if (params.resistance) { data.currentTranslate = (swiper.minTranslate() - 1) + (Math.pow( (-swiper.minTranslate() + data.startTranslate + diff), resistanceRatio )); } 6262 } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { 6263 disableParentSwiper = false; 6264 if (params.resistance) { data.currentTranslate = (swiper.maxTranslate() + 1) - (Math.pow( (swiper.maxTranslate() - data.startTranslate - diff), resistanceRatio )); } 6265 } 6266 6267 if (disableParentSwiper) { 6268 e.preventedByNestedSwiper = true; 6269 } 6270 6271 // Directions locks 6272 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 6273 data.currentTranslate = data.startTranslate; 6274 } 6275 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 6276 data.currentTranslate = data.startTranslate; 6277 } 6278 6279 6280 // Threshold 6281 if (params.threshold > 0) { 6282 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 6283 if (!data.allowThresholdMove) { 6284 data.allowThresholdMove = true; 6285 touches.startX = touches.currentX; 6286 touches.startY = touches.currentY; 6287 data.currentTranslate = data.startTranslate; 6288 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 6289 return; 6290 } 6291 } else { 6292 data.currentTranslate = data.startTranslate; 6293 return; 6294 } 6295 } 6296 6297 if (!params.followFinger) { return; } 6298 6299 // Update active index in free mode 6300 if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { 6301 swiper.updateActiveIndex(); 6302 swiper.updateSlidesClasses(); 6303 } 6304 if (params.freeMode) { 6305 // Velocity 6306 if (data.velocities.length === 0) { 6307 data.velocities.push({ 6308 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 6309 time: data.touchStartTime, 6310 }); 6311 } 6312 data.velocities.push({ 6313 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 6314 time: Utils.now(), 6315 }); 6316 } 6317 // Update progress 6318 swiper.updateProgress(data.currentTranslate); 6319 // Update translate 6320 swiper.setTranslate(data.currentTranslate); 6321 } 6322 6323 function onTouchEnd (event) { 6324 var swiper = this; 6325 var data = swiper.touchEventsData; 6326 6327 var params = swiper.params; 6328 var touches = swiper.touches; 6329 var rtl = swiper.rtlTranslate; 6330 var $wrapperEl = swiper.$wrapperEl; 6331 var slidesGrid = swiper.slidesGrid; 6332 var snapGrid = swiper.snapGrid; 6333 var e = event; 6334 if (e.originalEvent) { e = e.originalEvent; } 6335 if (data.allowTouchCallbacks) { 6336 swiper.emit('touchEnd', e); 6337 } 6338 data.allowTouchCallbacks = false; 6339 if (!data.isTouched) { 6340 if (data.isMoved && params.grabCursor) { 6341 swiper.setGrabCursor(false); 6342 } 6343 data.isMoved = false; 6344 data.startMoving = false; 6345 return; 6346 } 6347 // Return Grab Cursor 6348 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 6349 swiper.setGrabCursor(false); 6350 } 6351 6352 // Time diff 6353 var touchEndTime = Utils.now(); 6354 var timeDiff = touchEndTime - data.touchStartTime; 6355 6356 // Tap, doubleTap, Click 6357 if (swiper.allowClick) { 6358 swiper.updateClickedSlide(e); 6359 swiper.emit('tap', e); 6360 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) { 6361 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 6362 data.clickTimeout = Utils.nextTick(function () { 6363 if (!swiper || swiper.destroyed) { return; } 6364 swiper.emit('click', e); 6365 }, 300); 6366 } 6367 if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) { 6368 if (data.clickTimeout) { clearTimeout(data.clickTimeout); } 6369 swiper.emit('doubleTap', e); 6370 } 6371 } 6372 6373 data.lastClickTime = Utils.now(); 6374 Utils.nextTick(function () { 6375 if (!swiper.destroyed) { swiper.allowClick = true; } 6376 }); 6377 6378 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { 6379 data.isTouched = false; 6380 data.isMoved = false; 6381 data.startMoving = false; 6382 return; 6383 } 6384 data.isTouched = false; 6385 data.isMoved = false; 6386 data.startMoving = false; 6387 6388 var currentPos; 6389 if (params.followFinger) { 6390 currentPos = rtl ? swiper.translate : -swiper.translate; 6391 } else { 6392 currentPos = -data.currentTranslate; 6393 } 6394 6395 if (params.freeMode) { 6396 if (currentPos < -swiper.minTranslate()) { 6397 swiper.slideTo(swiper.activeIndex); 6398 return; 6399 } 6400 if (currentPos > -swiper.maxTranslate()) { 6401 if (swiper.slides.length < snapGrid.length) { 6402 swiper.slideTo(snapGrid.length - 1); 6403 } else { 6404 swiper.slideTo(swiper.slides.length - 1); 6405 } 6406 return; 6407 } 6408 6409 if (params.freeModeMomentum) { 6410 if (data.velocities.length > 1) { 6411 var lastMoveEvent = data.velocities.pop(); 6412 var velocityEvent = data.velocities.pop(); 6413 6414 var distance = lastMoveEvent.position - velocityEvent.position; 6415 var time = lastMoveEvent.time - velocityEvent.time; 6416 swiper.velocity = distance / time; 6417 swiper.velocity /= 2; 6418 if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { 6419 swiper.velocity = 0; 6420 } 6421 // this implies that the user stopped moving a finger then released. 6422 // There would be no events with distance zero, so the last event is stale. 6423 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) { 6424 swiper.velocity = 0; 6425 } 6426 } else { 6427 swiper.velocity = 0; 6428 } 6429 swiper.velocity *= params.freeModeMomentumVelocityRatio; 6430 6431 data.velocities.length = 0; 6432 var momentumDuration = 1000 * params.freeModeMomentumRatio; 6433 var momentumDistance = swiper.velocity * momentumDuration; 6434 6435 var newPosition = swiper.translate + momentumDistance; 6436 if (rtl) { newPosition = -newPosition; } 6437 6438 var doBounce = false; 6439 var afterBouncePosition; 6440 var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; 6441 var needsLoopFix; 6442 if (newPosition < swiper.maxTranslate()) { 6443 if (params.freeModeMomentumBounce) { 6444 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 6445 newPosition = swiper.maxTranslate() - bounceAmount; 6446 } 6447 afterBouncePosition = swiper.maxTranslate(); 6448 doBounce = true; 6449 data.allowMomentumBounce = true; 6450 } else { 6451 newPosition = swiper.maxTranslate(); 6452 } 6453 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 6454 } else if (newPosition > swiper.minTranslate()) { 6455 if (params.freeModeMomentumBounce) { 6456 if (newPosition - swiper.minTranslate() > bounceAmount) { 6457 newPosition = swiper.minTranslate() + bounceAmount; 6458 } 6459 afterBouncePosition = swiper.minTranslate(); 6460 doBounce = true; 6461 data.allowMomentumBounce = true; 6462 } else { 6463 newPosition = swiper.minTranslate(); 6464 } 6465 if (params.loop && params.centeredSlides) { needsLoopFix = true; } 6466 } else if (params.freeModeSticky) { 6467 var nextSlide; 6468 for (var j = 0; j < snapGrid.length; j += 1) { 6469 if (snapGrid[j] > -newPosition) { 6470 nextSlide = j; 6471 break; 6472 } 6473 } 6474 6475 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 6476 newPosition = snapGrid[nextSlide]; 6477 } else { 6478 newPosition = snapGrid[nextSlide - 1]; 6479 } 6480 newPosition = -newPosition; 6481 } 6482 if (needsLoopFix) { 6483 swiper.once('transitionEnd', function () { 6484 swiper.loopFix(); 6485 }); 6486 } 6487 // Fix duration 6488 if (swiper.velocity !== 0) { 6489 if (rtl) { 6490 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 6491 } else { 6492 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 6493 } 6494 } else if (params.freeModeSticky) { 6495 swiper.slideToClosest(); 6496 return; 6497 } 6498 6499 if (params.freeModeMomentumBounce && doBounce) { 6500 swiper.updateProgress(afterBouncePosition); 6501 swiper.setTransition(momentumDuration); 6502 swiper.setTranslate(newPosition); 6503 swiper.transitionStart(true, swiper.swipeDirection); 6504 swiper.animating = true; 6505 $wrapperEl.transitionEnd(function () { 6506 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { return; } 6507 swiper.emit('momentumBounce'); 6508 6509 swiper.setTransition(params.speed); 6510 swiper.setTranslate(afterBouncePosition); 6511 $wrapperEl.transitionEnd(function () { 6512 if (!swiper || swiper.destroyed) { return; } 6513 swiper.transitionEnd(); 6514 }); 6515 }); 6516 } else if (swiper.velocity) { 6517 swiper.updateProgress(newPosition); 6518 swiper.setTransition(momentumDuration); 6519 swiper.setTranslate(newPosition); 6520 swiper.transitionStart(true, swiper.swipeDirection); 6521 if (!swiper.animating) { 6522 swiper.animating = true; 6523 $wrapperEl.transitionEnd(function () { 6524 if (!swiper || swiper.destroyed) { return; } 6525 swiper.transitionEnd(); 6526 }); 6527 } 6528 } else { 6529 swiper.updateProgress(newPosition); 6530 } 6531 6532 swiper.updateActiveIndex(); 6533 swiper.updateSlidesClasses(); 6534 } else if (params.freeModeSticky) { 6535 swiper.slideToClosest(); 6536 return; 6537 } 6538 6539 if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { 6540 swiper.updateProgress(); 6541 swiper.updateActiveIndex(); 6542 swiper.updateSlidesClasses(); 6543 } 6544 return; 6545 } 6546 6547 // Find current slide 6548 var stopIndex = 0; 6549 var groupSize = swiper.slidesSizesGrid[0]; 6550 for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) { 6551 if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') { 6552 if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) { 6553 stopIndex = i; 6554 groupSize = slidesGrid[i + params.slidesPerGroup] - slidesGrid[i]; 6555 } 6556 } else if (currentPos >= slidesGrid[i]) { 6557 stopIndex = i; 6558 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 6559 } 6560 } 6561 6562 // Find current slide size 6563 var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 6564 6565 if (timeDiff > params.longSwipesMs) { 6566 // Long touches 6567 if (!params.longSwipes) { 6568 swiper.slideTo(swiper.activeIndex); 6569 return; 6570 } 6571 if (swiper.swipeDirection === 'next') { 6572 if (ratio >= params.longSwipesRatio) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 6573 else { swiper.slideTo(stopIndex); } 6574 } 6575 if (swiper.swipeDirection === 'prev') { 6576 if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); } 6577 else { swiper.slideTo(stopIndex); } 6578 } 6579 } else { 6580 // Short swipes 6581 if (!params.shortSwipes) { 6582 swiper.slideTo(swiper.activeIndex); 6583 return; 6584 } 6585 if (swiper.swipeDirection === 'next') { 6586 swiper.slideTo(stopIndex + params.slidesPerGroup); 6587 } 6588 if (swiper.swipeDirection === 'prev') { 6589 swiper.slideTo(stopIndex); 6590 } 6591 } 6592 } 6593 6594 function onResize () { 6595 var swiper = this; 6596 6597 var params = swiper.params; 6598 var el = swiper.el; 6599 6600 if (el && el.offsetWidth === 0) { return; } 6601 6602 // Breakpoints 6603 if (params.breakpoints) { 6604 swiper.setBreakpoint(); 6605 } 6606 6607 // Save locks 6608 var allowSlideNext = swiper.allowSlideNext; 6609 var allowSlidePrev = swiper.allowSlidePrev; 6610 var snapGrid = swiper.snapGrid; 6611 6612 // Disable locks on resize 6613 swiper.allowSlideNext = true; 6614 swiper.allowSlidePrev = true; 6615 6616 swiper.updateSize(); 6617 swiper.updateSlides(); 6618 6619 if (params.freeMode) { 6620 var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate()); 6621 swiper.setTranslate(newTranslate); 6622 swiper.updateActiveIndex(); 6623 swiper.updateSlidesClasses(); 6624 6625 if (params.autoHeight) { 6626 swiper.updateAutoHeight(); 6627 } 6628 } else { 6629 swiper.updateSlidesClasses(); 6630 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 6631 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 6632 } else { 6633 swiper.slideTo(swiper.activeIndex, 0, false, true); 6634 } 6635 } 6636 // Return locks after resize 6637 swiper.allowSlidePrev = allowSlidePrev; 6638 swiper.allowSlideNext = allowSlideNext; 6639 6640 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 6641 swiper.checkOverflow(); 6642 } 6643 } 6644 6645 function onClick (e) { 6646 var swiper = this; 6647 if (!swiper.allowClick) { 6648 if (swiper.params.preventClicks) { e.preventDefault(); } 6649 if (swiper.params.preventClicksPropagation && swiper.animating) { 6650 e.stopPropagation(); 6651 e.stopImmediatePropagation(); 6652 } 6653 } 6654 } 6655 6656 function attachEvents() { 6657 var swiper = this; 6658 var params = swiper.params; 6659 var touchEvents = swiper.touchEvents; 6660 var el = swiper.el; 6661 var wrapperEl = swiper.wrapperEl; 6662 6663 { 6664 swiper.onTouchStart = onTouchStart.bind(swiper); 6665 swiper.onTouchMove = onTouchMove.bind(swiper); 6666 swiper.onTouchEnd = onTouchEnd.bind(swiper); 6667 } 6668 6669 swiper.onClick = onClick.bind(swiper); 6670 6671 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 6672 var capture = !!params.nested; 6673 6674 // Touch Events 6675 { 6676 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 6677 target.addEventListener(touchEvents.start, swiper.onTouchStart, false); 6678 doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture); 6679 doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false); 6680 } else { 6681 if (Support.touch) { 6682 var passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 6683 target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 6684 target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture: capture } : capture); 6685 target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 6686 } 6687 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 6688 target.addEventListener('mousedown', swiper.onTouchStart, false); 6689 doc.addEventListener('mousemove', swiper.onTouchMove, capture); 6690 doc.addEventListener('mouseup', swiper.onTouchEnd, false); 6691 } 6692 } 6693 // Prevent Links Clicks 6694 if (params.preventClicks || params.preventClicksPropagation) { 6695 target.addEventListener('click', swiper.onClick, true); 6696 } 6697 } 6698 6699 // Resize handler 6700 swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true); 6701 } 6702 6703 function detachEvents() { 6704 var swiper = this; 6705 6706 var params = swiper.params; 6707 var touchEvents = swiper.touchEvents; 6708 var el = swiper.el; 6709 var wrapperEl = swiper.wrapperEl; 6710 6711 var target = params.touchEventsTarget === 'container' ? el : wrapperEl; 6712 var capture = !!params.nested; 6713 6714 // Touch Events 6715 { 6716 if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) { 6717 target.removeEventListener(touchEvents.start, swiper.onTouchStart, false); 6718 doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 6719 doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false); 6720 } else { 6721 if (Support.touch) { 6722 var passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 6723 target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 6724 target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 6725 target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 6726 } 6727 if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) { 6728 target.removeEventListener('mousedown', swiper.onTouchStart, false); 6729 doc.removeEventListener('mousemove', swiper.onTouchMove, capture); 6730 doc.removeEventListener('mouseup', swiper.onTouchEnd, false); 6731 } 6732 } 6733 // Prevent Links Clicks 6734 if (params.preventClicks || params.preventClicksPropagation) { 6735 target.removeEventListener('click', swiper.onClick, true); 6736 } 6737 } 6738 6739 // Resize handler 6740 swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize); 6741 } 6742 6743 var events = { 6744 attachEvents: attachEvents, 6745 detachEvents: detachEvents, 6746 }; 6747 6748 function setBreakpoint () { 6749 var swiper = this; 6750 var activeIndex = swiper.activeIndex; 6751 var initialized = swiper.initialized; 6752 var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0; 6753 var params = swiper.params; 6754 var breakpoints = params.breakpoints; 6755 if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; } 6756 6757 // Set breakpoint for window width and update parameters 6758 var breakpoint = swiper.getBreakpoint(breakpoints); 6759 6760 if (breakpoint && swiper.currentBreakpoint !== breakpoint) { 6761 var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 6762 if (breakpointOnlyParams) { 6763 ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach(function (param) { 6764 var paramValue = breakpointOnlyParams[param]; 6765 if (typeof paramValue === 'undefined') { return; } 6766 if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) { 6767 breakpointOnlyParams[param] = 'auto'; 6768 } else if (param === 'slidesPerView') { 6769 breakpointOnlyParams[param] = parseFloat(paramValue); 6770 } else { 6771 breakpointOnlyParams[param] = parseInt(paramValue, 10); 6772 } 6773 }); 6774 } 6775 6776 var breakpointParams = breakpointOnlyParams || swiper.originalParams; 6777 var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 6778 var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 6779 6780 if (directionChanged && initialized) { 6781 swiper.changeDirection(); 6782 } 6783 6784 Utils.extend(swiper.params, breakpointParams); 6785 6786 Utils.extend(swiper, { 6787 allowTouchMove: swiper.params.allowTouchMove, 6788 allowSlideNext: swiper.params.allowSlideNext, 6789 allowSlidePrev: swiper.params.allowSlidePrev, 6790 }); 6791 6792 swiper.currentBreakpoint = breakpoint; 6793 6794 if (needsReLoop && initialized) { 6795 swiper.loopDestroy(); 6796 swiper.loopCreate(); 6797 swiper.updateSlides(); 6798 swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false); 6799 } 6800 6801 swiper.emit('breakpoint', breakpointParams); 6802 } 6803 } 6804 6805 function getBreakpoint (breakpoints) { 6806 var swiper = this; 6807 // Get breakpoint for window width 6808 if (!breakpoints) { return undefined; } 6809 var breakpoint = false; 6810 var points = []; 6811 Object.keys(breakpoints).forEach(function (point) { 6812 points.push(point); 6813 }); 6814 points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); }); 6815 for (var i = 0; i < points.length; i += 1) { 6816 var point = points[i]; 6817 if (swiper.params.breakpointsInverse) { 6818 if (point <= win.innerWidth) { 6819 breakpoint = point; 6820 } 6821 } else if (point >= win.innerWidth && !breakpoint) { 6822 breakpoint = point; 6823 } 6824 } 6825 return breakpoint || 'max'; 6826 } 6827 6828 var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint }; 6829 6830 function addClasses () { 6831 var swiper = this; 6832 var classNames = swiper.classNames; 6833 var params = swiper.params; 6834 var rtl = swiper.rtl; 6835 var $el = swiper.$el; 6836 var suffixes = []; 6837 6838 suffixes.push('initialized'); 6839 suffixes.push(params.direction); 6840 6841 if (params.freeMode) { 6842 suffixes.push('free-mode'); 6843 } 6844 if (!Support.flexbox) { 6845 suffixes.push('no-flexbox'); 6846 } 6847 if (params.autoHeight) { 6848 suffixes.push('autoheight'); 6849 } 6850 if (rtl) { 6851 suffixes.push('rtl'); 6852 } 6853 if (params.slidesPerColumn > 1) { 6854 suffixes.push('multirow'); 6855 } 6856 if (Device.android) { 6857 suffixes.push('android'); 6858 } 6859 if (Device.ios) { 6860 suffixes.push('ios'); 6861 } 6862 // WP8 Touch Events Fix 6863 if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { 6864 suffixes.push(("wp8-" + (params.direction))); 6865 } 6866 6867 suffixes.forEach(function (suffix) { 6868 classNames.push(params.containerModifierClass + suffix); 6869 }); 6870 6871 $el.addClass(classNames.join(' ')); 6872 } 6873 6874 function removeClasses () { 6875 var swiper = this; 6876 var $el = swiper.$el; 6877 var classNames = swiper.classNames; 6878 6879 $el.removeClass(classNames.join(' ')); 6880 } 6881 6882 var classes = { addClasses: addClasses, removeClasses: removeClasses }; 6883 6884 function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) { 6885 var image; 6886 function onReady() { 6887 if (callback) { callback(); } 6888 } 6889 if (!imageEl.complete || !checkForComplete) { 6890 if (src) { 6891 image = new win.Image(); 6892 image.onload = onReady; 6893 image.onerror = onReady; 6894 if (sizes) { 6895 image.sizes = sizes; 6896 } 6897 if (srcset) { 6898 image.srcset = srcset; 6899 } 6900 if (src) { 6901 image.src = src; 6902 } 6903 } else { 6904 onReady(); 6905 } 6906 } else { 6907 // image already loaded... 6908 onReady(); 6909 } 6910 } 6911 6912 function preloadImages () { 6913 var swiper = this; 6914 swiper.imagesToLoad = swiper.$el.find('img'); 6915 function onReady() { 6916 if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) { return; } 6917 if (swiper.imagesLoaded !== undefined) { swiper.imagesLoaded += 1; } 6918 if (swiper.imagesLoaded === swiper.imagesToLoad.length) { 6919 if (swiper.params.updateOnImagesReady) { swiper.update(); } 6920 swiper.emit('imagesReady'); 6921 } 6922 } 6923 for (var i = 0; i < swiper.imagesToLoad.length; i += 1) { 6924 var imageEl = swiper.imagesToLoad[i]; 6925 swiper.loadImage( 6926 imageEl, 6927 imageEl.currentSrc || imageEl.getAttribute('src'), 6928 imageEl.srcset || imageEl.getAttribute('srcset'), 6929 imageEl.sizes || imageEl.getAttribute('sizes'), 6930 true, 6931 onReady 6932 ); 6933 } 6934 } 6935 6936 var images = { 6937 loadImage: loadImage, 6938 preloadImages: preloadImages, 6939 }; 6940 6941 function checkOverflow() { 6942 var swiper = this; 6943 var wasLocked = swiper.isLocked; 6944 6945 swiper.isLocked = swiper.snapGrid.length === 1; 6946 swiper.allowSlideNext = !swiper.isLocked; 6947 swiper.allowSlidePrev = !swiper.isLocked; 6948 6949 // events 6950 if (wasLocked !== swiper.isLocked) { swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); } 6951 6952 if (wasLocked && wasLocked !== swiper.isLocked) { 6953 swiper.isEnd = false; 6954 swiper.navigation.update(); 6955 } 6956 } 6957 6958 var checkOverflow$1 = { checkOverflow: checkOverflow }; 6959 6960 var defaults = { 6961 init: true, 6962 direction: 'horizontal', 6963 touchEventsTarget: 'container', 6964 initialSlide: 0, 6965 speed: 300, 6966 // 6967 preventInteractionOnTransition: false, 6968 6969 // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView). 6970 edgeSwipeDetection: false, 6971 edgeSwipeThreshold: 20, 6972 6973 // Free mode 6974 freeMode: false, 6975 freeModeMomentum: true, 6976 freeModeMomentumRatio: 1, 6977 freeModeMomentumBounce: true, 6978 freeModeMomentumBounceRatio: 1, 6979 freeModeMomentumVelocityRatio: 1, 6980 freeModeSticky: false, 6981 freeModeMinimumVelocity: 0.02, 6982 6983 // Autoheight 6984 autoHeight: false, 6985 6986 // Set wrapper width 6987 setWrapperSize: false, 6988 6989 // Virtual Translate 6990 virtualTranslate: false, 6991 6992 // Effects 6993 effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 6994 6995 // Breakpoints 6996 breakpoints: undefined, 6997 breakpointsInverse: false, 6998 6999 // Slides grid 7000 spaceBetween: 0, 7001 slidesPerView: 1, 7002 slidesPerColumn: 1, 7003 slidesPerColumnFill: 'column', 7004 slidesPerGroup: 1, 7005 centeredSlides: false, 7006 slidesOffsetBefore: 0, // in px 7007 slidesOffsetAfter: 0, // in px 7008 normalizeSlideIndex: true, 7009 centerInsufficientSlides: false, 7010 7011 // Disable swiper and hide navigation when container not overflow 7012 watchOverflow: false, 7013 7014 // Round length 7015 roundLengths: false, 7016 7017 // Touches 7018 touchRatio: 1, 7019 touchAngle: 45, 7020 simulateTouch: true, 7021 shortSwipes: true, 7022 longSwipes: true, 7023 longSwipesRatio: 0.5, 7024 longSwipesMs: 300, 7025 followFinger: true, 7026 allowTouchMove: true, 7027 threshold: 0, 7028 touchMoveStopPropagation: true, 7029 touchStartPreventDefault: true, 7030 touchStartForcePreventDefault: false, 7031 touchReleaseOnEdges: false, 7032 7033 // Unique Navigation Elements 7034 uniqueNavElements: true, 7035 7036 // Resistance 7037 resistance: true, 7038 resistanceRatio: 0.85, 7039 7040 // Progress 7041 watchSlidesProgress: false, 7042 watchSlidesVisibility: false, 7043 7044 // Cursor 7045 grabCursor: false, 7046 7047 // Clicks 7048 preventClicks: true, 7049 preventClicksPropagation: true, 7050 slideToClickedSlide: false, 7051 7052 // Images 7053 preloadImages: true, 7054 updateOnImagesReady: true, 7055 7056 // loop 7057 loop: false, 7058 loopAdditionalSlides: 0, 7059 loopedSlides: null, 7060 loopFillGroupWithBlank: false, 7061 7062 // Swiping/no swiping 7063 allowSlidePrev: true, 7064 allowSlideNext: true, 7065 swipeHandler: null, // '.swipe-handler', 7066 noSwiping: true, 7067 noSwipingClass: 'swiper-no-swiping', 7068 noSwipingSelector: null, 7069 7070 // Passive Listeners 7071 passiveListeners: true, 7072 7073 // NS 7074 containerModifierClass: 'swiper-container-', // NEW 7075 slideClass: 'swiper-slide', 7076 slideBlankClass: 'swiper-slide-invisible-blank', 7077 slideActiveClass: 'swiper-slide-active', 7078 slideDuplicateActiveClass: 'swiper-slide-duplicate-active', 7079 slideVisibleClass: 'swiper-slide-visible', 7080 slideDuplicateClass: 'swiper-slide-duplicate', 7081 slideNextClass: 'swiper-slide-next', 7082 slideDuplicateNextClass: 'swiper-slide-duplicate-next', 7083 slidePrevClass: 'swiper-slide-prev', 7084 slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', 7085 wrapperClass: 'swiper-wrapper', 7086 7087 // Callbacks 7088 runCallbacksOnInit: true, 7089 }; 7090 7091 /* eslint no-param-reassign: "off" */ 7092 7093 var prototypes = { 7094 update: update, 7095 translate: translate, 7096 transition: transition$1, 7097 slide: slide, 7098 loop: loop, 7099 grabCursor: grabCursor, 7100 manipulation: manipulation, 7101 events: events, 7102 breakpoints: breakpoints, 7103 checkOverflow: checkOverflow$1, 7104 classes: classes, 7105 images: images, 7106 }; 7107 7108 var extendedDefaults = {}; 7109 7110 var Swiper = /*@__PURE__*/(function (SwiperClass) { 7111 function Swiper() { 7112 var assign; 7113 7114 var args = [], len = arguments.length; 7115 while ( len-- ) args[ len ] = arguments[ len ]; 7116 var el; 7117 var params; 7118 if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { 7119 params = args[0]; 7120 } else { 7121 (assign = args, el = assign[0], params = assign[1]); 7122 } 7123 if (!params) { params = {}; } 7124 7125 params = Utils.extend({}, params); 7126 if (el && !params.el) { params.el = el; } 7127 7128 SwiperClass.call(this, params); 7129 7130 Object.keys(prototypes).forEach(function (prototypeGroup) { 7131 Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) { 7132 if (!Swiper.prototype[protoMethod]) { 7133 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 7134 } 7135 }); 7136 }); 7137 7138 // Swiper Instance 7139 var swiper = this; 7140 if (typeof swiper.modules === 'undefined') { 7141 swiper.modules = {}; 7142 } 7143 Object.keys(swiper.modules).forEach(function (moduleName) { 7144 var module = swiper.modules[moduleName]; 7145 if (module.params) { 7146 var moduleParamName = Object.keys(module.params)[0]; 7147 var moduleParams = module.params[moduleParamName]; 7148 if (typeof moduleParams !== 'object' || moduleParams === null) { return; } 7149 if (!(moduleParamName in params && 'enabled' in moduleParams)) { return; } 7150 if (params[moduleParamName] === true) { 7151 params[moduleParamName] = { enabled: true }; 7152 } 7153 if ( 7154 typeof params[moduleParamName] === 'object' 7155 && !('enabled' in params[moduleParamName]) 7156 ) { 7157 params[moduleParamName].enabled = true; 7158 } 7159 if (!params[moduleParamName]) { params[moduleParamName] = { enabled: false }; } 7160 } 7161 }); 7162 7163 // Extend defaults with modules params 7164 var swiperParams = Utils.extend({}, defaults); 7165 swiper.useModulesParams(swiperParams); 7166 7167 // Extend defaults with passed params 7168 swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params); 7169 swiper.originalParams = Utils.extend({}, swiper.params); 7170 swiper.passedParams = Utils.extend({}, params); 7171 7172 // Save Dom lib 7173 swiper.$ = $; 7174 7175 // Find el 7176 var $el = $(swiper.params.el); 7177 el = $el[0]; 7178 7179 if (!el) { 7180 return undefined; 7181 } 7182 7183 if ($el.length > 1) { 7184 var swipers = []; 7185 $el.each(function (index, containerEl) { 7186 var newParams = Utils.extend({}, params, { el: containerEl }); 7187 swipers.push(new Swiper(newParams)); 7188 }); 7189 return swipers; 7190 } 7191 7192 el.swiper = swiper; 7193 $el.data('swiper', swiper); 7194 7195 // Find Wrapper 7196 var $wrapperEl = $el.children(("." + (swiper.params.wrapperClass))); 7197 7198 // Extend Swiper 7199 Utils.extend(swiper, { 7200 $el: $el, 7201 el: el, 7202 $wrapperEl: $wrapperEl, 7203 wrapperEl: $wrapperEl[0], 7204 7205 // Classes 7206 classNames: [], 7207 7208 // Slides 7209 slides: $(), 7210 slidesGrid: [], 7211 snapGrid: [], 7212 slidesSizesGrid: [], 7213 7214 // isDirection 7215 isHorizontal: function isHorizontal() { 7216 return swiper.params.direction === 'horizontal'; 7217 }, 7218 isVertical: function isVertical() { 7219 return swiper.params.direction === 'vertical'; 7220 }, 7221 // RTL 7222 rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 7223 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 7224 wrongRTL: $wrapperEl.css('display') === '-webkit-box', 7225 7226 // Indexes 7227 activeIndex: 0, 7228 realIndex: 0, 7229 7230 // 7231 isBeginning: true, 7232 isEnd: false, 7233 7234 // Props 7235 translate: 0, 7236 previousTranslate: 0, 7237 progress: 0, 7238 velocity: 0, 7239 animating: false, 7240 7241 // Locks 7242 allowSlideNext: swiper.params.allowSlideNext, 7243 allowSlidePrev: swiper.params.allowSlidePrev, 7244 7245 // Touch Events 7246 touchEvents: (function touchEvents() { 7247 var touch = ['touchstart', 'touchmove', 'touchend']; 7248 var desktop = ['mousedown', 'mousemove', 'mouseup']; 7249 if (Support.pointerEvents) { 7250 desktop = ['pointerdown', 'pointermove', 'pointerup']; 7251 } else if (Support.prefixedPointerEvents) { 7252 desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp']; 7253 } 7254 swiper.touchEventsTouch = { 7255 start: touch[0], 7256 move: touch[1], 7257 end: touch[2], 7258 }; 7259 swiper.touchEventsDesktop = { 7260 start: desktop[0], 7261 move: desktop[1], 7262 end: desktop[2], 7263 }; 7264 return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; 7265 }()), 7266 touchEventsData: { 7267 isTouched: undefined, 7268 isMoved: undefined, 7269 allowTouchCallbacks: undefined, 7270 touchStartTime: undefined, 7271 isScrolling: undefined, 7272 currentTranslate: undefined, 7273 startTranslate: undefined, 7274 allowThresholdMove: undefined, 7275 // Form elements to match 7276 formElements: 'input, select, option, textarea, button, video', 7277 // Last click time 7278 lastClickTime: Utils.now(), 7279 clickTimeout: undefined, 7280 // Velocities 7281 velocities: [], 7282 allowMomentumBounce: undefined, 7283 isTouchEvent: undefined, 7284 startMoving: undefined, 7285 }, 7286 7287 // Clicks 7288 allowClick: true, 7289 7290 // Touches 7291 allowTouchMove: swiper.params.allowTouchMove, 7292 7293 touches: { 7294 startX: 0, 7295 startY: 0, 7296 currentX: 0, 7297 currentY: 0, 7298 diff: 0, 7299 }, 7300 7301 // Images 7302 imagesToLoad: [], 7303 imagesLoaded: 0, 7304 7305 }); 7306 7307 // Install Modules 7308 swiper.useModules(); 7309 7310 // Init 7311 if (swiper.params.init) { 7312 swiper.init(); 7313 } 7314 7315 // Return app instance 7316 return swiper; 7317 } 7318 7319 if ( SwiperClass ) Swiper.__proto__ = SwiperClass; 7320 Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype ); 7321 Swiper.prototype.constructor = Swiper; 7322 7323 var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } }; 7324 7325 Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () { 7326 var swiper = this; 7327 var params = swiper.params; 7328 var slides = swiper.slides; 7329 var slidesGrid = swiper.slidesGrid; 7330 var swiperSize = swiper.size; 7331 var activeIndex = swiper.activeIndex; 7332 var spv = 1; 7333 if (params.centeredSlides) { 7334 var slideSize = slides[activeIndex].swiperSlideSize; 7335 var breakLoop; 7336 for (var i = activeIndex + 1; i < slides.length; i += 1) { 7337 if (slides[i] && !breakLoop) { 7338 slideSize += slides[i].swiperSlideSize; 7339 spv += 1; 7340 if (slideSize > swiperSize) { breakLoop = true; } 7341 } 7342 } 7343 for (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) { 7344 if (slides[i$1] && !breakLoop) { 7345 slideSize += slides[i$1].swiperSlideSize; 7346 spv += 1; 7347 if (slideSize > swiperSize) { breakLoop = true; } 7348 } 7349 } 7350 } else { 7351 for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) { 7352 if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) { 7353 spv += 1; 7354 } 7355 } 7356 } 7357 return spv; 7358 }; 7359 7360 Swiper.prototype.update = function update () { 7361 var swiper = this; 7362 if (!swiper || swiper.destroyed) { return; } 7363 var snapGrid = swiper.snapGrid; 7364 var params = swiper.params; 7365 // Breakpoints 7366 if (params.breakpoints) { 7367 swiper.setBreakpoint(); 7368 } 7369 swiper.updateSize(); 7370 swiper.updateSlides(); 7371 swiper.updateProgress(); 7372 swiper.updateSlidesClasses(); 7373 7374 function setTranslate() { 7375 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 7376 var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 7377 swiper.setTranslate(newTranslate); 7378 swiper.updateActiveIndex(); 7379 swiper.updateSlidesClasses(); 7380 } 7381 var translated; 7382 if (swiper.params.freeMode) { 7383 setTranslate(); 7384 if (swiper.params.autoHeight) { 7385 swiper.updateAutoHeight(); 7386 } 7387 } else { 7388 if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 7389 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); 7390 } else { 7391 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 7392 } 7393 if (!translated) { 7394 setTranslate(); 7395 } 7396 } 7397 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 7398 swiper.checkOverflow(); 7399 } 7400 swiper.emit('update'); 7401 }; 7402 7403 Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) { 7404 if ( needUpdate === void 0 ) needUpdate = true; 7405 7406 var swiper = this; 7407 var currentDirection = swiper.params.direction; 7408 if (!newDirection) { 7409 // eslint-disable-next-line 7410 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 7411 } 7412 if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) { 7413 return swiper; 7414 } 7415 7416 if (currentDirection === 'vertical') { 7417 swiper.$el 7418 .removeClass(((swiper.params.containerModifierClass) + "vertical wp8-vertical")) 7419 .addClass(("" + (swiper.params.containerModifierClass) + newDirection)); 7420 7421 if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { 7422 swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection)); 7423 } 7424 } 7425 if (currentDirection === 'horizontal') { 7426 swiper.$el 7427 .removeClass(((swiper.params.containerModifierClass) + "horizontal wp8-horizontal")) 7428 .addClass(("" + (swiper.params.containerModifierClass) + newDirection)); 7429 7430 if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) { 7431 swiper.$el.addClass(((swiper.params.containerModifierClass) + "wp8-" + newDirection)); 7432 } 7433 } 7434 7435 swiper.params.direction = newDirection; 7436 7437 swiper.slides.each(function (slideIndex, slideEl) { 7438 if (newDirection === 'vertical') { 7439 slideEl.style.width = ''; 7440 } else { 7441 slideEl.style.height = ''; 7442 } 7443 }); 7444 7445 swiper.emit('changeDirection'); 7446 if (needUpdate) { swiper.update(); } 7447 7448 return swiper; 7449 }; 7450 7451 Swiper.prototype.init = function init () { 7452 var swiper = this; 7453 if (swiper.initialized) { return; } 7454 7455 swiper.emit('beforeInit'); 7456 7457 // Set breakpoint 7458 if (swiper.params.breakpoints) { 7459 swiper.setBreakpoint(); 7460 } 7461 7462 // Add Classes 7463 swiper.addClasses(); 7464 7465 // Create loop 7466 if (swiper.params.loop) { 7467 swiper.loopCreate(); 7468 } 7469 7470 // Update size 7471 swiper.updateSize(); 7472 7473 // Update slides 7474 swiper.updateSlides(); 7475 7476 if (swiper.params.watchOverflow) { 7477 swiper.checkOverflow(); 7478 } 7479 7480 // Set Grab Cursor 7481 if (swiper.params.grabCursor) { 7482 swiper.setGrabCursor(); 7483 } 7484 7485 if (swiper.params.preloadImages) { 7486 swiper.preloadImages(); 7487 } 7488 7489 // Slide To Initial Slide 7490 if (swiper.params.loop) { 7491 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit); 7492 } else { 7493 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit); 7494 } 7495 7496 // Attach events 7497 swiper.attachEvents(); 7498 7499 // Init Flag 7500 swiper.initialized = true; 7501 7502 // Emit 7503 swiper.emit('init'); 7504 }; 7505 7506 Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) { 7507 if ( deleteInstance === void 0 ) deleteInstance = true; 7508 if ( cleanStyles === void 0 ) cleanStyles = true; 7509 7510 var swiper = this; 7511 var params = swiper.params; 7512 var $el = swiper.$el; 7513 var $wrapperEl = swiper.$wrapperEl; 7514 var slides = swiper.slides; 7515 7516 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 7517 return null; 7518 } 7519 7520 swiper.emit('beforeDestroy'); 7521 7522 // Init Flag 7523 swiper.initialized = false; 7524 7525 // Detach events 7526 swiper.detachEvents(); 7527 7528 // Destroy loop 7529 if (params.loop) { 7530 swiper.loopDestroy(); 7531 } 7532 7533 // Cleanup styles 7534 if (cleanStyles) { 7535 swiper.removeClasses(); 7536 $el.removeAttr('style'); 7537 $wrapperEl.removeAttr('style'); 7538 if (slides && slides.length) { 7539 slides 7540 .removeClass([ 7541 params.slideVisibleClass, 7542 params.slideActiveClass, 7543 params.slideNextClass, 7544 params.slidePrevClass ].join(' ')) 7545 .removeAttr('style') 7546 .removeAttr('data-swiper-slide-index') 7547 .removeAttr('data-swiper-column') 7548 .removeAttr('data-swiper-row'); 7549 } 7550 } 7551 7552 swiper.emit('destroy'); 7553 7554 // Detach emitter events 7555 Object.keys(swiper.eventsListeners).forEach(function (eventName) { 7556 swiper.off(eventName); 7557 }); 7558 7559 if (deleteInstance !== false) { 7560 swiper.$el[0].swiper = null; 7561 swiper.$el.data('swiper', null); 7562 Utils.deleteProps(swiper); 7563 } 7564 swiper.destroyed = true; 7565 7566 return null; 7567 }; 7568 7569 Swiper.extendDefaults = function extendDefaults (newDefaults) { 7570 Utils.extend(extendedDefaults, newDefaults); 7571 }; 7572 7573 staticAccessors.extendedDefaults.get = function () { 7574 return extendedDefaults; 7575 }; 7576 7577 staticAccessors.defaults.get = function () { 7578 return defaults; 7579 }; 7580 7581 staticAccessors.Class.get = function () { 7582 return SwiperClass; 7583 }; 7584 7585 staticAccessors.$.get = function () { 7586 return $; 7587 }; 7588 7589 Object.defineProperties( Swiper, staticAccessors ); 7590 7591 return Swiper; 7592 }(SwiperClass)); 7593 7594 var Device$1 = { 7595 name: 'device', 7596 proto: { 7597 device: Device, 7598 }, 7599 static: { 7600 device: Device, 7601 }, 7602 }; 7603 7604 var Support$1 = { 7605 name: 'support', 7606 proto: { 7607 support: Support, 7608 }, 7609 static: { 7610 support: Support, 7611 }, 7612 }; 7613 7614 var Browser$1 = { 7615 name: 'browser', 7616 proto: { 7617 browser: Browser, 7618 }, 7619 static: { 7620 browser: Browser, 7621 }, 7622 }; 7623 7624 var Resize = { 7625 name: 'resize', 7626 create: function create() { 7627 var swiper = this; 7628 Utils.extend(swiper, { 7629 resize: { 7630 resizeHandler: function resizeHandler() { 7631 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 7632 swiper.emit('beforeResize'); 7633 swiper.emit('resize'); 7634 }, 7635 orientationChangeHandler: function orientationChangeHandler() { 7636 if (!swiper || swiper.destroyed || !swiper.initialized) { return; } 7637 swiper.emit('orientationchange'); 7638 }, 7639 }, 7640 }); 7641 }, 7642 on: { 7643 init: function init() { 7644 var swiper = this; 7645 // Emit resize 7646 win.addEventListener('resize', swiper.resize.resizeHandler); 7647 7648 // Emit orientationchange 7649 win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); 7650 }, 7651 destroy: function destroy() { 7652 var swiper = this; 7653 win.removeEventListener('resize', swiper.resize.resizeHandler); 7654 win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); 7655 }, 7656 }, 7657 }; 7658 7659 var Observer = { 7660 func: win.MutationObserver || win.WebkitMutationObserver, 7661 attach: function attach(target, options) { 7662 if ( options === void 0 ) options = {}; 7663 7664 var swiper = this; 7665 7666 var ObserverFunc = Observer.func; 7667 var observer = new ObserverFunc(function (mutations) { 7668 // The observerUpdate event should only be triggered 7669 // once despite the number of mutations. Additional 7670 // triggers are redundant and are very costly 7671 if (mutations.length === 1) { 7672 swiper.emit('observerUpdate', mutations[0]); 7673 return; 7674 } 7675 var observerUpdate = function observerUpdate() { 7676 swiper.emit('observerUpdate', mutations[0]); 7677 }; 7678 7679 if (win.requestAnimationFrame) { 7680 win.requestAnimationFrame(observerUpdate); 7681 } else { 7682 win.setTimeout(observerUpdate, 0); 7683 } 7684 }); 7685 7686 observer.observe(target, { 7687 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 7688 childList: typeof options.childList === 'undefined' ? true : options.childList, 7689 characterData: typeof options.characterData === 'undefined' ? true : options.characterData, 7690 }); 7691 7692 swiper.observer.observers.push(observer); 7693 }, 7694 init: function init() { 7695 var swiper = this; 7696 if (!Support.observer || !swiper.params.observer) { return; } 7697 if (swiper.params.observeParents) { 7698 var containerParents = swiper.$el.parents(); 7699 for (var i = 0; i < containerParents.length; i += 1) { 7700 swiper.observer.attach(containerParents[i]); 7701 } 7702 } 7703 // Observe container 7704 swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren }); 7705 7706 // Observe wrapper 7707 swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false }); 7708 }, 7709 destroy: function destroy() { 7710 var swiper = this; 7711 swiper.observer.observers.forEach(function (observer) { 7712 observer.disconnect(); 7713 }); 7714 swiper.observer.observers = []; 7715 }, 7716 }; 7717 7718 var Observer$1 = { 7719 name: 'observer', 7720 params: { 7721 observer: false, 7722 observeParents: false, 7723 observeSlideChildren: false, 7724 }, 7725 create: function create() { 7726 var swiper = this; 7727 Utils.extend(swiper, { 7728 observer: { 7729 init: Observer.init.bind(swiper), 7730 attach: Observer.attach.bind(swiper), 7731 destroy: Observer.destroy.bind(swiper), 7732 observers: [], 7733 }, 7734 }); 7735 }, 7736 on: { 7737 init: function init() { 7738 var swiper = this; 7739 swiper.observer.init(); 7740 }, 7741 destroy: function destroy() { 7742 var swiper = this; 7743 swiper.observer.destroy(); 7744 }, 7745 }, 7746 }; 7747 7748 var Virtual = { 7749 update: function update(force) { 7750 var swiper = this; 7751 var ref = swiper.params; 7752 var slidesPerView = ref.slidesPerView; 7753 var slidesPerGroup = ref.slidesPerGroup; 7754 var centeredSlides = ref.centeredSlides; 7755 var ref$1 = swiper.params.virtual; 7756 var addSlidesBefore = ref$1.addSlidesBefore; 7757 var addSlidesAfter = ref$1.addSlidesAfter; 7758 var ref$2 = swiper.virtual; 7759 var previousFrom = ref$2.from; 7760 var previousTo = ref$2.to; 7761 var slides = ref$2.slides; 7762 var previousSlidesGrid = ref$2.slidesGrid; 7763 var renderSlide = ref$2.renderSlide; 7764 var previousOffset = ref$2.offset; 7765 swiper.updateActiveIndex(); 7766 var activeIndex = swiper.activeIndex || 0; 7767 7768 var offsetProp; 7769 if (swiper.rtlTranslate) { offsetProp = 'right'; } 7770 else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; } 7771 7772 var slidesAfter; 7773 var slidesBefore; 7774 if (centeredSlides) { 7775 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 7776 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 7777 } else { 7778 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore; 7779 slidesBefore = slidesPerGroup + addSlidesAfter; 7780 } 7781 var from = Math.max((activeIndex || 0) - slidesBefore, 0); 7782 var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); 7783 var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 7784 7785 Utils.extend(swiper.virtual, { 7786 from: from, 7787 to: to, 7788 offset: offset, 7789 slidesGrid: swiper.slidesGrid, 7790 }); 7791 7792 function onRendered() { 7793 swiper.updateSlides(); 7794 swiper.updateProgress(); 7795 swiper.updateSlidesClasses(); 7796 if (swiper.lazy && swiper.params.lazy.enabled) { 7797 swiper.lazy.load(); 7798 } 7799 } 7800 7801 if (previousFrom === from && previousTo === to && !force) { 7802 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 7803 swiper.slides.css(offsetProp, (offset + "px")); 7804 } 7805 swiper.updateProgress(); 7806 return; 7807 } 7808 if (swiper.params.virtual.renderExternal) { 7809 swiper.params.virtual.renderExternal.call(swiper, { 7810 offset: offset, 7811 from: from, 7812 to: to, 7813 slides: (function getSlides() { 7814 var slidesToRender = []; 7815 for (var i = from; i <= to; i += 1) { 7816 slidesToRender.push(slides[i]); 7817 } 7818 return slidesToRender; 7819 }()), 7820 }); 7821 onRendered(); 7822 return; 7823 } 7824 var prependIndexes = []; 7825 var appendIndexes = []; 7826 if (force) { 7827 swiper.$wrapperEl.find(("." + (swiper.params.slideClass))).remove(); 7828 } else { 7829 for (var i = previousFrom; i <= previousTo; i += 1) { 7830 if (i < from || i > to) { 7831 swiper.$wrapperEl.find(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + i + "\"]")).remove(); 7832 } 7833 } 7834 } 7835 for (var i$1 = 0; i$1 < slides.length; i$1 += 1) { 7836 if (i$1 >= from && i$1 <= to) { 7837 if (typeof previousTo === 'undefined' || force) { 7838 appendIndexes.push(i$1); 7839 } else { 7840 if (i$1 > previousTo) { appendIndexes.push(i$1); } 7841 if (i$1 < previousFrom) { prependIndexes.push(i$1); } 7842 } 7843 } 7844 } 7845 appendIndexes.forEach(function (index) { 7846 swiper.$wrapperEl.append(renderSlide(slides[index], index)); 7847 }); 7848 prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (index) { 7849 swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); 7850 }); 7851 swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, (offset + "px")); 7852 onRendered(); 7853 }, 7854 renderSlide: function renderSlide(slide, index) { 7855 var swiper = this; 7856 var params = swiper.params.virtual; 7857 if (params.cache && swiper.virtual.cache[index]) { 7858 return swiper.virtual.cache[index]; 7859 } 7860 var $slideEl = params.renderSlide 7861 ? $(params.renderSlide.call(swiper, slide, index)) 7862 : $(("<div class=\"" + (swiper.params.slideClass) + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>")); 7863 if (!$slideEl.attr('data-swiper-slide-index')) { $slideEl.attr('data-swiper-slide-index', index); } 7864 if (params.cache) { swiper.virtual.cache[index] = $slideEl; } 7865 return $slideEl; 7866 }, 7867 appendSlide: function appendSlide(slides) { 7868 var swiper = this; 7869 if (typeof slides === 'object' && 'length' in slides) { 7870 for (var i = 0; i < slides.length; i += 1) { 7871 if (slides[i]) { swiper.virtual.slides.push(slides[i]); } 7872 } 7873 } else { 7874 swiper.virtual.slides.push(slides); 7875 } 7876 swiper.virtual.update(true); 7877 }, 7878 prependSlide: function prependSlide(slides) { 7879 var swiper = this; 7880 var activeIndex = swiper.activeIndex; 7881 var newActiveIndex = activeIndex + 1; 7882 var numberOfNewSlides = 1; 7883 7884 if (Array.isArray(slides)) { 7885 for (var i = 0; i < slides.length; i += 1) { 7886 if (slides[i]) { swiper.virtual.slides.unshift(slides[i]); } 7887 } 7888 newActiveIndex = activeIndex + slides.length; 7889 numberOfNewSlides = slides.length; 7890 } else { 7891 swiper.virtual.slides.unshift(slides); 7892 } 7893 if (swiper.params.virtual.cache) { 7894 var cache = swiper.virtual.cache; 7895 var newCache = {}; 7896 Object.keys(cache).forEach(function (cachedIndex) { 7897 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex]; 7898 }); 7899 swiper.virtual.cache = newCache; 7900 } 7901 swiper.virtual.update(true); 7902 swiper.slideTo(newActiveIndex, 0); 7903 }, 7904 removeSlide: function removeSlide(slidesIndexes) { 7905 var swiper = this; 7906 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; } 7907 var activeIndex = swiper.activeIndex; 7908 if (Array.isArray(slidesIndexes)) { 7909 for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) { 7910 swiper.virtual.slides.splice(slidesIndexes[i], 1); 7911 if (swiper.params.virtual.cache) { 7912 delete swiper.virtual.cache[slidesIndexes[i]]; 7913 } 7914 if (slidesIndexes[i] < activeIndex) { activeIndex -= 1; } 7915 activeIndex = Math.max(activeIndex, 0); 7916 } 7917 } else { 7918 swiper.virtual.slides.splice(slidesIndexes, 1); 7919 if (swiper.params.virtual.cache) { 7920 delete swiper.virtual.cache[slidesIndexes]; 7921 } 7922 if (slidesIndexes < activeIndex) { activeIndex -= 1; } 7923 activeIndex = Math.max(activeIndex, 0); 7924 } 7925 swiper.virtual.update(true); 7926 swiper.slideTo(activeIndex, 0); 7927 }, 7928 removeAllSlides: function removeAllSlides() { 7929 var swiper = this; 7930 swiper.virtual.slides = []; 7931 if (swiper.params.virtual.cache) { 7932 swiper.virtual.cache = {}; 7933 } 7934 swiper.virtual.update(true); 7935 swiper.slideTo(0, 0); 7936 }, 7937 }; 7938 7939 var Virtual$1 = { 7940 name: 'virtual', 7941 params: { 7942 virtual: { 7943 enabled: false, 7944 slides: [], 7945 cache: true, 7946 renderSlide: null, 7947 renderExternal: null, 7948 addSlidesBefore: 0, 7949 addSlidesAfter: 0, 7950 }, 7951 }, 7952 create: function create() { 7953 var swiper = this; 7954 Utils.extend(swiper, { 7955 virtual: { 7956 update: Virtual.update.bind(swiper), 7957 appendSlide: Virtual.appendSlide.bind(swiper), 7958 prependSlide: Virtual.prependSlide.bind(swiper), 7959 removeSlide: Virtual.removeSlide.bind(swiper), 7960 removeAllSlides: Virtual.removeAllSlides.bind(swiper), 7961 renderSlide: Virtual.renderSlide.bind(swiper), 7962 slides: swiper.params.virtual.slides, 7963 cache: {}, 7964 }, 7965 }); 7966 }, 7967 on: { 7968 beforeInit: function beforeInit() { 7969 var swiper = this; 7970 if (!swiper.params.virtual.enabled) { return; } 7971 swiper.classNames.push(((swiper.params.containerModifierClass) + "virtual")); 7972 var overwriteParams = { 7973 watchSlidesProgress: true, 7974 }; 7975 Utils.extend(swiper.params, overwriteParams); 7976 Utils.extend(swiper.originalParams, overwriteParams); 7977 7978 if (!swiper.params.initialSlide) { 7979 swiper.virtual.update(); 7980 } 7981 }, 7982 setTranslate: function setTranslate() { 7983 var swiper = this; 7984 if (!swiper.params.virtual.enabled) { return; } 7985 swiper.virtual.update(); 7986 }, 7987 }, 7988 }; 7989 7990 var Keyboard = { 7991 handle: function handle(event) { 7992 var swiper = this; 7993 var rtl = swiper.rtlTranslate; 7994 var e = event; 7995 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 7996 var kc = e.keyCode || e.charCode; 7997 // Directions locks 7998 if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) { 7999 return false; 8000 } 8001 if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) { 8002 return false; 8003 } 8004 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 8005 return undefined; 8006 } 8007 if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) { 8008 return undefined; 8009 } 8010 if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) { 8011 var inView = false; 8012 // Check that swiper should be inside of visible area of window 8013 if (swiper.$el.parents(("." + (swiper.params.slideClass))).length > 0 && swiper.$el.parents(("." + (swiper.params.slideActiveClass))).length === 0) { 8014 return undefined; 8015 } 8016 var windowWidth = win.innerWidth; 8017 var windowHeight = win.innerHeight; 8018 var swiperOffset = swiper.$el.offset(); 8019 if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; } 8020 var swiperCoord = [ 8021 [swiperOffset.left, swiperOffset.top], 8022 [swiperOffset.left + swiper.width, swiperOffset.top], 8023 [swiperOffset.left, swiperOffset.top + swiper.height], 8024 [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height] ]; 8025 for (var i = 0; i < swiperCoord.length; i += 1) { 8026 var point = swiperCoord[i]; 8027 if ( 8028 point[0] >= 0 && point[0] <= windowWidth 8029 && point[1] >= 0 && point[1] <= windowHeight 8030 ) { 8031 inView = true; 8032 } 8033 } 8034 if (!inView) { return undefined; } 8035 } 8036 if (swiper.isHorizontal()) { 8037 if (kc === 37 || kc === 39) { 8038 if (e.preventDefault) { e.preventDefault(); } 8039 else { e.returnValue = false; } 8040 } 8041 if ((kc === 39 && !rtl) || (kc === 37 && rtl)) { swiper.slideNext(); } 8042 if ((kc === 37 && !rtl) || (kc === 39 && rtl)) { swiper.slidePrev(); } 8043 } else { 8044 if (kc === 38 || kc === 40) { 8045 if (e.preventDefault) { e.preventDefault(); } 8046 else { e.returnValue = false; } 8047 } 8048 if (kc === 40) { swiper.slideNext(); } 8049 if (kc === 38) { swiper.slidePrev(); } 8050 } 8051 swiper.emit('keyPress', kc); 8052 return undefined; 8053 }, 8054 enable: function enable() { 8055 var swiper = this; 8056 if (swiper.keyboard.enabled) { return; } 8057 $(doc).on('keydown', swiper.keyboard.handle); 8058 swiper.keyboard.enabled = true; 8059 }, 8060 disable: function disable() { 8061 var swiper = this; 8062 if (!swiper.keyboard.enabled) { return; } 8063 $(doc).off('keydown', swiper.keyboard.handle); 8064 swiper.keyboard.enabled = false; 8065 }, 8066 }; 8067 8068 var Keyboard$1 = { 8069 name: 'keyboard', 8070 params: { 8071 keyboard: { 8072 enabled: false, 8073 onlyInViewport: true, 8074 }, 8075 }, 8076 create: function create() { 8077 var swiper = this; 8078 Utils.extend(swiper, { 8079 keyboard: { 8080 enabled: false, 8081 enable: Keyboard.enable.bind(swiper), 8082 disable: Keyboard.disable.bind(swiper), 8083 handle: Keyboard.handle.bind(swiper), 8084 }, 8085 }); 8086 }, 8087 on: { 8088 init: function init() { 8089 var swiper = this; 8090 if (swiper.params.keyboard.enabled) { 8091 swiper.keyboard.enable(); 8092 } 8093 }, 8094 destroy: function destroy() { 8095 var swiper = this; 8096 if (swiper.keyboard.enabled) { 8097 swiper.keyboard.disable(); 8098 } 8099 }, 8100 }, 8101 }; 8102 8103 function isEventSupported() { 8104 var eventName = 'onwheel'; 8105 var isSupported = eventName in doc; 8106 8107 if (!isSupported) { 8108 var element = doc.createElement('div'); 8109 element.setAttribute(eventName, 'return;'); 8110 isSupported = typeof element[eventName] === 'function'; 8111 } 8112 8113 if (!isSupported 8114 && doc.implementation 8115 && doc.implementation.hasFeature 8116 // always returns true in newer browsers as per the standard. 8117 // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature 8118 && doc.implementation.hasFeature('', '') !== true 8119 ) { 8120 // This is the only way to test support for the `wheel` event in IE9+. 8121 isSupported = doc.implementation.hasFeature('Events.wheel', '3.0'); 8122 } 8123 8124 return isSupported; 8125 } 8126 var Mousewheel = { 8127 lastScrollTime: Utils.now(), 8128 event: (function getEvent() { 8129 if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; } 8130 return isEventSupported() ? 'wheel' : 'mousewheel'; 8131 }()), 8132 normalize: function normalize(e) { 8133 // Reasonable defaults 8134 var PIXEL_STEP = 10; 8135 var LINE_HEIGHT = 40; 8136 var PAGE_HEIGHT = 800; 8137 8138 var sX = 0; 8139 var sY = 0; // spinX, spinY 8140 var pX = 0; 8141 var pY = 0; // pixelX, pixelY 8142 8143 // Legacy 8144 if ('detail' in e) { 8145 sY = e.detail; 8146 } 8147 if ('wheelDelta' in e) { 8148 sY = -e.wheelDelta / 120; 8149 } 8150 if ('wheelDeltaY' in e) { 8151 sY = -e.wheelDeltaY / 120; 8152 } 8153 if ('wheelDeltaX' in e) { 8154 sX = -e.wheelDeltaX / 120; 8155 } 8156 8157 // side scrolling on FF with DOMMouseScroll 8158 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 8159 sX = sY; 8160 sY = 0; 8161 } 8162 8163 pX = sX * PIXEL_STEP; 8164 pY = sY * PIXEL_STEP; 8165 8166 if ('deltaY' in e) { 8167 pY = e.deltaY; 8168 } 8169 if ('deltaX' in e) { 8170 pX = e.deltaX; 8171 } 8172 8173 if ((pX || pY) && e.deltaMode) { 8174 if (e.deltaMode === 1) { // delta in LINE units 8175 pX *= LINE_HEIGHT; 8176 pY *= LINE_HEIGHT; 8177 } else { // delta in PAGE units 8178 pX *= PAGE_HEIGHT; 8179 pY *= PAGE_HEIGHT; 8180 } 8181 } 8182 8183 // Fall-back if spin cannot be determined 8184 if (pX && !sX) { 8185 sX = (pX < 1) ? -1 : 1; 8186 } 8187 if (pY && !sY) { 8188 sY = (pY < 1) ? -1 : 1; 8189 } 8190 8191 return { 8192 spinX: sX, 8193 spinY: sY, 8194 pixelX: pX, 8195 pixelY: pY, 8196 }; 8197 }, 8198 handleMouseEnter: function handleMouseEnter() { 8199 var swiper = this; 8200 swiper.mouseEntered = true; 8201 }, 8202 handleMouseLeave: function handleMouseLeave() { 8203 var swiper = this; 8204 swiper.mouseEntered = false; 8205 }, 8206 handle: function handle(event) { 8207 var e = event; 8208 var swiper = this; 8209 var params = swiper.params.mousewheel; 8210 8211 if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; } 8212 8213 if (e.originalEvent) { e = e.originalEvent; } // jquery fix 8214 var delta = 0; 8215 var rtlFactor = swiper.rtlTranslate ? -1 : 1; 8216 8217 var data = Mousewheel.normalize(e); 8218 8219 if (params.forceToAxis) { 8220 if (swiper.isHorizontal()) { 8221 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) { delta = data.pixelX * rtlFactor; } 8222 else { return true; } 8223 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) { delta = data.pixelY; } 8224 else { return true; } 8225 } else { 8226 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 8227 } 8228 8229 if (delta === 0) { return true; } 8230 8231 if (params.invert) { delta = -delta; } 8232 8233 if (!swiper.params.freeMode) { 8234 if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) { 8235 if (delta < 0) { 8236 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 8237 swiper.slideNext(); 8238 swiper.emit('scroll', e); 8239 } else if (params.releaseOnEdges) { return true; } 8240 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 8241 swiper.slidePrev(); 8242 swiper.emit('scroll', e); 8243 } else if (params.releaseOnEdges) { return true; } 8244 } 8245 swiper.mousewheel.lastScrollTime = (new win.Date()).getTime(); 8246 } else { 8247 // Freemode or scrollContainer: 8248 if (swiper.params.loop) { 8249 swiper.loopFix(); 8250 } 8251 var position = swiper.getTranslate() + (delta * params.sensitivity); 8252 var wasBeginning = swiper.isBeginning; 8253 var wasEnd = swiper.isEnd; 8254 8255 if (position >= swiper.minTranslate()) { position = swiper.minTranslate(); } 8256 if (position <= swiper.maxTranslate()) { position = swiper.maxTranslate(); } 8257 8258 swiper.setTransition(0); 8259 swiper.setTranslate(position); 8260 swiper.updateProgress(); 8261 swiper.updateActiveIndex(); 8262 swiper.updateSlidesClasses(); 8263 8264 if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) { 8265 swiper.updateSlidesClasses(); 8266 } 8267 8268 if (swiper.params.freeModeSticky) { 8269 clearTimeout(swiper.mousewheel.timeout); 8270 swiper.mousewheel.timeout = Utils.nextTick(function () { 8271 swiper.slideToClosest(); 8272 }, 300); 8273 } 8274 // Emit event 8275 swiper.emit('scroll', e); 8276 8277 // Stop autoplay 8278 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) { swiper.autoplay.stop(); } 8279 // Return page scroll on edge positions 8280 if (position === swiper.minTranslate() || position === swiper.maxTranslate()) { return true; } 8281 } 8282 8283 if (e.preventDefault) { e.preventDefault(); } 8284 else { e.returnValue = false; } 8285 return false; 8286 }, 8287 enable: function enable() { 8288 var swiper = this; 8289 if (!Mousewheel.event) { return false; } 8290 if (swiper.mousewheel.enabled) { return false; } 8291 var target = swiper.$el; 8292 if (swiper.params.mousewheel.eventsTarged !== 'container') { 8293 target = $(swiper.params.mousewheel.eventsTarged); 8294 } 8295 target.on('mouseenter', swiper.mousewheel.handleMouseEnter); 8296 target.on('mouseleave', swiper.mousewheel.handleMouseLeave); 8297 target.on(Mousewheel.event, swiper.mousewheel.handle); 8298 swiper.mousewheel.enabled = true; 8299 return true; 8300 }, 8301 disable: function disable() { 8302 var swiper = this; 8303 if (!Mousewheel.event) { return false; } 8304 if (!swiper.mousewheel.enabled) { return false; } 8305 var target = swiper.$el; 8306 if (swiper.params.mousewheel.eventsTarged !== 'container') { 8307 target = $(swiper.params.mousewheel.eventsTarged); 8308 } 8309 target.off(Mousewheel.event, swiper.mousewheel.handle); 8310 swiper.mousewheel.enabled = false; 8311 return true; 8312 }, 8313 }; 8314 8315 var Mousewheel$1 = { 8316 name: 'mousewheel', 8317 params: { 8318 mousewheel: { 8319 enabled: false, 8320 releaseOnEdges: false, 8321 invert: false, 8322 forceToAxis: false, 8323 sensitivity: 1, 8324 eventsTarged: 'container', 8325 }, 8326 }, 8327 create: function create() { 8328 var swiper = this; 8329 Utils.extend(swiper, { 8330 mousewheel: { 8331 enabled: false, 8332 enable: Mousewheel.enable.bind(swiper), 8333 disable: Mousewheel.disable.bind(swiper), 8334 handle: Mousewheel.handle.bind(swiper), 8335 handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper), 8336 handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper), 8337 lastScrollTime: Utils.now(), 8338 }, 8339 }); 8340 }, 8341 on: { 8342 init: function init() { 8343 var swiper = this; 8344 if (swiper.params.mousewheel.enabled) { swiper.mousewheel.enable(); } 8345 }, 8346 destroy: function destroy() { 8347 var swiper = this; 8348 if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); } 8349 }, 8350 }, 8351 }; 8352 8353 var Navigation = { 8354 update: function update() { 8355 // Update Navigation Buttons 8356 var swiper = this; 8357 var params = swiper.params.navigation; 8358 8359 if (swiper.params.loop) { return; } 8360 var ref = swiper.navigation; 8361 var $nextEl = ref.$nextEl; 8362 var $prevEl = ref.$prevEl; 8363 8364 if ($prevEl && $prevEl.length > 0) { 8365 if (swiper.isBeginning) { 8366 $prevEl.addClass(params.disabledClass); 8367 } else { 8368 $prevEl.removeClass(params.disabledClass); 8369 } 8370 $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 8371 } 8372 if ($nextEl && $nextEl.length > 0) { 8373 if (swiper.isEnd) { 8374 $nextEl.addClass(params.disabledClass); 8375 } else { 8376 $nextEl.removeClass(params.disabledClass); 8377 } 8378 $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 8379 } 8380 }, 8381 onPrevClick: function onPrevClick(e) { 8382 var swiper = this; 8383 e.preventDefault(); 8384 if (swiper.isBeginning && !swiper.params.loop) { return; } 8385 swiper.slidePrev(); 8386 }, 8387 onNextClick: function onNextClick(e) { 8388 var swiper = this; 8389 e.preventDefault(); 8390 if (swiper.isEnd && !swiper.params.loop) { return; } 8391 swiper.slideNext(); 8392 }, 8393 init: function init() { 8394 var swiper = this; 8395 var params = swiper.params.navigation; 8396 if (!(params.nextEl || params.prevEl)) { return; } 8397 8398 var $nextEl; 8399 var $prevEl; 8400 if (params.nextEl) { 8401 $nextEl = $(params.nextEl); 8402 if ( 8403 swiper.params.uniqueNavElements 8404 && typeof params.nextEl === 'string' 8405 && $nextEl.length > 1 8406 && swiper.$el.find(params.nextEl).length === 1 8407 ) { 8408 $nextEl = swiper.$el.find(params.nextEl); 8409 } 8410 } 8411 if (params.prevEl) { 8412 $prevEl = $(params.prevEl); 8413 if ( 8414 swiper.params.uniqueNavElements 8415 && typeof params.prevEl === 'string' 8416 && $prevEl.length > 1 8417 && swiper.$el.find(params.prevEl).length === 1 8418 ) { 8419 $prevEl = swiper.$el.find(params.prevEl); 8420 } 8421 } 8422 8423 if ($nextEl && $nextEl.length > 0) { 8424 $nextEl.on('click', swiper.navigation.onNextClick); 8425 } 8426 if ($prevEl && $prevEl.length > 0) { 8427 $prevEl.on('click', swiper.navigation.onPrevClick); 8428 } 8429 8430 Utils.extend(swiper.navigation, { 8431 $nextEl: $nextEl, 8432 nextEl: $nextEl && $nextEl[0], 8433 $prevEl: $prevEl, 8434 prevEl: $prevEl && $prevEl[0], 8435 }); 8436 }, 8437 destroy: function destroy() { 8438 var swiper = this; 8439 var ref = swiper.navigation; 8440 var $nextEl = ref.$nextEl; 8441 var $prevEl = ref.$prevEl; 8442 if ($nextEl && $nextEl.length) { 8443 $nextEl.off('click', swiper.navigation.onNextClick); 8444 $nextEl.removeClass(swiper.params.navigation.disabledClass); 8445 } 8446 if ($prevEl && $prevEl.length) { 8447 $prevEl.off('click', swiper.navigation.onPrevClick); 8448 $prevEl.removeClass(swiper.params.navigation.disabledClass); 8449 } 8450 }, 8451 }; 8452 8453 var Navigation$1 = { 8454 name: 'navigation', 8455 params: { 8456 navigation: { 8457 nextEl: null, 8458 prevEl: null, 8459 8460 hideOnClick: false, 8461 disabledClass: 'swiper-button-disabled', 8462 hiddenClass: 'swiper-button-hidden', 8463 lockClass: 'swiper-button-lock', 8464 }, 8465 }, 8466 create: function create() { 8467 var swiper = this; 8468 Utils.extend(swiper, { 8469 navigation: { 8470 init: Navigation.init.bind(swiper), 8471 update: Navigation.update.bind(swiper), 8472 destroy: Navigation.destroy.bind(swiper), 8473 onNextClick: Navigation.onNextClick.bind(swiper), 8474 onPrevClick: Navigation.onPrevClick.bind(swiper), 8475 }, 8476 }); 8477 }, 8478 on: { 8479 init: function init() { 8480 var swiper = this; 8481 swiper.navigation.init(); 8482 swiper.navigation.update(); 8483 }, 8484 toEdge: function toEdge() { 8485 var swiper = this; 8486 swiper.navigation.update(); 8487 }, 8488 fromEdge: function fromEdge() { 8489 var swiper = this; 8490 swiper.navigation.update(); 8491 }, 8492 destroy: function destroy() { 8493 var swiper = this; 8494 swiper.navigation.destroy(); 8495 }, 8496 click: function click(e) { 8497 var swiper = this; 8498 var ref = swiper.navigation; 8499 var $nextEl = ref.$nextEl; 8500 var $prevEl = ref.$prevEl; 8501 if ( 8502 swiper.params.navigation.hideOnClick 8503 && !$(e.target).is($prevEl) 8504 && !$(e.target).is($nextEl) 8505 ) { 8506 var isHidden; 8507 if ($nextEl) { 8508 isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); 8509 } else if ($prevEl) { 8510 isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); 8511 } 8512 if (isHidden === true) { 8513 swiper.emit('navigationShow', swiper); 8514 } else { 8515 swiper.emit('navigationHide', swiper); 8516 } 8517 if ($nextEl) { 8518 $nextEl.toggleClass(swiper.params.navigation.hiddenClass); 8519 } 8520 if ($prevEl) { 8521 $prevEl.toggleClass(swiper.params.navigation.hiddenClass); 8522 } 8523 } 8524 }, 8525 }, 8526 }; 8527 8528 var Pagination = { 8529 update: function update() { 8530 // Render || Update Pagination bullets/items 8531 var swiper = this; 8532 var rtl = swiper.rtl; 8533 var params = swiper.params.pagination; 8534 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 8535 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 8536 var $el = swiper.pagination.$el; 8537 // Current/Total 8538 var current; 8539 var total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 8540 if (swiper.params.loop) { 8541 current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); 8542 if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) { 8543 current -= (slidesLength - (swiper.loopedSlides * 2)); 8544 } 8545 if (current > total - 1) { current -= total; } 8546 if (current < 0 && swiper.params.paginationType !== 'bullets') { current = total + current; } 8547 } else if (typeof swiper.snapIndex !== 'undefined') { 8548 current = swiper.snapIndex; 8549 } else { 8550 current = swiper.activeIndex || 0; 8551 } 8552 // Types 8553 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 8554 var bullets = swiper.pagination.bullets; 8555 var firstIndex; 8556 var lastIndex; 8557 var midIndex; 8558 if (params.dynamicBullets) { 8559 swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); 8560 $el.css(swiper.isHorizontal() ? 'width' : 'height', ((swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)) + "px")); 8561 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { 8562 swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex); 8563 if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) { 8564 swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1; 8565 } else if (swiper.pagination.dynamicBulletIndex < 0) { 8566 swiper.pagination.dynamicBulletIndex = 0; 8567 } 8568 } 8569 firstIndex = current - swiper.pagination.dynamicBulletIndex; 8570 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 8571 midIndex = (lastIndex + firstIndex) / 2; 8572 } 8573 bullets.removeClass(((params.bulletActiveClass) + " " + (params.bulletActiveClass) + "-next " + (params.bulletActiveClass) + "-next-next " + (params.bulletActiveClass) + "-prev " + (params.bulletActiveClass) + "-prev-prev " + (params.bulletActiveClass) + "-main")); 8574 if ($el.length > 1) { 8575 bullets.each(function (index, bullet) { 8576 var $bullet = $(bullet); 8577 var bulletIndex = $bullet.index(); 8578 if (bulletIndex === current) { 8579 $bullet.addClass(params.bulletActiveClass); 8580 } 8581 if (params.dynamicBullets) { 8582 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 8583 $bullet.addClass(((params.bulletActiveClass) + "-main")); 8584 } 8585 if (bulletIndex === firstIndex) { 8586 $bullet 8587 .prev() 8588 .addClass(((params.bulletActiveClass) + "-prev")) 8589 .prev() 8590 .addClass(((params.bulletActiveClass) + "-prev-prev")); 8591 } 8592 if (bulletIndex === lastIndex) { 8593 $bullet 8594 .next() 8595 .addClass(((params.bulletActiveClass) + "-next")) 8596 .next() 8597 .addClass(((params.bulletActiveClass) + "-next-next")); 8598 } 8599 } 8600 }); 8601 } else { 8602 var $bullet = bullets.eq(current); 8603 $bullet.addClass(params.bulletActiveClass); 8604 if (params.dynamicBullets) { 8605 var $firstDisplayedBullet = bullets.eq(firstIndex); 8606 var $lastDisplayedBullet = bullets.eq(lastIndex); 8607 for (var i = firstIndex; i <= lastIndex; i += 1) { 8608 bullets.eq(i).addClass(((params.bulletActiveClass) + "-main")); 8609 } 8610 $firstDisplayedBullet 8611 .prev() 8612 .addClass(((params.bulletActiveClass) + "-prev")) 8613 .prev() 8614 .addClass(((params.bulletActiveClass) + "-prev-prev")); 8615 $lastDisplayedBullet 8616 .next() 8617 .addClass(((params.bulletActiveClass) + "-next")) 8618 .next() 8619 .addClass(((params.bulletActiveClass) + "-next-next")); 8620 } 8621 } 8622 if (params.dynamicBullets) { 8623 var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 8624 var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize); 8625 var offsetProp = rtl ? 'right' : 'left'; 8626 bullets.css(swiper.isHorizontal() ? offsetProp : 'top', (bulletsOffset + "px")); 8627 } 8628 } 8629 if (params.type === 'fraction') { 8630 $el.find(("." + (params.currentClass))).text(params.formatFractionCurrent(current + 1)); 8631 $el.find(("." + (params.totalClass))).text(params.formatFractionTotal(total)); 8632 } 8633 if (params.type === 'progressbar') { 8634 var progressbarDirection; 8635 if (params.progressbarOpposite) { 8636 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 8637 } else { 8638 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 8639 } 8640 var scale = (current + 1) / total; 8641 var scaleX = 1; 8642 var scaleY = 1; 8643 if (progressbarDirection === 'horizontal') { 8644 scaleX = scale; 8645 } else { 8646 scaleY = scale; 8647 } 8648 $el.find(("." + (params.progressbarFillClass))).transform(("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")")).transition(swiper.params.speed); 8649 } 8650 if (params.type === 'custom' && params.renderCustom) { 8651 $el.html(params.renderCustom(swiper, current + 1, total)); 8652 swiper.emit('paginationRender', swiper, $el[0]); 8653 } else { 8654 swiper.emit('paginationUpdate', swiper, $el[0]); 8655 } 8656 $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 8657 }, 8658 render: function render() { 8659 // Render Container 8660 var swiper = this; 8661 var params = swiper.params.pagination; 8662 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 8663 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 8664 8665 var $el = swiper.pagination.$el; 8666 var paginationHTML = ''; 8667 if (params.type === 'bullets') { 8668 var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 8669 for (var i = 0; i < numberOfBullets; i += 1) { 8670 if (params.renderBullet) { 8671 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 8672 } else { 8673 paginationHTML += "<" + (params.bulletElement) + " class=\"" + (params.bulletClass) + "\"></" + (params.bulletElement) + ">"; 8674 } 8675 } 8676 $el.html(paginationHTML); 8677 swiper.pagination.bullets = $el.find(("." + (params.bulletClass))); 8678 } 8679 if (params.type === 'fraction') { 8680 if (params.renderFraction) { 8681 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 8682 } else { 8683 paginationHTML = "<span class=\"" + (params.currentClass) + "\"></span>" 8684 + ' / ' 8685 + "<span class=\"" + (params.totalClass) + "\"></span>"; 8686 } 8687 $el.html(paginationHTML); 8688 } 8689 if (params.type === 'progressbar') { 8690 if (params.renderProgressbar) { 8691 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 8692 } else { 8693 paginationHTML = "<span class=\"" + (params.progressbarFillClass) + "\"></span>"; 8694 } 8695 $el.html(paginationHTML); 8696 } 8697 if (params.type !== 'custom') { 8698 swiper.emit('paginationRender', swiper.pagination.$el[0]); 8699 } 8700 }, 8701 init: function init() { 8702 var swiper = this; 8703 var params = swiper.params.pagination; 8704 if (!params.el) { return; } 8705 8706 var $el = $(params.el); 8707 if ($el.length === 0) { return; } 8708 8709 if ( 8710 swiper.params.uniqueNavElements 8711 && typeof params.el === 'string' 8712 && $el.length > 1 8713 && swiper.$el.find(params.el).length === 1 8714 ) { 8715 $el = swiper.$el.find(params.el); 8716 } 8717 8718 if (params.type === 'bullets' && params.clickable) { 8719 $el.addClass(params.clickableClass); 8720 } 8721 8722 $el.addClass(params.modifierClass + params.type); 8723 8724 if (params.type === 'bullets' && params.dynamicBullets) { 8725 $el.addClass(("" + (params.modifierClass) + (params.type) + "-dynamic")); 8726 swiper.pagination.dynamicBulletIndex = 0; 8727 if (params.dynamicMainBullets < 1) { 8728 params.dynamicMainBullets = 1; 8729 } 8730 } 8731 if (params.type === 'progressbar' && params.progressbarOpposite) { 8732 $el.addClass(params.progressbarOppositeClass); 8733 } 8734 8735 if (params.clickable) { 8736 $el.on('click', ("." + (params.bulletClass)), function onClick(e) { 8737 e.preventDefault(); 8738 var index = $(this).index() * swiper.params.slidesPerGroup; 8739 if (swiper.params.loop) { index += swiper.loopedSlides; } 8740 swiper.slideTo(index); 8741 }); 8742 } 8743 8744 Utils.extend(swiper.pagination, { 8745 $el: $el, 8746 el: $el[0], 8747 }); 8748 }, 8749 destroy: function destroy() { 8750 var swiper = this; 8751 var params = swiper.params.pagination; 8752 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; } 8753 var $el = swiper.pagination.$el; 8754 8755 $el.removeClass(params.hiddenClass); 8756 $el.removeClass(params.modifierClass + params.type); 8757 if (swiper.pagination.bullets) { swiper.pagination.bullets.removeClass(params.bulletActiveClass); } 8758 if (params.clickable) { 8759 $el.off('click', ("." + (params.bulletClass))); 8760 } 8761 }, 8762 }; 8763 8764 var Pagination$1 = { 8765 name: 'pagination', 8766 params: { 8767 pagination: { 8768 el: null, 8769 bulletElement: 'span', 8770 clickable: false, 8771 hideOnClick: false, 8772 renderBullet: null, 8773 renderProgressbar: null, 8774 renderFraction: null, 8775 renderCustom: null, 8776 progressbarOpposite: false, 8777 type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom' 8778 dynamicBullets: false, 8779 dynamicMainBullets: 1, 8780 formatFractionCurrent: function (number) { return number; }, 8781 formatFractionTotal: function (number) { return number; }, 8782 bulletClass: 'swiper-pagination-bullet', 8783 bulletActiveClass: 'swiper-pagination-bullet-active', 8784 modifierClass: 'swiper-pagination-', // NEW 8785 currentClass: 'swiper-pagination-current', 8786 totalClass: 'swiper-pagination-total', 8787 hiddenClass: 'swiper-pagination-hidden', 8788 progressbarFillClass: 'swiper-pagination-progressbar-fill', 8789 progressbarOppositeClass: 'swiper-pagination-progressbar-opposite', 8790 clickableClass: 'swiper-pagination-clickable', // NEW 8791 lockClass: 'swiper-pagination-lock', 8792 }, 8793 }, 8794 create: function create() { 8795 var swiper = this; 8796 Utils.extend(swiper, { 8797 pagination: { 8798 init: Pagination.init.bind(swiper), 8799 render: Pagination.render.bind(swiper), 8800 update: Pagination.update.bind(swiper), 8801 destroy: Pagination.destroy.bind(swiper), 8802 dynamicBulletIndex: 0, 8803 }, 8804 }); 8805 }, 8806 on: { 8807 init: function init() { 8808 var swiper = this; 8809 swiper.pagination.init(); 8810 swiper.pagination.render(); 8811 swiper.pagination.update(); 8812 }, 8813 activeIndexChange: function activeIndexChange() { 8814 var swiper = this; 8815 if (swiper.params.loop) { 8816 swiper.pagination.update(); 8817 } else if (typeof swiper.snapIndex === 'undefined') { 8818 swiper.pagination.update(); 8819 } 8820 }, 8821 snapIndexChange: function snapIndexChange() { 8822 var swiper = this; 8823 if (!swiper.params.loop) { 8824 swiper.pagination.update(); 8825 } 8826 }, 8827 slidesLengthChange: function slidesLengthChange() { 8828 var swiper = this; 8829 if (swiper.params.loop) { 8830 swiper.pagination.render(); 8831 swiper.pagination.update(); 8832 } 8833 }, 8834 snapGridLengthChange: function snapGridLengthChange() { 8835 var swiper = this; 8836 if (!swiper.params.loop) { 8837 swiper.pagination.render(); 8838 swiper.pagination.update(); 8839 } 8840 }, 8841 destroy: function destroy() { 8842 var swiper = this; 8843 swiper.pagination.destroy(); 8844 }, 8845 click: function click(e) { 8846 var swiper = this; 8847 if ( 8848 swiper.params.pagination.el 8849 && swiper.params.pagination.hideOnClick 8850 && swiper.pagination.$el.length > 0 8851 && !$(e.target).hasClass(swiper.params.pagination.bulletClass) 8852 ) { 8853 var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); 8854 if (isHidden === true) { 8855 swiper.emit('paginationShow', swiper); 8856 } else { 8857 swiper.emit('paginationHide', swiper); 8858 } 8859 swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass); 8860 } 8861 }, 8862 }, 8863 }; 8864 8865 var Scrollbar = { 8866 setTranslate: function setTranslate() { 8867 var swiper = this; 8868 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 8869 var scrollbar = swiper.scrollbar; 8870 var rtl = swiper.rtlTranslate; 8871 var progress = swiper.progress; 8872 var dragSize = scrollbar.dragSize; 8873 var trackSize = scrollbar.trackSize; 8874 var $dragEl = scrollbar.$dragEl; 8875 var $el = scrollbar.$el; 8876 var params = swiper.params.scrollbar; 8877 8878 var newSize = dragSize; 8879 var newPos = (trackSize - dragSize) * progress; 8880 if (rtl) { 8881 newPos = -newPos; 8882 if (newPos > 0) { 8883 newSize = dragSize - newPos; 8884 newPos = 0; 8885 } else if (-newPos + dragSize > trackSize) { 8886 newSize = trackSize + newPos; 8887 } 8888 } else if (newPos < 0) { 8889 newSize = dragSize + newPos; 8890 newPos = 0; 8891 } else if (newPos + dragSize > trackSize) { 8892 newSize = trackSize - newPos; 8893 } 8894 if (swiper.isHorizontal()) { 8895 if (Support.transforms3d) { 8896 $dragEl.transform(("translate3d(" + newPos + "px, 0, 0)")); 8897 } else { 8898 $dragEl.transform(("translateX(" + newPos + "px)")); 8899 } 8900 $dragEl[0].style.width = newSize + "px"; 8901 } else { 8902 if (Support.transforms3d) { 8903 $dragEl.transform(("translate3d(0px, " + newPos + "px, 0)")); 8904 } else { 8905 $dragEl.transform(("translateY(" + newPos + "px)")); 8906 } 8907 $dragEl[0].style.height = newSize + "px"; 8908 } 8909 if (params.hide) { 8910 clearTimeout(swiper.scrollbar.timeout); 8911 $el[0].style.opacity = 1; 8912 swiper.scrollbar.timeout = setTimeout(function () { 8913 $el[0].style.opacity = 0; 8914 $el.transition(400); 8915 }, 1000); 8916 } 8917 }, 8918 setTransition: function setTransition(duration) { 8919 var swiper = this; 8920 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 8921 swiper.scrollbar.$dragEl.transition(duration); 8922 }, 8923 updateSize: function updateSize() { 8924 var swiper = this; 8925 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; } 8926 8927 var scrollbar = swiper.scrollbar; 8928 var $dragEl = scrollbar.$dragEl; 8929 var $el = scrollbar.$el; 8930 8931 $dragEl[0].style.width = ''; 8932 $dragEl[0].style.height = ''; 8933 var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; 8934 8935 var divider = swiper.size / swiper.virtualSize; 8936 var moveDivider = divider * (trackSize / swiper.size); 8937 var dragSize; 8938 if (swiper.params.scrollbar.dragSize === 'auto') { 8939 dragSize = trackSize * divider; 8940 } else { 8941 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 8942 } 8943 8944 if (swiper.isHorizontal()) { 8945 $dragEl[0].style.width = dragSize + "px"; 8946 } else { 8947 $dragEl[0].style.height = dragSize + "px"; 8948 } 8949 8950 if (divider >= 1) { 8951 $el[0].style.display = 'none'; 8952 } else { 8953 $el[0].style.display = ''; 8954 } 8955 if (swiper.params.scrollbar.hide) { 8956 $el[0].style.opacity = 0; 8957 } 8958 Utils.extend(scrollbar, { 8959 trackSize: trackSize, 8960 divider: divider, 8961 moveDivider: moveDivider, 8962 dragSize: dragSize, 8963 }); 8964 scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); 8965 }, 8966 setDragPosition: function setDragPosition(e) { 8967 var swiper = this; 8968 var scrollbar = swiper.scrollbar; 8969 var rtl = swiper.rtlTranslate; 8970 var $el = scrollbar.$el; 8971 var dragSize = scrollbar.dragSize; 8972 var trackSize = scrollbar.trackSize; 8973 8974 var pointerPosition; 8975 if (swiper.isHorizontal()) { 8976 pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX); 8977 } else { 8978 pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY); 8979 } 8980 var positionRatio; 8981 positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize); 8982 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 8983 if (rtl) { 8984 positionRatio = 1 - positionRatio; 8985 } 8986 8987 var position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio); 8988 8989 swiper.updateProgress(position); 8990 swiper.setTranslate(position); 8991 swiper.updateActiveIndex(); 8992 swiper.updateSlidesClasses(); 8993 }, 8994 onDragStart: function onDragStart(e) { 8995 var swiper = this; 8996 var params = swiper.params.scrollbar; 8997 var scrollbar = swiper.scrollbar; 8998 var $wrapperEl = swiper.$wrapperEl; 8999 var $el = scrollbar.$el; 9000 var $dragEl = scrollbar.$dragEl; 9001 swiper.scrollbar.isTouched = true; 9002 e.preventDefault(); 9003 e.stopPropagation(); 9004 9005 $wrapperEl.transition(100); 9006 $dragEl.transition(100); 9007 scrollbar.setDragPosition(e); 9008 9009 clearTimeout(swiper.scrollbar.dragTimeout); 9010 9011 $el.transition(0); 9012 if (params.hide) { 9013 $el.css('opacity', 1); 9014 } 9015 swiper.emit('scrollbarDragStart', e); 9016 }, 9017 onDragMove: function onDragMove(e) { 9018 var swiper = this; 9019 var scrollbar = swiper.scrollbar; 9020 var $wrapperEl = swiper.$wrapperEl; 9021 var $el = scrollbar.$el; 9022 var $dragEl = scrollbar.$dragEl; 9023 9024 if (!swiper.scrollbar.isTouched) { return; } 9025 if (e.preventDefault) { e.preventDefault(); } 9026 else { e.returnValue = false; } 9027 scrollbar.setDragPosition(e); 9028 $wrapperEl.transition(0); 9029 $el.transition(0); 9030 $dragEl.transition(0); 9031 swiper.emit('scrollbarDragMove', e); 9032 }, 9033 onDragEnd: function onDragEnd(e) { 9034 var swiper = this; 9035 9036 var params = swiper.params.scrollbar; 9037 var scrollbar = swiper.scrollbar; 9038 var $el = scrollbar.$el; 9039 9040 if (!swiper.scrollbar.isTouched) { return; } 9041 swiper.scrollbar.isTouched = false; 9042 if (params.hide) { 9043 clearTimeout(swiper.scrollbar.dragTimeout); 9044 swiper.scrollbar.dragTimeout = Utils.nextTick(function () { 9045 $el.css('opacity', 0); 9046 $el.transition(400); 9047 }, 1000); 9048 } 9049 swiper.emit('scrollbarDragEnd', e); 9050 if (params.snapOnRelease) { 9051 swiper.slideToClosest(); 9052 } 9053 }, 9054 enableDraggable: function enableDraggable() { 9055 var swiper = this; 9056 if (!swiper.params.scrollbar.el) { return; } 9057 var scrollbar = swiper.scrollbar; 9058 var touchEventsTouch = swiper.touchEventsTouch; 9059 var touchEventsDesktop = swiper.touchEventsDesktop; 9060 var params = swiper.params; 9061 var $el = scrollbar.$el; 9062 var target = $el[0]; 9063 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 9064 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 9065 if (!Support.touch) { 9066 target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 9067 doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 9068 doc.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 9069 } else { 9070 target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); 9071 target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); 9072 target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); 9073 } 9074 }, 9075 disableDraggable: function disableDraggable() { 9076 var swiper = this; 9077 if (!swiper.params.scrollbar.el) { return; } 9078 var scrollbar = swiper.scrollbar; 9079 var touchEventsTouch = swiper.touchEventsTouch; 9080 var touchEventsDesktop = swiper.touchEventsDesktop; 9081 var params = swiper.params; 9082 var $el = scrollbar.$el; 9083 var target = $el[0]; 9084 var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false; 9085 var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false; 9086 if (!Support.touch) { 9087 target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener); 9088 doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener); 9089 doc.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener); 9090 } else { 9091 target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener); 9092 target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener); 9093 target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener); 9094 } 9095 }, 9096 init: function init() { 9097 var swiper = this; 9098 if (!swiper.params.scrollbar.el) { return; } 9099 var scrollbar = swiper.scrollbar; 9100 var $swiperEl = swiper.$el; 9101 var params = swiper.params.scrollbar; 9102 9103 var $el = $(params.el); 9104 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { 9105 $el = $swiperEl.find(params.el); 9106 } 9107 9108 var $dragEl = $el.find(("." + (swiper.params.scrollbar.dragClass))); 9109 if ($dragEl.length === 0) { 9110 $dragEl = $(("<div class=\"" + (swiper.params.scrollbar.dragClass) + "\"></div>")); 9111 $el.append($dragEl); 9112 } 9113 9114 Utils.extend(scrollbar, { 9115 $el: $el, 9116 el: $el[0], 9117 $dragEl: $dragEl, 9118 dragEl: $dragEl[0], 9119 }); 9120 9121 if (params.draggable) { 9122 scrollbar.enableDraggable(); 9123 } 9124 }, 9125 destroy: function destroy() { 9126 var swiper = this; 9127 swiper.scrollbar.disableDraggable(); 9128 }, 9129 }; 9130 9131 var Scrollbar$1 = { 9132 name: 'scrollbar', 9133 params: { 9134 scrollbar: { 9135 el: null, 9136 dragSize: 'auto', 9137 hide: false, 9138 draggable: false, 9139 snapOnRelease: true, 9140 lockClass: 'swiper-scrollbar-lock', 9141 dragClass: 'swiper-scrollbar-drag', 9142 }, 9143 }, 9144 create: function create() { 9145 var swiper = this; 9146 Utils.extend(swiper, { 9147 scrollbar: { 9148 init: Scrollbar.init.bind(swiper), 9149 destroy: Scrollbar.destroy.bind(swiper), 9150 updateSize: Scrollbar.updateSize.bind(swiper), 9151 setTranslate: Scrollbar.setTranslate.bind(swiper), 9152 setTransition: Scrollbar.setTransition.bind(swiper), 9153 enableDraggable: Scrollbar.enableDraggable.bind(swiper), 9154 disableDraggable: Scrollbar.disableDraggable.bind(swiper), 9155 setDragPosition: Scrollbar.setDragPosition.bind(swiper), 9156 onDragStart: Scrollbar.onDragStart.bind(swiper), 9157 onDragMove: Scrollbar.onDragMove.bind(swiper), 9158 onDragEnd: Scrollbar.onDragEnd.bind(swiper), 9159 isTouched: false, 9160 timeout: null, 9161 dragTimeout: null, 9162 }, 9163 }); 9164 }, 9165 on: { 9166 init: function init() { 9167 var swiper = this; 9168 swiper.scrollbar.init(); 9169 swiper.scrollbar.updateSize(); 9170 swiper.scrollbar.setTranslate(); 9171 }, 9172 update: function update() { 9173 var swiper = this; 9174 swiper.scrollbar.updateSize(); 9175 }, 9176 resize: function resize() { 9177 var swiper = this; 9178 swiper.scrollbar.updateSize(); 9179 }, 9180 observerUpdate: function observerUpdate() { 9181 var swiper = this; 9182 swiper.scrollbar.updateSize(); 9183 }, 9184 setTranslate: function setTranslate() { 9185 var swiper = this; 9186 swiper.scrollbar.setTranslate(); 9187 }, 9188 setTransition: function setTransition(duration) { 9189 var swiper = this; 9190 swiper.scrollbar.setTransition(duration); 9191 }, 9192 destroy: function destroy() { 9193 var swiper = this; 9194 swiper.scrollbar.destroy(); 9195 }, 9196 }, 9197 }; 9198 9199 var Parallax = { 9200 setTransform: function setTransform(el, progress) { 9201 var swiper = this; 9202 var rtl = swiper.rtl; 9203 9204 var $el = $(el); 9205 var rtlFactor = rtl ? -1 : 1; 9206 9207 var p = $el.attr('data-swiper-parallax') || '0'; 9208 var x = $el.attr('data-swiper-parallax-x'); 9209 var y = $el.attr('data-swiper-parallax-y'); 9210 var scale = $el.attr('data-swiper-parallax-scale'); 9211 var opacity = $el.attr('data-swiper-parallax-opacity'); 9212 9213 if (x || y) { 9214 x = x || '0'; 9215 y = y || '0'; 9216 } else if (swiper.isHorizontal()) { 9217 x = p; 9218 y = '0'; 9219 } else { 9220 y = p; 9221 x = '0'; 9222 } 9223 9224 if ((x).indexOf('%') >= 0) { 9225 x = (parseInt(x, 10) * progress * rtlFactor) + "%"; 9226 } else { 9227 x = (x * progress * rtlFactor) + "px"; 9228 } 9229 if ((y).indexOf('%') >= 0) { 9230 y = (parseInt(y, 10) * progress) + "%"; 9231 } else { 9232 y = (y * progress) + "px"; 9233 } 9234 9235 if (typeof opacity !== 'undefined' && opacity !== null) { 9236 var currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress))); 9237 $el[0].style.opacity = currentOpacity; 9238 } 9239 if (typeof scale === 'undefined' || scale === null) { 9240 $el.transform(("translate3d(" + x + ", " + y + ", 0px)")); 9241 } else { 9242 var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress))); 9243 $el.transform(("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")")); 9244 } 9245 }, 9246 setTranslate: function setTranslate() { 9247 var swiper = this; 9248 var $el = swiper.$el; 9249 var slides = swiper.slides; 9250 var progress = swiper.progress; 9251 var snapGrid = swiper.snapGrid; 9252 $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 9253 .each(function (index, el) { 9254 swiper.parallax.setTransform(el, progress); 9255 }); 9256 slides.each(function (slideIndex, slideEl) { 9257 var slideProgress = slideEl.progress; 9258 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 9259 slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1)); 9260 } 9261 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 9262 $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 9263 .each(function (index, el) { 9264 swiper.parallax.setTransform(el, slideProgress); 9265 }); 9266 }); 9267 }, 9268 setTransition: function setTransition(duration) { 9269 if ( duration === void 0 ) duration = this.params.speed; 9270 9271 var swiper = this; 9272 var $el = swiper.$el; 9273 $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]') 9274 .each(function (index, parallaxEl) { 9275 var $parallaxEl = $(parallaxEl); 9276 var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; 9277 if (duration === 0) { parallaxDuration = 0; } 9278 $parallaxEl.transition(parallaxDuration); 9279 }); 9280 }, 9281 }; 9282 9283 var Parallax$1 = { 9284 name: 'parallax', 9285 params: { 9286 parallax: { 9287 enabled: false, 9288 }, 9289 }, 9290 create: function create() { 9291 var swiper = this; 9292 Utils.extend(swiper, { 9293 parallax: { 9294 setTransform: Parallax.setTransform.bind(swiper), 9295 setTranslate: Parallax.setTranslate.bind(swiper), 9296 setTransition: Parallax.setTransition.bind(swiper), 9297 }, 9298 }); 9299 }, 9300 on: { 9301 beforeInit: function beforeInit() { 9302 var swiper = this; 9303 if (!swiper.params.parallax.enabled) { return; } 9304 swiper.params.watchSlidesProgress = true; 9305 swiper.originalParams.watchSlidesProgress = true; 9306 }, 9307 init: function init() { 9308 var swiper = this; 9309 if (!swiper.params.parallax.enabled) { return; } 9310 swiper.parallax.setTranslate(); 9311 }, 9312 setTranslate: function setTranslate() { 9313 var swiper = this; 9314 if (!swiper.params.parallax.enabled) { return; } 9315 swiper.parallax.setTranslate(); 9316 }, 9317 setTransition: function setTransition(duration) { 9318 var swiper = this; 9319 if (!swiper.params.parallax.enabled) { return; } 9320 swiper.parallax.setTransition(duration); 9321 }, 9322 }, 9323 }; 9324 9325 var Zoom = { 9326 // Calc Scale From Multi-touches 9327 getDistanceBetweenTouches: function getDistanceBetweenTouches(e) { 9328 if (e.targetTouches.length < 2) { return 1; } 9329 var x1 = e.targetTouches[0].pageX; 9330 var y1 = e.targetTouches[0].pageY; 9331 var x2 = e.targetTouches[1].pageX; 9332 var y2 = e.targetTouches[1].pageY; 9333 var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 ))); 9334 return distance; 9335 }, 9336 // Events 9337 onGestureStart: function onGestureStart(e) { 9338 var swiper = this; 9339 var params = swiper.params.zoom; 9340 var zoom = swiper.zoom; 9341 var gesture = zoom.gesture; 9342 zoom.fakeGestureTouched = false; 9343 zoom.fakeGestureMoved = false; 9344 if (!Support.gestures) { 9345 if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) { 9346 return; 9347 } 9348 zoom.fakeGestureTouched = true; 9349 gesture.scaleStart = Zoom.getDistanceBetweenTouches(e); 9350 } 9351 if (!gesture.$slideEl || !gesture.$slideEl.length) { 9352 gesture.$slideEl = $(e.target).closest('.swiper-slide'); 9353 if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); } 9354 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 9355 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 9356 gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 9357 if (gesture.$imageWrapEl.length === 0) { 9358 gesture.$imageEl = undefined; 9359 return; 9360 } 9361 } 9362 gesture.$imageEl.transition(0); 9363 swiper.zoom.isScaling = true; 9364 }, 9365 onGestureChange: function onGestureChange(e) { 9366 var swiper = this; 9367 var params = swiper.params.zoom; 9368 var zoom = swiper.zoom; 9369 var gesture = zoom.gesture; 9370 if (!Support.gestures) { 9371 if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) { 9372 return; 9373 } 9374 zoom.fakeGestureMoved = true; 9375 gesture.scaleMove = Zoom.getDistanceBetweenTouches(e); 9376 } 9377 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9378 if (Support.gestures) { 9379 zoom.scale = e.scale * zoom.currentScale; 9380 } else { 9381 zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale; 9382 } 9383 if (zoom.scale > gesture.maxRatio) { 9384 zoom.scale = (gesture.maxRatio - 1) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 )); 9385 } 9386 if (zoom.scale < params.minRatio) { 9387 zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 )); 9388 } 9389 gesture.$imageEl.transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 9390 }, 9391 onGestureEnd: function onGestureEnd(e) { 9392 var swiper = this; 9393 var params = swiper.params.zoom; 9394 var zoom = swiper.zoom; 9395 var gesture = zoom.gesture; 9396 if (!Support.gestures) { 9397 if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) { 9398 return; 9399 } 9400 if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) { 9401 return; 9402 } 9403 zoom.fakeGestureTouched = false; 9404 zoom.fakeGestureMoved = false; 9405 } 9406 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9407 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 9408 gesture.$imageEl.transition(swiper.params.speed).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 9409 zoom.currentScale = zoom.scale; 9410 zoom.isScaling = false; 9411 if (zoom.scale === 1) { gesture.$slideEl = undefined; } 9412 }, 9413 onTouchStart: function onTouchStart(e) { 9414 var swiper = this; 9415 var zoom = swiper.zoom; 9416 var gesture = zoom.gesture; 9417 var image = zoom.image; 9418 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9419 if (image.isTouched) { return; } 9420 if (Device.android) { e.preventDefault(); } 9421 image.isTouched = true; 9422 image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 9423 image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 9424 }, 9425 onTouchMove: function onTouchMove(e) { 9426 var swiper = this; 9427 var zoom = swiper.zoom; 9428 var gesture = zoom.gesture; 9429 var image = zoom.image; 9430 var velocity = zoom.velocity; 9431 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9432 swiper.allowClick = false; 9433 if (!image.isTouched || !gesture.$slideEl) { return; } 9434 9435 if (!image.isMoved) { 9436 image.width = gesture.$imageEl[0].offsetWidth; 9437 image.height = gesture.$imageEl[0].offsetHeight; 9438 image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0; 9439 image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0; 9440 gesture.slideWidth = gesture.$slideEl[0].offsetWidth; 9441 gesture.slideHeight = gesture.$slideEl[0].offsetHeight; 9442 gesture.$imageWrapEl.transition(0); 9443 if (swiper.rtl) { 9444 image.startX = -image.startX; 9445 image.startY = -image.startY; 9446 } 9447 } 9448 // Define if we need image drag 9449 var scaledWidth = image.width * zoom.scale; 9450 var scaledHeight = image.height * zoom.scale; 9451 9452 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) { return; } 9453 9454 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 9455 image.maxX = -image.minX; 9456 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 9457 image.maxY = -image.minY; 9458 9459 image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 9460 image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 9461 9462 if (!image.isMoved && !zoom.isScaling) { 9463 if ( 9464 swiper.isHorizontal() 9465 && ( 9466 (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x) 9467 || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x) 9468 ) 9469 ) { 9470 image.isTouched = false; 9471 return; 9472 } if ( 9473 !swiper.isHorizontal() 9474 && ( 9475 (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y) 9476 || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y) 9477 ) 9478 ) { 9479 image.isTouched = false; 9480 return; 9481 } 9482 } 9483 e.preventDefault(); 9484 e.stopPropagation(); 9485 9486 image.isMoved = true; 9487 image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX; 9488 image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY; 9489 9490 if (image.currentX < image.minX) { 9491 image.currentX = (image.minX + 1) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 )); 9492 } 9493 if (image.currentX > image.maxX) { 9494 image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 )); 9495 } 9496 9497 if (image.currentY < image.minY) { 9498 image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 )); 9499 } 9500 if (image.currentY > image.maxY) { 9501 image.currentY = (image.maxY - 1) + (Math.pow( ((image.currentY - image.maxY) + 1), 0.8 )); 9502 } 9503 9504 // Velocity 9505 if (!velocity.prevPositionX) { velocity.prevPositionX = image.touchesCurrent.x; } 9506 if (!velocity.prevPositionY) { velocity.prevPositionY = image.touchesCurrent.y; } 9507 if (!velocity.prevTime) { velocity.prevTime = Date.now(); } 9508 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 9509 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 9510 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) { velocity.x = 0; } 9511 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) { velocity.y = 0; } 9512 velocity.prevPositionX = image.touchesCurrent.x; 9513 velocity.prevPositionY = image.touchesCurrent.y; 9514 velocity.prevTime = Date.now(); 9515 9516 gesture.$imageWrapEl.transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 9517 }, 9518 onTouchEnd: function onTouchEnd() { 9519 var swiper = this; 9520 var zoom = swiper.zoom; 9521 var gesture = zoom.gesture; 9522 var image = zoom.image; 9523 var velocity = zoom.velocity; 9524 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9525 if (!image.isTouched || !image.isMoved) { 9526 image.isTouched = false; 9527 image.isMoved = false; 9528 return; 9529 } 9530 image.isTouched = false; 9531 image.isMoved = false; 9532 var momentumDurationX = 300; 9533 var momentumDurationY = 300; 9534 var momentumDistanceX = velocity.x * momentumDurationX; 9535 var newPositionX = image.currentX + momentumDistanceX; 9536 var momentumDistanceY = velocity.y * momentumDurationY; 9537 var newPositionY = image.currentY + momentumDistanceY; 9538 9539 // Fix duration 9540 if (velocity.x !== 0) { momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); } 9541 if (velocity.y !== 0) { momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); } 9542 var momentumDuration = Math.max(momentumDurationX, momentumDurationY); 9543 9544 image.currentX = newPositionX; 9545 image.currentY = newPositionY; 9546 9547 // Define if we need image drag 9548 var scaledWidth = image.width * zoom.scale; 9549 var scaledHeight = image.height * zoom.scale; 9550 image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0); 9551 image.maxX = -image.minX; 9552 image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0); 9553 image.maxY = -image.minY; 9554 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 9555 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 9556 9557 gesture.$imageWrapEl.transition(momentumDuration).transform(("translate3d(" + (image.currentX) + "px, " + (image.currentY) + "px,0)")); 9558 }, 9559 onTransitionEnd: function onTransitionEnd() { 9560 var swiper = this; 9561 var zoom = swiper.zoom; 9562 var gesture = zoom.gesture; 9563 if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { 9564 gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); 9565 gesture.$imageWrapEl.transform('translate3d(0,0,0)'); 9566 9567 zoom.scale = 1; 9568 zoom.currentScale = 1; 9569 9570 gesture.$slideEl = undefined; 9571 gesture.$imageEl = undefined; 9572 gesture.$imageWrapEl = undefined; 9573 } 9574 }, 9575 // Toggle Zoom 9576 toggle: function toggle(e) { 9577 var swiper = this; 9578 var zoom = swiper.zoom; 9579 9580 if (zoom.scale && zoom.scale !== 1) { 9581 // Zoom Out 9582 zoom.out(); 9583 } else { 9584 // Zoom In 9585 zoom.in(e); 9586 } 9587 }, 9588 in: function in$1(e) { 9589 var swiper = this; 9590 9591 var zoom = swiper.zoom; 9592 var params = swiper.params.zoom; 9593 var gesture = zoom.gesture; 9594 var image = zoom.image; 9595 9596 if (!gesture.$slideEl) { 9597 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 9598 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 9599 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 9600 } 9601 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9602 9603 gesture.$slideEl.addClass(("" + (params.zoomedSlideClass))); 9604 9605 var touchX; 9606 var touchY; 9607 var offsetX; 9608 var offsetY; 9609 var diffX; 9610 var diffY; 9611 var translateX; 9612 var translateY; 9613 var imageWidth; 9614 var imageHeight; 9615 var scaledWidth; 9616 var scaledHeight; 9617 var translateMinX; 9618 var translateMinY; 9619 var translateMaxX; 9620 var translateMaxY; 9621 var slideWidth; 9622 var slideHeight; 9623 9624 if (typeof image.touchesStart.x === 'undefined' && e) { 9625 touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; 9626 touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; 9627 } else { 9628 touchX = image.touchesStart.x; 9629 touchY = image.touchesStart.y; 9630 } 9631 9632 zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 9633 zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 9634 if (e) { 9635 slideWidth = gesture.$slideEl[0].offsetWidth; 9636 slideHeight = gesture.$slideEl[0].offsetHeight; 9637 offsetX = gesture.$slideEl.offset().left; 9638 offsetY = gesture.$slideEl.offset().top; 9639 diffX = (offsetX + (slideWidth / 2)) - touchX; 9640 diffY = (offsetY + (slideHeight / 2)) - touchY; 9641 9642 imageWidth = gesture.$imageEl[0].offsetWidth; 9643 imageHeight = gesture.$imageEl[0].offsetHeight; 9644 scaledWidth = imageWidth * zoom.scale; 9645 scaledHeight = imageHeight * zoom.scale; 9646 9647 translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0); 9648 translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0); 9649 translateMaxX = -translateMinX; 9650 translateMaxY = -translateMinY; 9651 9652 translateX = diffX * zoom.scale; 9653 translateY = diffY * zoom.scale; 9654 9655 if (translateX < translateMinX) { 9656 translateX = translateMinX; 9657 } 9658 if (translateX > translateMaxX) { 9659 translateX = translateMaxX; 9660 } 9661 9662 if (translateY < translateMinY) { 9663 translateY = translateMinY; 9664 } 9665 if (translateY > translateMaxY) { 9666 translateY = translateMaxY; 9667 } 9668 } else { 9669 translateX = 0; 9670 translateY = 0; 9671 } 9672 gesture.$imageWrapEl.transition(300).transform(("translate3d(" + translateX + "px, " + translateY + "px,0)")); 9673 gesture.$imageEl.transition(300).transform(("translate3d(0,0,0) scale(" + (zoom.scale) + ")")); 9674 }, 9675 out: function out() { 9676 var swiper = this; 9677 9678 var zoom = swiper.zoom; 9679 var params = swiper.params.zoom; 9680 var gesture = zoom.gesture; 9681 9682 if (!gesture.$slideEl) { 9683 gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex); 9684 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas'); 9685 gesture.$imageWrapEl = gesture.$imageEl.parent(("." + (params.containerClass))); 9686 } 9687 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { return; } 9688 9689 zoom.scale = 1; 9690 zoom.currentScale = 1; 9691 gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); 9692 gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); 9693 gesture.$slideEl.removeClass(("" + (params.zoomedSlideClass))); 9694 gesture.$slideEl = undefined; 9695 }, 9696 // Attach/Detach Events 9697 enable: function enable() { 9698 var swiper = this; 9699 var zoom = swiper.zoom; 9700 if (zoom.enabled) { return; } 9701 zoom.enabled = true; 9702 9703 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 9704 9705 // Scale image 9706 if (Support.gestures) { 9707 swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 9708 swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 9709 swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 9710 } else if (swiper.touchEvents.start === 'touchstart') { 9711 swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 9712 swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 9713 swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 9714 } 9715 9716 // Move image 9717 swiper.$wrapperEl.on(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 9718 }, 9719 disable: function disable() { 9720 var swiper = this; 9721 var zoom = swiper.zoom; 9722 if (!zoom.enabled) { return; } 9723 9724 swiper.zoom.enabled = false; 9725 9726 var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false; 9727 9728 // Scale image 9729 if (Support.gestures) { 9730 swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener); 9731 swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener); 9732 swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener); 9733 } else if (swiper.touchEvents.start === 'touchstart') { 9734 swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener); 9735 swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener); 9736 swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener); 9737 } 9738 9739 // Move image 9740 swiper.$wrapperEl.off(swiper.touchEvents.move, ("." + (swiper.params.zoom.containerClass)), zoom.onTouchMove); 9741 }, 9742 }; 9743 9744 var Zoom$1 = { 9745 name: 'zoom', 9746 params: { 9747 zoom: { 9748 enabled: false, 9749 maxRatio: 3, 9750 minRatio: 1, 9751 toggle: true, 9752 containerClass: 'swiper-zoom-container', 9753 zoomedSlideClass: 'swiper-slide-zoomed', 9754 }, 9755 }, 9756 create: function create() { 9757 var swiper = this; 9758 var zoom = { 9759 enabled: false, 9760 scale: 1, 9761 currentScale: 1, 9762 isScaling: false, 9763 gesture: { 9764 $slideEl: undefined, 9765 slideWidth: undefined, 9766 slideHeight: undefined, 9767 $imageEl: undefined, 9768 $imageWrapEl: undefined, 9769 maxRatio: 3, 9770 }, 9771 image: { 9772 isTouched: undefined, 9773 isMoved: undefined, 9774 currentX: undefined, 9775 currentY: undefined, 9776 minX: undefined, 9777 minY: undefined, 9778 maxX: undefined, 9779 maxY: undefined, 9780 width: undefined, 9781 height: undefined, 9782 startX: undefined, 9783 startY: undefined, 9784 touchesStart: {}, 9785 touchesCurrent: {}, 9786 }, 9787 velocity: { 9788 x: undefined, 9789 y: undefined, 9790 prevPositionX: undefined, 9791 prevPositionY: undefined, 9792 prevTime: undefined, 9793 }, 9794 }; 9795 9796 ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach(function (methodName) { 9797 zoom[methodName] = Zoom[methodName].bind(swiper); 9798 }); 9799 Utils.extend(swiper, { 9800 zoom: zoom, 9801 }); 9802 9803 var scale = 1; 9804 Object.defineProperty(swiper.zoom, 'scale', { 9805 get: function get() { 9806 return scale; 9807 }, 9808 set: function set(value) { 9809 if (scale !== value) { 9810 var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined; 9811 var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined; 9812 swiper.emit('zoomChange', value, imageEl, slideEl); 9813 } 9814 scale = value; 9815 }, 9816 }); 9817 }, 9818 on: { 9819 init: function init() { 9820 var swiper = this; 9821 if (swiper.params.zoom.enabled) { 9822 swiper.zoom.enable(); 9823 } 9824 }, 9825 destroy: function destroy() { 9826 var swiper = this; 9827 swiper.zoom.disable(); 9828 }, 9829 touchStart: function touchStart(e) { 9830 var swiper = this; 9831 if (!swiper.zoom.enabled) { return; } 9832 swiper.zoom.onTouchStart(e); 9833 }, 9834 touchEnd: function touchEnd(e) { 9835 var swiper = this; 9836 if (!swiper.zoom.enabled) { return; } 9837 swiper.zoom.onTouchEnd(e); 9838 }, 9839 doubleTap: function doubleTap(e) { 9840 var swiper = this; 9841 if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 9842 swiper.zoom.toggle(e); 9843 } 9844 }, 9845 transitionEnd: function transitionEnd() { 9846 var swiper = this; 9847 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 9848 swiper.zoom.onTransitionEnd(); 9849 } 9850 }, 9851 }, 9852 }; 9853 9854 var Lazy = { 9855 loadInSlide: function loadInSlide(index, loadInDuplicate) { 9856 if ( loadInDuplicate === void 0 ) loadInDuplicate = true; 9857 9858 var swiper = this; 9859 var params = swiper.params.lazy; 9860 if (typeof index === 'undefined') { return; } 9861 if (swiper.slides.length === 0) { return; } 9862 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 9863 9864 var $slideEl = isVirtual 9865 ? swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")) 9866 : swiper.slides.eq(index); 9867 9868 var $images = $slideEl.find(("." + (params.elementClass) + ":not(." + (params.loadedClass) + "):not(." + (params.loadingClass) + ")")); 9869 if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { 9870 $images = $images.add($slideEl[0]); 9871 } 9872 if ($images.length === 0) { return; } 9873 9874 $images.each(function (imageIndex, imageEl) { 9875 var $imageEl = $(imageEl); 9876 $imageEl.addClass(params.loadingClass); 9877 9878 var background = $imageEl.attr('data-background'); 9879 var src = $imageEl.attr('data-src'); 9880 var srcset = $imageEl.attr('data-srcset'); 9881 var sizes = $imageEl.attr('data-sizes'); 9882 9883 swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () { 9884 if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) { return; } 9885 if (background) { 9886 $imageEl.css('background-image', ("url(\"" + background + "\")")); 9887 $imageEl.removeAttr('data-background'); 9888 } else { 9889 if (srcset) { 9890 $imageEl.attr('srcset', srcset); 9891 $imageEl.removeAttr('data-srcset'); 9892 } 9893 if (sizes) { 9894 $imageEl.attr('sizes', sizes); 9895 $imageEl.removeAttr('data-sizes'); 9896 } 9897 if (src) { 9898 $imageEl.attr('src', src); 9899 $imageEl.removeAttr('data-src'); 9900 } 9901 } 9902 9903 $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); 9904 $slideEl.find(("." + (params.preloaderClass))).remove(); 9905 if (swiper.params.loop && loadInDuplicate) { 9906 var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); 9907 if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { 9908 var originalSlide = swiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + (swiper.params.slideDuplicateClass) + ")")); 9909 swiper.lazy.loadInSlide(originalSlide.index(), false); 9910 } else { 9911 var duplicatedSlide = swiper.$wrapperEl.children(("." + (swiper.params.slideDuplicateClass) + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]")); 9912 swiper.lazy.loadInSlide(duplicatedSlide.index(), false); 9913 } 9914 } 9915 swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]); 9916 }); 9917 9918 swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]); 9919 }); 9920 }, 9921 load: function load() { 9922 var swiper = this; 9923 var $wrapperEl = swiper.$wrapperEl; 9924 var swiperParams = swiper.params; 9925 var slides = swiper.slides; 9926 var activeIndex = swiper.activeIndex; 9927 var isVirtual = swiper.virtual && swiperParams.virtual.enabled; 9928 var params = swiperParams.lazy; 9929 9930 var slidesPerView = swiperParams.slidesPerView; 9931 if (slidesPerView === 'auto') { 9932 slidesPerView = 0; 9933 } 9934 9935 function slideExist(index) { 9936 if (isVirtual) { 9937 if ($wrapperEl.children(("." + (swiperParams.slideClass) + "[data-swiper-slide-index=\"" + index + "\"]")).length) { 9938 return true; 9939 } 9940 } else if (slides[index]) { return true; } 9941 return false; 9942 } 9943 function slideIndex(slideEl) { 9944 if (isVirtual) { 9945 return $(slideEl).attr('data-swiper-slide-index'); 9946 } 9947 return $(slideEl).index(); 9948 } 9949 9950 if (!swiper.lazy.initialImageLoaded) { swiper.lazy.initialImageLoaded = true; } 9951 if (swiper.params.watchSlidesVisibility) { 9952 $wrapperEl.children(("." + (swiperParams.slideVisibleClass))).each(function (elIndex, slideEl) { 9953 var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index(); 9954 swiper.lazy.loadInSlide(index); 9955 }); 9956 } else if (slidesPerView > 1) { 9957 for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) { 9958 if (slideExist(i)) { swiper.lazy.loadInSlide(i); } 9959 } 9960 } else { 9961 swiper.lazy.loadInSlide(activeIndex); 9962 } 9963 if (params.loadPrevNext) { 9964 if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) { 9965 var amount = params.loadPrevNextAmount; 9966 var spv = slidesPerView; 9967 var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); 9968 var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); 9969 // Next Slides 9970 for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) { 9971 if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); } 9972 } 9973 // Prev Slides 9974 for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) { 9975 if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); } 9976 } 9977 } else { 9978 var nextSlide = $wrapperEl.children(("." + (swiperParams.slideNextClass))); 9979 if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); } 9980 9981 var prevSlide = $wrapperEl.children(("." + (swiperParams.slidePrevClass))); 9982 if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); } 9983 } 9984 } 9985 }, 9986 }; 9987 9988 var Lazy$1 = { 9989 name: 'lazy', 9990 params: { 9991 lazy: { 9992 enabled: false, 9993 loadPrevNext: false, 9994 loadPrevNextAmount: 1, 9995 loadOnTransitionStart: false, 9996 9997 elementClass: 'swiper-lazy', 9998 loadingClass: 'swiper-lazy-loading', 9999 loadedClass: 'swiper-lazy-loaded', 10000 preloaderClass: 'swiper-lazy-preloader', 10001 }, 10002 }, 10003 create: function create() { 10004 var swiper = this; 10005 Utils.extend(swiper, { 10006 lazy: { 10007 initialImageLoaded: false, 10008 load: Lazy.load.bind(swiper), 10009 loadInSlide: Lazy.loadInSlide.bind(swiper), 10010 }, 10011 }); 10012 }, 10013 on: { 10014 beforeInit: function beforeInit() { 10015 var swiper = this; 10016 if (swiper.params.lazy.enabled && swiper.params.preloadImages) { 10017 swiper.params.preloadImages = false; 10018 } 10019 }, 10020 init: function init() { 10021 var swiper = this; 10022 if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) { 10023 swiper.lazy.load(); 10024 } 10025 }, 10026 scroll: function scroll() { 10027 var swiper = this; 10028 if (swiper.params.freeMode && !swiper.params.freeModeSticky) { 10029 swiper.lazy.load(); 10030 } 10031 }, 10032 resize: function resize() { 10033 var swiper = this; 10034 if (swiper.params.lazy.enabled) { 10035 swiper.lazy.load(); 10036 } 10037 }, 10038 scrollbarDragMove: function scrollbarDragMove() { 10039 var swiper = this; 10040 if (swiper.params.lazy.enabled) { 10041 swiper.lazy.load(); 10042 } 10043 }, 10044 transitionStart: function transitionStart() { 10045 var swiper = this; 10046 if (swiper.params.lazy.enabled) { 10047 if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) { 10048 swiper.lazy.load(); 10049 } 10050 } 10051 }, 10052 transitionEnd: function transitionEnd() { 10053 var swiper = this; 10054 if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { 10055 swiper.lazy.load(); 10056 } 10057 }, 10058 }, 10059 }; 10060 10061 /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 10062 10063 var Controller = { 10064 LinearSpline: function LinearSpline(x, y) { 10065 var binarySearch = (function search() { 10066 var maxIndex; 10067 var minIndex; 10068 var guess; 10069 return function (array, val) { 10070 minIndex = -1; 10071 maxIndex = array.length; 10072 while (maxIndex - minIndex > 1) { 10073 guess = maxIndex + minIndex >> 1; 10074 if (array[guess] <= val) { 10075 minIndex = guess; 10076 } else { 10077 maxIndex = guess; 10078 } 10079 } 10080 return maxIndex; 10081 }; 10082 }()); 10083 this.x = x; 10084 this.y = y; 10085 this.lastIndex = x.length - 1; 10086 // Given an x value (x2), return the expected y2 value: 10087 // (x1,y1) is the known point before given value, 10088 // (x3,y3) is the known point after given value. 10089 var i1; 10090 var i3; 10091 10092 this.interpolate = function interpolate(x2) { 10093 if (!x2) { return 0; } 10094 10095 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 10096 i3 = binarySearch(this.x, x2); 10097 i1 = i3 - 1; 10098 10099 // We have our indexes i1 & i3, so we can calculate already: 10100 // y2 := ((x2âx1) à (y3ây1)) ÷ (x3âx1) + y1 10101 return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1]; 10102 }; 10103 return this; 10104 }, 10105 // xxx: for now i will just save one spline function to to 10106 getInterpolateFunction: function getInterpolateFunction(c) { 10107 var swiper = this; 10108 if (!swiper.controller.spline) { 10109 swiper.controller.spline = swiper.params.loop 10110 ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) 10111 : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid); 10112 } 10113 }, 10114 setTranslate: function setTranslate(setTranslate$1, byController) { 10115 var swiper = this; 10116 var controlled = swiper.controller.control; 10117 var multiplier; 10118 var controlledTranslate; 10119 function setControlledTranslate(c) { 10120 // this will create an Interpolate function based on the snapGrids 10121 // x is the Grid of the scrolled scroller and y will be the controlled scroller 10122 // it makes sense to create this only once and recall it for the interpolation 10123 // the function does a lot of value caching for performance 10124 var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 10125 if (swiper.params.controller.by === 'slide') { 10126 swiper.controller.getInterpolateFunction(c); 10127 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 10128 // but it did not work out 10129 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 10130 } 10131 10132 if (!controlledTranslate || swiper.params.controller.by === 'container') { 10133 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 10134 controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate(); 10135 } 10136 10137 if (swiper.params.controller.inverse) { 10138 controlledTranslate = c.maxTranslate() - controlledTranslate; 10139 } 10140 c.updateProgress(controlledTranslate); 10141 c.setTranslate(controlledTranslate, swiper); 10142 c.updateActiveIndex(); 10143 c.updateSlidesClasses(); 10144 } 10145 if (Array.isArray(controlled)) { 10146 for (var i = 0; i < controlled.length; i += 1) { 10147 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 10148 setControlledTranslate(controlled[i]); 10149 } 10150 } 10151 } else if (controlled instanceof Swiper && byController !== controlled) { 10152 setControlledTranslate(controlled); 10153 } 10154 }, 10155 setTransition: function setTransition(duration, byController) { 10156 var swiper = this; 10157 var controlled = swiper.controller.control; 10158 var i; 10159 function setControlledTransition(c) { 10160 c.setTransition(duration, swiper); 10161 if (duration !== 0) { 10162 c.transitionStart(); 10163 if (c.params.autoHeight) { 10164 Utils.nextTick(function () { 10165 c.updateAutoHeight(); 10166 }); 10167 } 10168 c.$wrapperEl.transitionEnd(function () { 10169 if (!controlled) { return; } 10170 if (c.params.loop && swiper.params.controller.by === 'slide') { 10171 c.loopFix(); 10172 } 10173 c.transitionEnd(); 10174 }); 10175 } 10176 } 10177 if (Array.isArray(controlled)) { 10178 for (i = 0; i < controlled.length; i += 1) { 10179 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 10180 setControlledTransition(controlled[i]); 10181 } 10182 } 10183 } else if (controlled instanceof Swiper && byController !== controlled) { 10184 setControlledTransition(controlled); 10185 } 10186 }, 10187 }; 10188 var Controller$1 = { 10189 name: 'controller', 10190 params: { 10191 controller: { 10192 control: undefined, 10193 inverse: false, 10194 by: 'slide', // or 'container' 10195 }, 10196 }, 10197 create: function create() { 10198 var swiper = this; 10199 Utils.extend(swiper, { 10200 controller: { 10201 control: swiper.params.controller.control, 10202 getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper), 10203 setTranslate: Controller.setTranslate.bind(swiper), 10204 setTransition: Controller.setTransition.bind(swiper), 10205 }, 10206 }); 10207 }, 10208 on: { 10209 update: function update() { 10210 var swiper = this; 10211 if (!swiper.controller.control) { return; } 10212 if (swiper.controller.spline) { 10213 swiper.controller.spline = undefined; 10214 delete swiper.controller.spline; 10215 } 10216 }, 10217 resize: function resize() { 10218 var swiper = this; 10219 if (!swiper.controller.control) { return; } 10220 if (swiper.controller.spline) { 10221 swiper.controller.spline = undefined; 10222 delete swiper.controller.spline; 10223 } 10224 }, 10225 observerUpdate: function observerUpdate() { 10226 var swiper = this; 10227 if (!swiper.controller.control) { return; } 10228 if (swiper.controller.spline) { 10229 swiper.controller.spline = undefined; 10230 delete swiper.controller.spline; 10231 } 10232 }, 10233 setTranslate: function setTranslate(translate, byController) { 10234 var swiper = this; 10235 if (!swiper.controller.control) { return; } 10236 swiper.controller.setTranslate(translate, byController); 10237 }, 10238 setTransition: function setTransition(duration, byController) { 10239 var swiper = this; 10240 if (!swiper.controller.control) { return; } 10241 swiper.controller.setTransition(duration, byController); 10242 }, 10243 }, 10244 }; 10245 10246 var a11y = { 10247 makeElFocusable: function makeElFocusable($el) { 10248 $el.attr('tabIndex', '0'); 10249 return $el; 10250 }, 10251 addElRole: function addElRole($el, role) { 10252 $el.attr('role', role); 10253 return $el; 10254 }, 10255 addElLabel: function addElLabel($el, label) { 10256 $el.attr('aria-label', label); 10257 return $el; 10258 }, 10259 disableEl: function disableEl($el) { 10260 $el.attr('aria-disabled', true); 10261 return $el; 10262 }, 10263 enableEl: function enableEl($el) { 10264 $el.attr('aria-disabled', false); 10265 return $el; 10266 }, 10267 onEnterKey: function onEnterKey(e) { 10268 var swiper = this; 10269 var params = swiper.params.a11y; 10270 if (e.keyCode !== 13) { return; } 10271 var $targetEl = $(e.target); 10272 if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { 10273 if (!(swiper.isEnd && !swiper.params.loop)) { 10274 swiper.slideNext(); 10275 } 10276 if (swiper.isEnd) { 10277 swiper.a11y.notify(params.lastSlideMessage); 10278 } else { 10279 swiper.a11y.notify(params.nextSlideMessage); 10280 } 10281 } 10282 if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { 10283 if (!(swiper.isBeginning && !swiper.params.loop)) { 10284 swiper.slidePrev(); 10285 } 10286 if (swiper.isBeginning) { 10287 swiper.a11y.notify(params.firstSlideMessage); 10288 } else { 10289 swiper.a11y.notify(params.prevSlideMessage); 10290 } 10291 } 10292 if (swiper.pagination && $targetEl.is(("." + (swiper.params.pagination.bulletClass)))) { 10293 $targetEl[0].click(); 10294 } 10295 }, 10296 notify: function notify(message) { 10297 var swiper = this; 10298 var notification = swiper.a11y.liveRegion; 10299 if (notification.length === 0) { return; } 10300 notification.html(''); 10301 notification.html(message); 10302 }, 10303 updateNavigation: function updateNavigation() { 10304 var swiper = this; 10305 10306 if (swiper.params.loop) { return; } 10307 var ref = swiper.navigation; 10308 var $nextEl = ref.$nextEl; 10309 var $prevEl = ref.$prevEl; 10310 10311 if ($prevEl && $prevEl.length > 0) { 10312 if (swiper.isBeginning) { 10313 swiper.a11y.disableEl($prevEl); 10314 } else { 10315 swiper.a11y.enableEl($prevEl); 10316 } 10317 } 10318 if ($nextEl && $nextEl.length > 0) { 10319 if (swiper.isEnd) { 10320 swiper.a11y.disableEl($nextEl); 10321 } else { 10322 swiper.a11y.enableEl($nextEl); 10323 } 10324 } 10325 }, 10326 updatePagination: function updatePagination() { 10327 var swiper = this; 10328 var params = swiper.params.a11y; 10329 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 10330 swiper.pagination.bullets.each(function (bulletIndex, bulletEl) { 10331 var $bulletEl = $(bulletEl); 10332 swiper.a11y.makeElFocusable($bulletEl); 10333 swiper.a11y.addElRole($bulletEl, 'button'); 10334 swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1)); 10335 }); 10336 } 10337 }, 10338 init: function init() { 10339 var swiper = this; 10340 10341 swiper.$el.append(swiper.a11y.liveRegion); 10342 10343 // Navigation 10344 var params = swiper.params.a11y; 10345 var $nextEl; 10346 var $prevEl; 10347 if (swiper.navigation && swiper.navigation.$nextEl) { 10348 $nextEl = swiper.navigation.$nextEl; 10349 } 10350 if (swiper.navigation && swiper.navigation.$prevEl) { 10351 $prevEl = swiper.navigation.$prevEl; 10352 } 10353 if ($nextEl) { 10354 swiper.a11y.makeElFocusable($nextEl); 10355 swiper.a11y.addElRole($nextEl, 'button'); 10356 swiper.a11y.addElLabel($nextEl, params.nextSlideMessage); 10357 $nextEl.on('keydown', swiper.a11y.onEnterKey); 10358 } 10359 if ($prevEl) { 10360 swiper.a11y.makeElFocusable($prevEl); 10361 swiper.a11y.addElRole($prevEl, 'button'); 10362 swiper.a11y.addElLabel($prevEl, params.prevSlideMessage); 10363 $prevEl.on('keydown', swiper.a11y.onEnterKey); 10364 } 10365 10366 // Pagination 10367 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 10368 swiper.pagination.$el.on('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 10369 } 10370 }, 10371 destroy: function destroy() { 10372 var swiper = this; 10373 if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); } 10374 10375 var $nextEl; 10376 var $prevEl; 10377 if (swiper.navigation && swiper.navigation.$nextEl) { 10378 $nextEl = swiper.navigation.$nextEl; 10379 } 10380 if (swiper.navigation && swiper.navigation.$prevEl) { 10381 $prevEl = swiper.navigation.$prevEl; 10382 } 10383 if ($nextEl) { 10384 $nextEl.off('keydown', swiper.a11y.onEnterKey); 10385 } 10386 if ($prevEl) { 10387 $prevEl.off('keydown', swiper.a11y.onEnterKey); 10388 } 10389 10390 // Pagination 10391 if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) { 10392 swiper.pagination.$el.off('keydown', ("." + (swiper.params.pagination.bulletClass)), swiper.a11y.onEnterKey); 10393 } 10394 }, 10395 }; 10396 var A11y = { 10397 name: 'a11y', 10398 params: { 10399 a11y: { 10400 enabled: true, 10401 notificationClass: 'swiper-notification', 10402 prevSlideMessage: 'Previous slide', 10403 nextSlideMessage: 'Next slide', 10404 firstSlideMessage: 'This is the first slide', 10405 lastSlideMessage: 'This is the last slide', 10406 paginationBulletMessage: 'Go to slide {{index}}', 10407 }, 10408 }, 10409 create: function create() { 10410 var swiper = this; 10411 Utils.extend(swiper, { 10412 a11y: { 10413 liveRegion: $(("<span class=\"" + (swiper.params.a11y.notificationClass) + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")), 10414 }, 10415 }); 10416 Object.keys(a11y).forEach(function (methodName) { 10417 swiper.a11y[methodName] = a11y[methodName].bind(swiper); 10418 }); 10419 }, 10420 on: { 10421 init: function init() { 10422 var swiper = this; 10423 if (!swiper.params.a11y.enabled) { return; } 10424 swiper.a11y.init(); 10425 swiper.a11y.updateNavigation(); 10426 }, 10427 toEdge: function toEdge() { 10428 var swiper = this; 10429 if (!swiper.params.a11y.enabled) { return; } 10430 swiper.a11y.updateNavigation(); 10431 }, 10432 fromEdge: function fromEdge() { 10433 var swiper = this; 10434 if (!swiper.params.a11y.enabled) { return; } 10435 swiper.a11y.updateNavigation(); 10436 }, 10437 paginationUpdate: function paginationUpdate() { 10438 var swiper = this; 10439 if (!swiper.params.a11y.enabled) { return; } 10440 swiper.a11y.updatePagination(); 10441 }, 10442 destroy: function destroy() { 10443 var swiper = this; 10444 if (!swiper.params.a11y.enabled) { return; } 10445 swiper.a11y.destroy(); 10446 }, 10447 }, 10448 }; 10449 10450 var History = { 10451 init: function init() { 10452 var swiper = this; 10453 if (!swiper.params.history) { return; } 10454 if (!win.history || !win.history.pushState) { 10455 swiper.params.history.enabled = false; 10456 swiper.params.hashNavigation.enabled = true; 10457 return; 10458 } 10459 var history = swiper.history; 10460 history.initialized = true; 10461 history.paths = History.getPathValues(); 10462 if (!history.paths.key && !history.paths.value) { return; } 10463 history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit); 10464 if (!swiper.params.history.replaceState) { 10465 win.addEventListener('popstate', swiper.history.setHistoryPopState); 10466 } 10467 }, 10468 destroy: function destroy() { 10469 var swiper = this; 10470 if (!swiper.params.history.replaceState) { 10471 win.removeEventListener('popstate', swiper.history.setHistoryPopState); 10472 } 10473 }, 10474 setHistoryPopState: function setHistoryPopState() { 10475 var swiper = this; 10476 swiper.history.paths = History.getPathValues(); 10477 swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false); 10478 }, 10479 getPathValues: function getPathValues() { 10480 var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; }); 10481 var total = pathArray.length; 10482 var key = pathArray[total - 2]; 10483 var value = pathArray[total - 1]; 10484 return { key: key, value: value }; 10485 }, 10486 setHistory: function setHistory(key, index) { 10487 var swiper = this; 10488 if (!swiper.history.initialized || !swiper.params.history.enabled) { return; } 10489 var slide = swiper.slides.eq(index); 10490 var value = History.slugify(slide.attr('data-history')); 10491 if (!win.location.pathname.includes(key)) { 10492 value = key + "/" + value; 10493 } 10494 var currentState = win.history.state; 10495 if (currentState && currentState.value === value) { 10496 return; 10497 } 10498 if (swiper.params.history.replaceState) { 10499 win.history.replaceState({ value: value }, null, value); 10500 } else { 10501 win.history.pushState({ value: value }, null, value); 10502 } 10503 }, 10504 slugify: function slugify(text) { 10505 return text.toString() 10506 .replace(/\s+/g, '-') 10507 .replace(/[^\w-]+/g, '') 10508 .replace(/--+/g, '-') 10509 .replace(/^-+/, '') 10510 .replace(/-+$/, ''); 10511 }, 10512 scrollToSlide: function scrollToSlide(speed, value, runCallbacks) { 10513 var swiper = this; 10514 if (value) { 10515 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 10516 var slide = swiper.slides.eq(i); 10517 var slideHistory = History.slugify(slide.attr('data-history')); 10518 if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { 10519 var index = slide.index(); 10520 swiper.slideTo(index, speed, runCallbacks); 10521 } 10522 } 10523 } else { 10524 swiper.slideTo(0, speed, runCallbacks); 10525 } 10526 }, 10527 }; 10528 10529 var History$1 = { 10530 name: 'history', 10531 params: { 10532 history: { 10533 enabled: false, 10534 replaceState: false, 10535 key: 'slides', 10536 }, 10537 }, 10538 create: function create() { 10539 var swiper = this; 10540 Utils.extend(swiper, { 10541 history: { 10542 init: History.init.bind(swiper), 10543 setHistory: History.setHistory.bind(swiper), 10544 setHistoryPopState: History.setHistoryPopState.bind(swiper), 10545 scrollToSlide: History.scrollToSlide.bind(swiper), 10546 destroy: History.destroy.bind(swiper), 10547 }, 10548 }); 10549 }, 10550 on: { 10551 init: function init() { 10552 var swiper = this; 10553 if (swiper.params.history.enabled) { 10554 swiper.history.init(); 10555 } 10556 }, 10557 destroy: function destroy() { 10558 var swiper = this; 10559 if (swiper.params.history.enabled) { 10560 swiper.history.destroy(); 10561 } 10562 }, 10563 transitionEnd: function transitionEnd() { 10564 var swiper = this; 10565 if (swiper.history.initialized) { 10566 swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex); 10567 } 10568 }, 10569 }, 10570 }; 10571 10572 var HashNavigation = { 10573 onHashCange: function onHashCange() { 10574 var swiper = this; 10575 var newHash = doc.location.hash.replace('#', ''); 10576 var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); 10577 if (newHash !== activeSlideHash) { 10578 var newIndex = swiper.$wrapperEl.children(("." + (swiper.params.slideClass) + "[data-hash=\"" + newHash + "\"]")).index(); 10579 if (typeof newIndex === 'undefined') { return; } 10580 swiper.slideTo(newIndex); 10581 } 10582 }, 10583 setHash: function setHash() { 10584 var swiper = this; 10585 if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; } 10586 if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) { 10587 win.history.replaceState(null, null, (("#" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || '')); 10588 } else { 10589 var slide = swiper.slides.eq(swiper.activeIndex); 10590 var hash = slide.attr('data-hash') || slide.attr('data-history'); 10591 doc.location.hash = hash || ''; 10592 } 10593 }, 10594 init: function init() { 10595 var swiper = this; 10596 if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; } 10597 swiper.hashNavigation.initialized = true; 10598 var hash = doc.location.hash.replace('#', ''); 10599 if (hash) { 10600 var speed = 0; 10601 for (var i = 0, length = swiper.slides.length; i < length; i += 1) { 10602 var slide = swiper.slides.eq(i); 10603 var slideHash = slide.attr('data-hash') || slide.attr('data-history'); 10604 if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { 10605 var index = slide.index(); 10606 swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); 10607 } 10608 } 10609 } 10610 if (swiper.params.hashNavigation.watchState) { 10611 $(win).on('hashchange', swiper.hashNavigation.onHashCange); 10612 } 10613 }, 10614 destroy: function destroy() { 10615 var swiper = this; 10616 if (swiper.params.hashNavigation.watchState) { 10617 $(win).off('hashchange', swiper.hashNavigation.onHashCange); 10618 } 10619 }, 10620 }; 10621 var HashNavigation$1 = { 10622 name: 'hash-navigation', 10623 params: { 10624 hashNavigation: { 10625 enabled: false, 10626 replaceState: false, 10627 watchState: false, 10628 }, 10629 }, 10630 create: function create() { 10631 var swiper = this; 10632 Utils.extend(swiper, { 10633 hashNavigation: { 10634 initialized: false, 10635 init: HashNavigation.init.bind(swiper), 10636 destroy: HashNavigation.destroy.bind(swiper), 10637 setHash: HashNavigation.setHash.bind(swiper), 10638 onHashCange: HashNavigation.onHashCange.bind(swiper), 10639 }, 10640 }); 10641 }, 10642 on: { 10643 init: function init() { 10644 var swiper = this; 10645 if (swiper.params.hashNavigation.enabled) { 10646 swiper.hashNavigation.init(); 10647 } 10648 }, 10649 destroy: function destroy() { 10650 var swiper = this; 10651 if (swiper.params.hashNavigation.enabled) { 10652 swiper.hashNavigation.destroy(); 10653 } 10654 }, 10655 transitionEnd: function transitionEnd() { 10656 var swiper = this; 10657 if (swiper.hashNavigation.initialized) { 10658 swiper.hashNavigation.setHash(); 10659 } 10660 }, 10661 }, 10662 }; 10663 10664 /* eslint no-underscore-dangle: "off" */ 10665 10666 var Autoplay = { 10667 run: function run() { 10668 var swiper = this; 10669 var $activeSlideEl = swiper.slides.eq(swiper.activeIndex); 10670 var delay = swiper.params.autoplay.delay; 10671 if ($activeSlideEl.attr('data-swiper-autoplay')) { 10672 delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; 10673 } 10674 swiper.autoplay.timeout = Utils.nextTick(function () { 10675 if (swiper.params.autoplay.reverseDirection) { 10676 if (swiper.params.loop) { 10677 swiper.loopFix(); 10678 swiper.slidePrev(swiper.params.speed, true, true); 10679 swiper.emit('autoplay'); 10680 } else if (!swiper.isBeginning) { 10681 swiper.slidePrev(swiper.params.speed, true, true); 10682 swiper.emit('autoplay'); 10683 } else if (!swiper.params.autoplay.stopOnLastSlide) { 10684 swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); 10685 swiper.emit('autoplay'); 10686 } else { 10687 swiper.autoplay.stop(); 10688 } 10689 } else if (swiper.params.loop) { 10690 swiper.loopFix(); 10691 swiper.slideNext(swiper.params.speed, true, true); 10692 swiper.emit('autoplay'); 10693 } else if (!swiper.isEnd) { 10694 swiper.slideNext(swiper.params.speed, true, true); 10695 swiper.emit('autoplay'); 10696 } else if (!swiper.params.autoplay.stopOnLastSlide) { 10697 swiper.slideTo(0, swiper.params.speed, true, true); 10698 swiper.emit('autoplay'); 10699 } else { 10700 swiper.autoplay.stop(); 10701 } 10702 }, delay); 10703 }, 10704 start: function start() { 10705 var swiper = this; 10706 if (typeof swiper.autoplay.timeout !== 'undefined') { return false; } 10707 if (swiper.autoplay.running) { return false; } 10708 swiper.autoplay.running = true; 10709 swiper.emit('autoplayStart'); 10710 swiper.autoplay.run(); 10711 return true; 10712 }, 10713 stop: function stop() { 10714 var swiper = this; 10715 if (!swiper.autoplay.running) { return false; } 10716 if (typeof swiper.autoplay.timeout === 'undefined') { return false; } 10717 10718 if (swiper.autoplay.timeout) { 10719 clearTimeout(swiper.autoplay.timeout); 10720 swiper.autoplay.timeout = undefined; 10721 } 10722 swiper.autoplay.running = false; 10723 swiper.emit('autoplayStop'); 10724 return true; 10725 }, 10726 pause: function pause(speed) { 10727 var swiper = this; 10728 if (!swiper.autoplay.running) { return; } 10729 if (swiper.autoplay.paused) { return; } 10730 if (swiper.autoplay.timeout) { clearTimeout(swiper.autoplay.timeout); } 10731 swiper.autoplay.paused = true; 10732 if (speed === 0 || !swiper.params.autoplay.waitForTransition) { 10733 swiper.autoplay.paused = false; 10734 swiper.autoplay.run(); 10735 } else { 10736 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd); 10737 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 10738 } 10739 }, 10740 }; 10741 10742 var Autoplay$1 = { 10743 name: 'autoplay', 10744 params: { 10745 autoplay: { 10746 enabled: false, 10747 delay: 3000, 10748 waitForTransition: true, 10749 disableOnInteraction: true, 10750 stopOnLastSlide: false, 10751 reverseDirection: false, 10752 }, 10753 }, 10754 create: function create() { 10755 var swiper = this; 10756 Utils.extend(swiper, { 10757 autoplay: { 10758 running: false, 10759 paused: false, 10760 run: Autoplay.run.bind(swiper), 10761 start: Autoplay.start.bind(swiper), 10762 stop: Autoplay.stop.bind(swiper), 10763 pause: Autoplay.pause.bind(swiper), 10764 onTransitionEnd: function onTransitionEnd(e) { 10765 if (!swiper || swiper.destroyed || !swiper.$wrapperEl) { return; } 10766 if (e.target !== this) { return; } 10767 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd); 10768 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd); 10769 swiper.autoplay.paused = false; 10770 if (!swiper.autoplay.running) { 10771 swiper.autoplay.stop(); 10772 } else { 10773 swiper.autoplay.run(); 10774 } 10775 }, 10776 }, 10777 }); 10778 }, 10779 on: { 10780 init: function init() { 10781 var swiper = this; 10782 if (swiper.params.autoplay.enabled) { 10783 swiper.autoplay.start(); 10784 } 10785 }, 10786 beforeTransitionStart: function beforeTransitionStart(speed, internal) { 10787 var swiper = this; 10788 if (swiper.autoplay.running) { 10789 if (internal || !swiper.params.autoplay.disableOnInteraction) { 10790 swiper.autoplay.pause(speed); 10791 } else { 10792 swiper.autoplay.stop(); 10793 } 10794 } 10795 }, 10796 sliderFirstMove: function sliderFirstMove() { 10797 var swiper = this; 10798 if (swiper.autoplay.running) { 10799 if (swiper.params.autoplay.disableOnInteraction) { 10800 swiper.autoplay.stop(); 10801 } else { 10802 swiper.autoplay.pause(); 10803 } 10804 } 10805 }, 10806 destroy: function destroy() { 10807 var swiper = this; 10808 if (swiper.autoplay.running) { 10809 swiper.autoplay.stop(); 10810 } 10811 }, 10812 }, 10813 }; 10814 10815 var Fade = { 10816 setTranslate: function setTranslate() { 10817 var swiper = this; 10818 var slides = swiper.slides; 10819 for (var i = 0; i < slides.length; i += 1) { 10820 var $slideEl = swiper.slides.eq(i); 10821 var offset = $slideEl[0].swiperSlideOffset; 10822 var tx = -offset; 10823 if (!swiper.params.virtualTranslate) { tx -= swiper.translate; } 10824 var ty = 0; 10825 if (!swiper.isHorizontal()) { 10826 ty = tx; 10827 tx = 0; 10828 } 10829 var slideOpacity = swiper.params.fadeEffect.crossFade 10830 ? Math.max(1 - Math.abs($slideEl[0].progress), 0) 10831 : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); 10832 $slideEl 10833 .css({ 10834 opacity: slideOpacity, 10835 }) 10836 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px)")); 10837 } 10838 }, 10839 setTransition: function setTransition(duration) { 10840 var swiper = this; 10841 var slides = swiper.slides; 10842 var $wrapperEl = swiper.$wrapperEl; 10843 slides.transition(duration); 10844 if (swiper.params.virtualTranslate && duration !== 0) { 10845 var eventTriggered = false; 10846 slides.transitionEnd(function () { 10847 if (eventTriggered) { return; } 10848 if (!swiper || swiper.destroyed) { return; } 10849 eventTriggered = true; 10850 swiper.animating = false; 10851 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 10852 for (var i = 0; i < triggerEvents.length; i += 1) { 10853 $wrapperEl.trigger(triggerEvents[i]); 10854 } 10855 }); 10856 } 10857 }, 10858 }; 10859 10860 var EffectFade = { 10861 name: 'effect-fade', 10862 params: { 10863 fadeEffect: { 10864 crossFade: false, 10865 }, 10866 }, 10867 create: function create() { 10868 var swiper = this; 10869 Utils.extend(swiper, { 10870 fadeEffect: { 10871 setTranslate: Fade.setTranslate.bind(swiper), 10872 setTransition: Fade.setTransition.bind(swiper), 10873 }, 10874 }); 10875 }, 10876 on: { 10877 beforeInit: function beforeInit() { 10878 var swiper = this; 10879 if (swiper.params.effect !== 'fade') { return; } 10880 swiper.classNames.push(((swiper.params.containerModifierClass) + "fade")); 10881 var overwriteParams = { 10882 slidesPerView: 1, 10883 slidesPerColumn: 1, 10884 slidesPerGroup: 1, 10885 watchSlidesProgress: true, 10886 spaceBetween: 0, 10887 virtualTranslate: true, 10888 }; 10889 Utils.extend(swiper.params, overwriteParams); 10890 Utils.extend(swiper.originalParams, overwriteParams); 10891 }, 10892 setTranslate: function setTranslate() { 10893 var swiper = this; 10894 if (swiper.params.effect !== 'fade') { return; } 10895 swiper.fadeEffect.setTranslate(); 10896 }, 10897 setTransition: function setTransition(duration) { 10898 var swiper = this; 10899 if (swiper.params.effect !== 'fade') { return; } 10900 swiper.fadeEffect.setTransition(duration); 10901 }, 10902 }, 10903 }; 10904 10905 var Cube = { 10906 setTranslate: function setTranslate() { 10907 var swiper = this; 10908 var $el = swiper.$el; 10909 var $wrapperEl = swiper.$wrapperEl; 10910 var slides = swiper.slides; 10911 var swiperWidth = swiper.width; 10912 var swiperHeight = swiper.height; 10913 var rtl = swiper.rtlTranslate; 10914 var swiperSize = swiper.size; 10915 var params = swiper.params.cubeEffect; 10916 var isHorizontal = swiper.isHorizontal(); 10917 var isVirtual = swiper.virtual && swiper.params.virtual.enabled; 10918 var wrapperRotate = 0; 10919 var $cubeShadowEl; 10920 if (params.shadow) { 10921 if (isHorizontal) { 10922 $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); 10923 if ($cubeShadowEl.length === 0) { 10924 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 10925 $wrapperEl.append($cubeShadowEl); 10926 } 10927 $cubeShadowEl.css({ height: (swiperWidth + "px") }); 10928 } else { 10929 $cubeShadowEl = $el.find('.swiper-cube-shadow'); 10930 if ($cubeShadowEl.length === 0) { 10931 $cubeShadowEl = $('<div class="swiper-cube-shadow"></div>'); 10932 $el.append($cubeShadowEl); 10933 } 10934 } 10935 } 10936 for (var i = 0; i < slides.length; i += 1) { 10937 var $slideEl = slides.eq(i); 10938 var slideIndex = i; 10939 if (isVirtual) { 10940 slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); 10941 } 10942 var slideAngle = slideIndex * 90; 10943 var round = Math.floor(slideAngle / 360); 10944 if (rtl) { 10945 slideAngle = -slideAngle; 10946 round = Math.floor(-slideAngle / 360); 10947 } 10948 var progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 10949 var tx = 0; 10950 var ty = 0; 10951 var tz = 0; 10952 if (slideIndex % 4 === 0) { 10953 tx = -round * 4 * swiperSize; 10954 tz = 0; 10955 } else if ((slideIndex - 1) % 4 === 0) { 10956 tx = 0; 10957 tz = -round * 4 * swiperSize; 10958 } else if ((slideIndex - 2) % 4 === 0) { 10959 tx = swiperSize + (round * 4 * swiperSize); 10960 tz = swiperSize; 10961 } else if ((slideIndex - 3) % 4 === 0) { 10962 tx = -swiperSize; 10963 tz = (3 * swiperSize) + (swiperSize * 4 * round); 10964 } 10965 if (rtl) { 10966 tx = -tx; 10967 } 10968 10969 if (!isHorizontal) { 10970 ty = tx; 10971 tx = 0; 10972 } 10973 10974 var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)"; 10975 if (progress <= 1 && progress > -1) { 10976 wrapperRotate = (slideIndex * 90) + (progress * 90); 10977 if (rtl) { wrapperRotate = (-slideIndex * 90) - (progress * 90); } 10978 } 10979 $slideEl.transform(transform); 10980 if (params.slideShadows) { 10981 // Set shadows 10982 var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 10983 var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 10984 if (shadowBefore.length === 0) { 10985 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 10986 $slideEl.append(shadowBefore); 10987 } 10988 if (shadowAfter.length === 0) { 10989 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 10990 $slideEl.append(shadowAfter); 10991 } 10992 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 10993 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 10994 } 10995 } 10996 $wrapperEl.css({ 10997 '-webkit-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 10998 '-moz-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 10999 '-ms-transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 11000 'transform-origin': ("50% 50% -" + (swiperSize / 2) + "px"), 11001 }); 11002 11003 if (params.shadow) { 11004 if (isHorizontal) { 11005 $cubeShadowEl.transform(("translate3d(0px, " + ((swiperWidth / 2) + params.shadowOffset) + "px, " + (-swiperWidth / 2) + "px) rotateX(90deg) rotateZ(0deg) scale(" + (params.shadowScale) + ")")); 11006 } else { 11007 var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90); 11008 var multiplier = 1.5 - ( 11009 (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2) 11010 + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2) 11011 ); 11012 var scale1 = params.shadowScale; 11013 var scale2 = params.shadowScale / multiplier; 11014 var offset = params.shadowOffset; 11015 $cubeShadowEl.transform(("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + ((swiperHeight / 2) + offset) + "px, " + (-swiperHeight / 2 / scale2) + "px) rotateX(-90deg)")); 11016 } 11017 } 11018 var zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0; 11019 $wrapperEl 11020 .transform(("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)")); 11021 }, 11022 setTransition: function setTransition(duration) { 11023 var swiper = this; 11024 var $el = swiper.$el; 11025 var slides = swiper.slides; 11026 slides 11027 .transition(duration) 11028 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 11029 .transition(duration); 11030 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 11031 $el.find('.swiper-cube-shadow').transition(duration); 11032 } 11033 }, 11034 }; 11035 11036 var EffectCube = { 11037 name: 'effect-cube', 11038 params: { 11039 cubeEffect: { 11040 slideShadows: true, 11041 shadow: true, 11042 shadowOffset: 20, 11043 shadowScale: 0.94, 11044 }, 11045 }, 11046 create: function create() { 11047 var swiper = this; 11048 Utils.extend(swiper, { 11049 cubeEffect: { 11050 setTranslate: Cube.setTranslate.bind(swiper), 11051 setTransition: Cube.setTransition.bind(swiper), 11052 }, 11053 }); 11054 }, 11055 on: { 11056 beforeInit: function beforeInit() { 11057 var swiper = this; 11058 if (swiper.params.effect !== 'cube') { return; } 11059 swiper.classNames.push(((swiper.params.containerModifierClass) + "cube")); 11060 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 11061 var overwriteParams = { 11062 slidesPerView: 1, 11063 slidesPerColumn: 1, 11064 slidesPerGroup: 1, 11065 watchSlidesProgress: true, 11066 resistanceRatio: 0, 11067 spaceBetween: 0, 11068 centeredSlides: false, 11069 virtualTranslate: true, 11070 }; 11071 Utils.extend(swiper.params, overwriteParams); 11072 Utils.extend(swiper.originalParams, overwriteParams); 11073 }, 11074 setTranslate: function setTranslate() { 11075 var swiper = this; 11076 if (swiper.params.effect !== 'cube') { return; } 11077 swiper.cubeEffect.setTranslate(); 11078 }, 11079 setTransition: function setTransition(duration) { 11080 var swiper = this; 11081 if (swiper.params.effect !== 'cube') { return; } 11082 swiper.cubeEffect.setTransition(duration); 11083 }, 11084 }, 11085 }; 11086 11087 var Flip = { 11088 setTranslate: function setTranslate() { 11089 var swiper = this; 11090 var slides = swiper.slides; 11091 var rtl = swiper.rtlTranslate; 11092 for (var i = 0; i < slides.length; i += 1) { 11093 var $slideEl = slides.eq(i); 11094 var progress = $slideEl[0].progress; 11095 if (swiper.params.flipEffect.limitRotation) { 11096 progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 11097 } 11098 var offset = $slideEl[0].swiperSlideOffset; 11099 var rotate = -180 * progress; 11100 var rotateY = rotate; 11101 var rotateX = 0; 11102 var tx = -offset; 11103 var ty = 0; 11104 if (!swiper.isHorizontal()) { 11105 ty = tx; 11106 tx = 0; 11107 rotateX = -rotateY; 11108 rotateY = 0; 11109 } else if (rtl) { 11110 rotateY = -rotateY; 11111 } 11112 11113 $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 11114 11115 if (swiper.params.flipEffect.slideShadows) { 11116 // Set shadows 11117 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 11118 var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 11119 if (shadowBefore.length === 0) { 11120 shadowBefore = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>")); 11121 $slideEl.append(shadowBefore); 11122 } 11123 if (shadowAfter.length === 0) { 11124 shadowAfter = $(("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>")); 11125 $slideEl.append(shadowAfter); 11126 } 11127 if (shadowBefore.length) { shadowBefore[0].style.opacity = Math.max(-progress, 0); } 11128 if (shadowAfter.length) { shadowAfter[0].style.opacity = Math.max(progress, 0); } 11129 } 11130 $slideEl 11131 .transform(("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)")); 11132 } 11133 }, 11134 setTransition: function setTransition(duration) { 11135 var swiper = this; 11136 var slides = swiper.slides; 11137 var activeIndex = swiper.activeIndex; 11138 var $wrapperEl = swiper.$wrapperEl; 11139 slides 11140 .transition(duration) 11141 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 11142 .transition(duration); 11143 if (swiper.params.virtualTranslate && duration !== 0) { 11144 var eventTriggered = false; 11145 // eslint-disable-next-line 11146 slides.eq(activeIndex).transitionEnd(function onTransitionEnd() { 11147 if (eventTriggered) { return; } 11148 if (!swiper || swiper.destroyed) { return; } 11149 // if (!$(this).hasClass(swiper.params.slideActiveClass)) return; 11150 eventTriggered = true; 11151 swiper.animating = false; 11152 var triggerEvents = ['webkitTransitionEnd', 'transitionend']; 11153 for (var i = 0; i < triggerEvents.length; i += 1) { 11154 $wrapperEl.trigger(triggerEvents[i]); 11155 } 11156 }); 11157 } 11158 }, 11159 }; 11160 11161 var EffectFlip = { 11162 name: 'effect-flip', 11163 params: { 11164 flipEffect: { 11165 slideShadows: true, 11166 limitRotation: true, 11167 }, 11168 }, 11169 create: function create() { 11170 var swiper = this; 11171 Utils.extend(swiper, { 11172 flipEffect: { 11173 setTranslate: Flip.setTranslate.bind(swiper), 11174 setTransition: Flip.setTransition.bind(swiper), 11175 }, 11176 }); 11177 }, 11178 on: { 11179 beforeInit: function beforeInit() { 11180 var swiper = this; 11181 if (swiper.params.effect !== 'flip') { return; } 11182 swiper.classNames.push(((swiper.params.containerModifierClass) + "flip")); 11183 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 11184 var overwriteParams = { 11185 slidesPerView: 1, 11186 slidesPerColumn: 1, 11187 slidesPerGroup: 1, 11188 watchSlidesProgress: true, 11189 spaceBetween: 0, 11190 virtualTranslate: true, 11191 }; 11192 Utils.extend(swiper.params, overwriteParams); 11193 Utils.extend(swiper.originalParams, overwriteParams); 11194 }, 11195 setTranslate: function setTranslate() { 11196 var swiper = this; 11197 if (swiper.params.effect !== 'flip') { return; } 11198 swiper.flipEffect.setTranslate(); 11199 }, 11200 setTransition: function setTransition(duration) { 11201 var swiper = this; 11202 if (swiper.params.effect !== 'flip') { return; } 11203 swiper.flipEffect.setTransition(duration); 11204 }, 11205 }, 11206 }; 11207 11208 var Coverflow = { 11209 setTranslate: function setTranslate() { 11210 var swiper = this; 11211 var swiperWidth = swiper.width; 11212 var swiperHeight = swiper.height; 11213 var slides = swiper.slides; 11214 var $wrapperEl = swiper.$wrapperEl; 11215 var slidesSizesGrid = swiper.slidesSizesGrid; 11216 var params = swiper.params.coverflowEffect; 11217 var isHorizontal = swiper.isHorizontal(); 11218 var transform = swiper.translate; 11219 var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2); 11220 var rotate = isHorizontal ? params.rotate : -params.rotate; 11221 var translate = params.depth; 11222 // Each slide offset from center 11223 for (var i = 0, length = slides.length; i < length; i += 1) { 11224 var $slideEl = slides.eq(i); 11225 var slideSize = slidesSizesGrid[i]; 11226 var slideOffset = $slideEl[0].swiperSlideOffset; 11227 var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier; 11228 11229 var rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 11230 var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 11231 // var rotateZ = 0 11232 var translateZ = -translate * Math.abs(offsetMultiplier); 11233 11234 var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier); 11235 var translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0; 11236 11237 // Fix for ultra small values 11238 if (Math.abs(translateX) < 0.001) { translateX = 0; } 11239 if (Math.abs(translateY) < 0.001) { translateY = 0; } 11240 if (Math.abs(translateZ) < 0.001) { translateZ = 0; } 11241 if (Math.abs(rotateY) < 0.001) { rotateY = 0; } 11242 if (Math.abs(rotateX) < 0.001) { rotateX = 0; } 11243 11244 var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)"; 11245 11246 $slideEl.transform(slideTransform); 11247 $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 11248 if (params.slideShadows) { 11249 // Set shadows 11250 var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 11251 var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 11252 if ($shadowBeforeEl.length === 0) { 11253 $shadowBeforeEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>")); 11254 $slideEl.append($shadowBeforeEl); 11255 } 11256 if ($shadowAfterEl.length === 0) { 11257 $shadowAfterEl = $(("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>")); 11258 $slideEl.append($shadowAfterEl); 11259 } 11260 if ($shadowBeforeEl.length) { $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; } 11261 if ($shadowAfterEl.length) { $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0; } 11262 } 11263 } 11264 11265 // Set correct perspective for IE10 11266 if (Support.pointerEvents || Support.prefixedPointerEvents) { 11267 var ws = $wrapperEl[0].style; 11268 ws.perspectiveOrigin = center + "px 50%"; 11269 } 11270 }, 11271 setTransition: function setTransition(duration) { 11272 var swiper = this; 11273 swiper.slides 11274 .transition(duration) 11275 .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left') 11276 .transition(duration); 11277 }, 11278 }; 11279 11280 var EffectCoverflow = { 11281 name: 'effect-coverflow', 11282 params: { 11283 coverflowEffect: { 11284 rotate: 50, 11285 stretch: 0, 11286 depth: 100, 11287 modifier: 1, 11288 slideShadows: true, 11289 }, 11290 }, 11291 create: function create() { 11292 var swiper = this; 11293 Utils.extend(swiper, { 11294 coverflowEffect: { 11295 setTranslate: Coverflow.setTranslate.bind(swiper), 11296 setTransition: Coverflow.setTransition.bind(swiper), 11297 }, 11298 }); 11299 }, 11300 on: { 11301 beforeInit: function beforeInit() { 11302 var swiper = this; 11303 if (swiper.params.effect !== 'coverflow') { return; } 11304 11305 swiper.classNames.push(((swiper.params.containerModifierClass) + "coverflow")); 11306 swiper.classNames.push(((swiper.params.containerModifierClass) + "3d")); 11307 11308 swiper.params.watchSlidesProgress = true; 11309 swiper.originalParams.watchSlidesProgress = true; 11310 }, 11311 setTranslate: function setTranslate() { 11312 var swiper = this; 11313 if (swiper.params.effect !== 'coverflow') { return; } 11314 swiper.coverflowEffect.setTranslate(); 11315 }, 11316 setTransition: function setTransition(duration) { 11317 var swiper = this; 11318 if (swiper.params.effect !== 'coverflow') { return; } 11319 swiper.coverflowEffect.setTransition(duration); 11320 }, 11321 }, 11322 }; 11323 11324 var Thumbs = { 11325 init: function init() { 11326 var swiper = this; 11327 var ref = swiper.params; 11328 var thumbsParams = ref.thumbs; 11329 var SwiperClass = swiper.constructor; 11330 if (thumbsParams.swiper instanceof SwiperClass) { 11331 swiper.thumbs.swiper = thumbsParams.swiper; 11332 Utils.extend(swiper.thumbs.swiper.originalParams, { 11333 watchSlidesProgress: true, 11334 slideToClickedSlide: false, 11335 }); 11336 Utils.extend(swiper.thumbs.swiper.params, { 11337 watchSlidesProgress: true, 11338 slideToClickedSlide: false, 11339 }); 11340 } else if (Utils.isObject(thumbsParams.swiper)) { 11341 swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, { 11342 watchSlidesVisibility: true, 11343 watchSlidesProgress: true, 11344 slideToClickedSlide: false, 11345 })); 11346 swiper.thumbs.swiperCreated = true; 11347 } 11348 swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); 11349 swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick); 11350 }, 11351 onThumbClick: function onThumbClick() { 11352 var swiper = this; 11353 var thumbsSwiper = swiper.thumbs.swiper; 11354 if (!thumbsSwiper) { return; } 11355 var clickedIndex = thumbsSwiper.clickedIndex; 11356 var clickedSlide = thumbsSwiper.clickedSlide; 11357 if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; } 11358 if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; } 11359 var slideToIndex; 11360 if (thumbsSwiper.params.loop) { 11361 slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); 11362 } else { 11363 slideToIndex = clickedIndex; 11364 } 11365 if (swiper.params.loop) { 11366 var currentIndex = swiper.activeIndex; 11367 if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { 11368 swiper.loopFix(); 11369 // eslint-disable-next-line 11370 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 11371 currentIndex = swiper.activeIndex; 11372 } 11373 var prevIndex = swiper.slides.eq(currentIndex).prevAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); 11374 var nextIndex = swiper.slides.eq(currentIndex).nextAll(("[data-swiper-slide-index=\"" + slideToIndex + "\"]")).eq(0).index(); 11375 if (typeof prevIndex === 'undefined') { slideToIndex = nextIndex; } 11376 else if (typeof nextIndex === 'undefined') { slideToIndex = prevIndex; } 11377 else if (nextIndex - currentIndex < currentIndex - prevIndex) { slideToIndex = nextIndex; } 11378 else { slideToIndex = prevIndex; } 11379 } 11380 swiper.slideTo(slideToIndex); 11381 }, 11382 update: function update(initial) { 11383 var swiper = this; 11384 var thumbsSwiper = swiper.thumbs.swiper; 11385 if (!thumbsSwiper) { return; } 11386 11387 var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' 11388 ? thumbsSwiper.slidesPerViewDynamic() 11389 : thumbsSwiper.params.slidesPerView; 11390 11391 if (swiper.realIndex !== thumbsSwiper.realIndex) { 11392 var currentThumbsIndex = thumbsSwiper.activeIndex; 11393 var newThumbsIndex; 11394 if (thumbsSwiper.params.loop) { 11395 if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { 11396 thumbsSwiper.loopFix(); 11397 // eslint-disable-next-line 11398 thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; 11399 currentThumbsIndex = thumbsSwiper.activeIndex; 11400 } 11401 // Find actual thumbs index to slide to 11402 var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); 11403 var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(("[data-swiper-slide-index=\"" + (swiper.realIndex) + "\"]")).eq(0).index(); 11404 if (typeof prevThumbsIndex === 'undefined') { newThumbsIndex = nextThumbsIndex; } 11405 else if (typeof nextThumbsIndex === 'undefined') { newThumbsIndex = prevThumbsIndex; } 11406 else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = currentThumbsIndex; } 11407 else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { newThumbsIndex = nextThumbsIndex; } 11408 else { newThumbsIndex = prevThumbsIndex; } 11409 } else { 11410 newThumbsIndex = swiper.realIndex; 11411 } 11412 if (thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 11413 if (thumbsSwiper.params.centeredSlides) { 11414 if (newThumbsIndex > currentThumbsIndex) { 11415 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 11416 } else { 11417 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 11418 } 11419 } else if (newThumbsIndex > currentThumbsIndex) { 11420 newThumbsIndex = newThumbsIndex - slidesPerView + 1; 11421 } 11422 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 11423 } 11424 } 11425 11426 // Activate thumbs 11427 var thumbsToActivate = 1; 11428 var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 11429 11430 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 11431 thumbsToActivate = swiper.params.slidesPerView; 11432 } 11433 11434 thumbsSwiper.slides.removeClass(thumbActiveClass); 11435 if (thumbsSwiper.params.loop) { 11436 for (var i = 0; i < thumbsToActivate; i += 1) { 11437 thumbsSwiper.$wrapperEl.children(("[data-swiper-slide-index=\"" + (swiper.realIndex + i
11437) + "\"]")).addClass(thumbActiveClass); 11438 } 11439 } else { 11440 for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) { 11441 thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass); 11442 } 11443 } 11444 }, 11445 }; 11446 var Thumbs$1 = { 11447 name: 'thumbs', 11448 params: { 11449 thumbs: { 11450 swiper: null, 11451 slideThumbActiveClass: 'swiper-slide-thumb-active', 11452 thumbsContainerClass: 'swiper-container-thumbs', 11453 }, 11454 }, 11455 create: function create() { 11456 var swiper = this; 11457 Utils.extend(swiper, { 11458 thumbs: { 11459 swiper: null, 11460 init: Thumbs.init.bind(swiper), 11461 update: Thumbs.update.bind(swiper), 11462 onThumbClick: Thumbs.onThumbClick.bind(swiper), 11463 }, 11464 }); 11465 }, 11466 on: { 11467 beforeInit: function beforeInit() { 11468 var swiper = this; 11469 var ref = swiper.params; 11470 var thumbs = ref.thumbs; 11471 if (!thumbs || !thumbs.swiper) { return; } 11472 swiper.thumbs.init(); 11473 swiper.thumbs.update(true); 11474 }, 11475 slideChange: function slideChange() { 11476 var swiper = this; 11477 if (!swiper.thumbs.swiper) { return; } 11478 swiper.thumbs.update(); 11479 }, 11480 update: function update() { 11481 var swiper = this; 11482 if (!swiper.thumbs.swiper) { return; } 11483 swiper.thumbs.update(); 11484 }, 11485 resize: function resize() { 11486 var swiper = this; 11487 if (!swiper.thumbs.swiper) { return; } 11488 swiper.thumbs.update(); 11489 }, 11490 observerUpdate: function observerUpdate() { 11491 var swiper = this; 11492 if (!swiper.thumbs.swiper) { return; } 11493 swiper.thumbs.update(); 11494 }, 11495 setTransition: function setTransition(duration) { 11496 var swiper = this; 11497 var thumbsSwiper = swiper.thumbs.swiper; 11498 if (!thumbsSwiper) { return; } 11499 thumbsSwiper.setTransition(duration); 11500 }, 11501 beforeDestroy: function beforeDestroy() { 11502 var swiper = this; 11503 var thumbsSwiper = swiper.thumbs.swiper; 11504 if (!thumbsSwiper) { return; } 11505 if (swiper.thumbs.swiperCreated && thumbsSwiper) { 11506 thumbsSwiper.destroy(); 11507 } 11508 }, 11509 }, 11510 }; 11511 11512 // Swiper Class 11513 11514 var components = [ 11515 Device$1, 11516 Support$1, 11517 Browser$1, 11518 Resize, 11519 Observer$1, 11520 Virtual$1, 11521 Keyboard$1, 11522 Mousewheel$1, 11523 Navigation$1, 11524 Pagination$1, 11525 Scrollbar$1, 11526 Parallax$1, 11527 Zoom$1, 11528 Lazy$1, 11529 Controller$1, 11530 A11y, 11531 History$1, 11532 HashNavigation$1, 11533 Autoplay$1, 11534 EffectFade, 11535 EffectCube, 11536 EffectFlip, 11537 EffectCoverflow, 11538 Thumbs$1 11539 ]; 11540 11541 if (typeof Swiper.use === 'undefined') { 11542 Swiper.use = Swiper.Class.use; 11543 Swiper.installModule = Swiper.Class.installModule; 11544 } 11545 11546 Swiper.use(components); 11547 11548 return Swiper; 11549 11550})); 11551 11552/* End */ 11553; 11554; /* Start:"a:4:{s:4:"full";s:53:"/local/templates/ntk_new/js/scripts.js?17896238178648";s:6:"source";s:38:"/local/templates/ntk_new/js/scripts.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 11555var disableScroll = false; 11556var scrollPos = 0; 11557 11558function stopScroll() { 11559 if (window.innerWidth < 1023) { 11560 disableScroll = true; 11561 scrollPos = $(window).scrollTop(); 11562 } 11563} 11564 11565function enableScroll() { 11566 disableScroll = false; 11567} 11568 11569$(document).ready(function () { 11570 $(window).scroll(function() { 11571 if ($(this).scrollTop() >= 50) { 11572 $(".header-top").removeClass("h-12"); 11573 $(".header-top").addClass("h-0"); 11574 $("header").addClass("shadow-md"); 11575 } 11576 else{ 11577 $(".header-top").addClass("h-12"); 11578 $(".header-top").removeClass("h-0"); 11579 $("header").removeClass("shadow-md"); 11580 } 11581 }); 11582 11583 11584 $(window).on('scroll', function () { 11585 if (disableScroll) { 11586 $(window).scrollTop(scrollPos); 11587 } 11588 }); 11589 11590 $(window).on('touchmove', function () { 11591 $(window).trigger('scroll'); 11592 }); 11593 11594 $(window).on('resize', function () { 11595 if (window.innerWidth > 1023) { 11596 enableScroll(); 11597 } 11598 }); 11599 11600 $(".header-mobile .menu-btn").click(function(){ 11601 if($(this).hasClass("active")){ 11602 $("header").hide(); 11603 enableScroll(); 11604 $(this).removeClass("active"); 11605 } 11606 else{ 11607 $("header").show(); 11608 stopScroll(); 11609 $(this).addClass("active"); 11610 } 11611 }); 11612 11613 $("input[type=tel]").mask("+7 (999) 999 99 99"); 11614 11615 $("button.callback").click(function(e){
11616 e.preventDefault(); 11617 $.fancybox.open({ 11618 src: '#callback_form', 11619 type: 'inline', 11620 touch: false, 11621 autoFocus: false 11622 }); 11623 }); 11624 11625 $("a#zayavka_mob").click(function(e){ 11626 e.preventDefault(); 11627 $(".header-mobile .menu-btn").click(); 11628 $.fancybox.open({ 11629 src: '#zakaz_form', 11630 type: 'inline', 11631 touch: false, 11632 autoFocus: false 11633 }); 11634 }); 11635 11636 $("header a.mobilemenu").click(function(e){ 11637 e.preventDefault(); 11638 $(this).toggleClass("active"); 11639 $("ul.top-menu").toggle(); 11640 }); 11641 11642 $("button.auth-button").click(function(e){ 11643 e.preventDefault(); 11644 $.fancybox.open({ 11645 src: '#authForm', 11646 type: 'inline', 11647 touch: false, 11648 autoFocus: false, 11649 afterClose : function() { 11650 $("#authForm input[name=email]").show(); 11651 $("#authForm input[name=password]").val(''); 11652 $("#authForm .desc").hide(); 11653 } 11654 }); 11655 }); 11656 11657 $("button#register").click(function(e){ 11658 e.preventDefault(); 11659 $.fancybox.close(); 11660 $.fancybox.open({ 11661 src: '#regForm', 11662 type: 'inline', 11663 touch: false, 11664 autoFocus: false, 11665 afterOpen: function(){ 11666 $("#regForm form h3").text("РегиÑÑÑаÑиÑ"); 11667 }, 11668 afterClose : function() { 11669 $("#regForm input[name=email]").show(); 11670 $("#regForm input[name=code]").hide(); 11671 $("#regForm input[name=code]").val(''); 11672 $("#regForm .desc").hide(); 11673 $("#regForm .desc").html("ÐведиÑе код из пиÑÑма"); 11674 } 11675 }); 11676 }); 11677 11678 $("button#rememberPassword").click(function(e){ 11679 e.preventDefault(); 11680 $.fancybox.close(); 11681 $.fancybox.open({ 11682 src: '#passwordForm', 11683 type: 'inline', 11684 touch: false, 11685 autoFocus: false, 11686 afterClose : function() { 11687 $("#passwordForm input[name=email]").show(); 11688 $("#passwordForm input[name=code]").hide(); 11689 $("#passwordForm input[name=code]").val(''); 11690 $("#passwordForm .desc").hide(); 11691 } 11692 }); 11693 }); 11694 11695 $("#regForm form").submit(function(e) { 11696 e.preventDefault(); 11697 $("#regForm .desc").addClass('hidden'); 11698 $("#regForm .error").addClass('hidden'); 11699 if($("#regForm form input[name=password]").val().length < 6){ 11700 $("#regForm .error").removeClass('hidden'); 11701 $("#regForm .error").html('ÐаÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð½Ðµ менее 6 Ñимволов длиной.'); 11702 return false; 11703 } 11704 var form = $(this); 11705 $.ajax({ 11706 type: "POST", 11707 url: '/ajax/register.php', 11708 data: form.serialize(), 11709 success: function(data) 11710 { 11711 if(data.code){ 11712 $("#regForm input[name=email]").hide(); 11713 $("#regForm input[name=password]").hide(); 11714 $("#regForm input[name=code]").show(); 11715 $("#regForm .desc").html("ÐведиÑе код из пиÑÑма"); 11716 $("#regForm .desc").removeClass('hidden'); 11717 } 11718 else{ 11719 if(data.success){ 11720 window.location.href = "/lk/"; 11721 } 11722 else{ 11723 $("#regForm .error").removeClass('hidden'); 11724 $("#regForm .error").html('ÐевеÑнÑй код'); 11725 } 11726 } 11727 } 11728 }); 11729 }); 11730 11731 $("#passwordForm form").submit(function(e) { 11732 e.preventDefault(); 11733 $("#passwordForm .desc").addClass('hidden'); 11734 $("#passwordForm .error").addClass('hidden'); 11735 var form = $(this); 11736 $.ajax({ 11737 type: "POST", 11738 url: '/ajax/auth.php', 11739 data: form.serialize(), 11740 success: function(data) 11741 { 11742 if(data.code){ 11743 $("#passwordForm input[name=email]").hide(); 11744 $("#passwordForm input[name=code]").show(); 11745 $("#passwordForm .desc").html("ÐведиÑе код из пиÑÑма"); 11746 $("#passwordForm .desc").removeClass('hidden'); 11747 } 11748 else{ 11749 if(data.success){ 11750 window.location.href = "/lk/"; 11751 } 11752 else{ 11753 $("#passwordForm .error").removeClass('hidden'); 11754 $("#passwordForm .error").html('ÐевеÑнÑй код'); 11755 } 11756 } 11757 } 11758 }); 11759 }); 11760 11761 $("#authForm form").submit(function(e) { 11762 e.preventDefault(); 11763 $("#authForm .error").addClass('hidden'); 11764 var form = $(this); 11765 $.ajax({ 11766 type: "POST", 11767 url: '/ajax/auth.php', 11768 data: form.serialize(), 11769 success: function(data) 11770 { 11771 if(data.success){ 11772 window.location.href = "/lk/"; 11773 } 11774 else{ 11775 $("#authForm .error").removeClass('hidden'); 11776 $("#authForm .error").html("ÐевеÑнÑй логин/паÑолÑ"); 11777 } 11778 } 11779 }); 11780 }); 11781 11782 let startTime = new Date(); 11783 $("form").submit(function(){ 11784 let timeSpent = (new Date() - startTime) / 1000; 11785 if (timeSpent < 3) { 11786 return false; 11787 } 11788 //if($("#zakaz_form .form-questions input[name=pochta]").val().length > 0){ 11789 // return false; 11790 //} 11791 }); 11792 11793 if (!Cookies.get('agreement')) { 11794 showMessage(); 11795 } else { 11796 initCounter(); 11797 } 11798 // ФÑнкÑиÑ, коÑоÑÐ°Ñ Ð¿ÑÑÑÐµÑ Ð¿ÑедÑпÑеждение 11799 function hideMessage () { 11800 $('.cookie-notification').hide(); 11801 } 11802 // ФÑнкÑиÑ, коÑоÑÐ°Ñ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ Ð¿ÑедÑпÑеждение 11803 function showMessage () { 11804 $('.cookie-notification').removeClass("hidden"); 11805 } 11806 function saveAnswer () { 11807 // ÐÑÑÑем пÑедÑпÑеждение 11808 hideMessage(); 11809 11810 // СÑавим cookies 11811 Cookies.set('agreement', '1'); 11812 } 11813 function initCounter () { 11814 ym(98519260, "init", { 11815 clickmap:true, 11816 trackLinks:true,
11817 accurateTrackBounce:true, 11818 webvisor:true 11819 }); 11820 saveAnswer(); 11821 } 11822 $("#agreementyes").click(function(){ 11823 initCounter(); 11824 }) 11825 11826 $("button.city-changer-button").click(function(e){ 11827 e.stopPropagation(); 11828 if($(".city-changer").hasClass('invisible')){ 11829 $(".city-changer").removeClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11830 } 11831 else{ 11832 $(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11833 } 11834 11835 }); 11836 11837 $("button.lang-changer-button").click(function(e){ 11838 e.stopPropagation(); 11839 if($(".lang-changer").hasClass('invisible')){ 11840 $(".lang-changer").removeClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11841 } 11842 else{ 11843 $(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11844 } 11845 11846 }); 11847 11848 $(document).on('click', function(e) { 11849 if (!$(e.target).closest(".city-changer").length) { 11850 $(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11851 } 11852 if (!$(e.target).closest(".lang-changer").length) { 11853 $(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11854 } 11855 }); 11856 11857 $(".city-changer button").click(function(){ 11858 $("button.city-changer-button span span").text($(this).text()); 11859 $(".city-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11860 $(".city-changer button").removeClass("text-brand-red font-bold"); 11861 $(".city-changer button").addClass("text-gray-600"); 11862 $(this).addClass("text-brand-red font-bold"); 11863 $(this).removeClass("text-gray-600"); 11864 }); 11865 11866 $(".lang-changer button").click(function(){ 11867 $("button.lang-changer-button span").text($(this).text()); 11868 $(".lang-changer").addClass("opacity-0 invisible translate-y-2 pointer-events-none"); 11869 $(".lang-changer button").removeClass("text-brand-red"); 11870 $(".lang-changer button").addClass("text-gray-600"); 11871 $(this).addClass("text-brand-red"); 11872 $(this).removeClass("text-gray-600"); 11873 }); 11874 11875}); 11876/* End */ 11877;; /* /local/templates/ntk_new/js/jquery-3.7.1.min.js?174016440087533*/ 11878; /* /local/templates/ntk_new/lib/jquery.fancybox.min.js?174016440068265*/ 11879; /* /local/templates/ntk_new/js/jquery.maskedinput.js?174016440011290*/ 11880; /* /local/templates/ntk_new/lib/jquery.suggestions.min.js?171977400059051*/ 11881; /* /local/templates/ntk_new/lib/jquery.datetimepicker.js?1742756400112261*/ 11882; /* /local/templates/ntk_new/lib/swiper.js?1719817022288320*/ 11883; /* /local/templates/ntk_new/js/scripts.js?17896238178648*/
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.