\",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled \"+\"ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if(\"string\"==typeof t)if(o={},s=t.split(\".\"),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,\"disabled\"===e&&(this.widget().toggleClass(this.widgetFullName+\"-disabled\",!!t),t&&(this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;\"boolean\"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass(\"ui-state-disabled\")?(\"string\"==typeof o?a[o]:o).apply(a,arguments):void 0}\"string\"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\\w:-]*)\\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return(\"string\"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass(\"ui-state-hover\")},mouseleave:function(t){e(t.currentTarget).removeClass(\"ui-state-hover\")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass(\"ui-state-focus\")},focusout:function(t){e(t.currentTarget).removeClass(\"ui-state-focus\")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:\"fadeIn\",hide:\"fadeOut\"},function(t,i){e.Widget.prototype[\"_\"+t]=function(s,n,a){\"string\"==typeof n&&(n={effect:n});var o,r=n?n===!0||\"number\"==typeof n?i:n.effect||i:t;n=n||{},\"number\"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget(\"ui.mouse\",{version:\"1.11.2\",options:{cancel:\"input,textarea,button,select,option\",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind(\"mousedown.\"+this.widgetName,function(e){return t._mouseDown(e)}).bind(\"click.\"+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+\".preventClickEvent\")?(e.removeData(i.target,t.widgetName+\".preventClickEvent\"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n=\"string\"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+\".preventClickEvent\")&&e.removeData(t.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\\+\\-]\\d+(\\.[\\d]+)?%?/,c=/^\\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e(\"
\"),a=s.children()[0];return e(\"body\").append(s),t=a.offsetWidth,s.css(\"overflow\",\"scroll\"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-x\"),s=t.isWindow||t.isDocument?\"\":t.element.css(\"overflow-y\"),n=\"scroll\"===i||\"auto\"===i&&t.width
i?\"left\":t>0?\"right\":\"center\",vertical:0>a?\"top\":s>0?\"bottom\":\"middle\"};d>m&&m>r(t+i)&&(h.horizontal=\"center\"),c>g&&g>r(s+a)&&(h.vertical=\"middle\"),h.important=o(r(t),r(i))>o(r(s),r(a))?\"horizontal\":\"vertical\",n.using.call(this,e,h)}),u.offset(e.extend(N,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c=\"left\"===t.my[0]?-t.elemWidth:\"right\"===t.my[0]?t.elemWidth:0,p=\"left\"===t.at[0]?t.targetWidth:\"right\"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c=\"top\"===t.my[1],p=c?-t.elemHeight:\"bottom\"===t.my[1]?t.elemHeight:0,f=\"top\"===t.at[1]?t.targetHeight:\"bottom\"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName(\"body\")[0],h=document.createElement(\"div\");t=document.createElement(r?\"div\":\"body\"),s={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},r&&e.extend(s,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText=\"position: absolute; left: 10.7432222px;\",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML=\"\",i.removeChild(t)}()}(),e.ui.position,e.widget(\"ui.menu\",{version:\"1.11.2\",defaultElement:\"\",delay:300,options:{icons:{submenu:\"ui-icon-carat-1-e\"},items:\"> *\",menus:\"ul\",position:{my:\"left-1 top\",at:\"right top\"},role:\"menu\",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass(\"ui-menu ui-widget ui-widget-content\").toggleClass(\"ui-menu-icons\",!!this.element.find(\".ui-icon\").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass(\"ui-state-disabled\").attr(\"aria-disabled\",\"true\"),this._on({\"mousedown .ui-menu-item\":function(e){e.preventDefault()},\"click .ui-menu-item\":function(t){var i=e(t.target);!this.mouseHandled&&i.not(\".ui-state-disabled\").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(\".ui-menu\").length?this.expand(t):!this.element.is(\":focus\")&&e(this.document[0].activeElement).closest(\".ui-menu\").length&&(this.element.trigger(\"focus\",[!0]),this.active&&1===this.active.parents(\".ui-menu\").length&&clearTimeout(this.timer)))},\"mouseenter .ui-menu-item\":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(\".ui-state-active\").removeClass(\"ui-state-active\"),this.focus(t,i)}},mouseleave:\"collapseAll\",\"mouseleave .ui-menu\":\"collapseAll\",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:\"_keydown\"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeClass(\"ui-menu ui-widget ui-widget-content ui-menu-icons ui-front\").removeAttr(\"role\").removeAttr(\"tabIndex\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-expanded\").removeAttr(\"aria-hidden\").removeAttr(\"aria-disabled\").removeUniqueId().show(),this.element.find(\".ui-menu-item\").removeClass(\"ui-menu-item\").removeAttr(\"role\").removeAttr(\"aria-disabled\").removeUniqueId().removeClass(\"ui-state-hover\").removeAttr(\"tabIndex\").removeAttr(\"role\").removeAttr(\"aria-haspopup\").children().each(function(){var t=e(this);t.data(\"ui-menu-submenu-carat\")&&t.remove()}),this.element.find(\".ui-menu-divider\").removeClass(\"ui-menu-divider ui-widget-content\")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move(\"first\",\"first\",t);break;case e.ui.keyCode.END:this._move(\"last\",\"last\",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(\".ui-state-disabled\")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||\"\",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(\".ui-menu-item\"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(\".ui-state-disabled\")||(this.active.is(\"[aria-haspopup='true']\")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass(\"ui-menu-icons\",!!this.element.find(\".ui-icon\").length),a.filter(\":not(.ui-menu)\").addClass(\"ui-menu ui-widget ui-widget-content ui-front\").hide().attr({role:this.options.role,\"aria-hidden\":\"true\",\"aria-expanded\":\"false\"}).each(function(){var t=e(this),i=t.parent(),s=e(\"\").addClass(\"ui-menu-icon ui-icon \"+n).data(\"ui-menu-submenu-carat\",!0);i.attr(\"aria-haspopup\",\"true\").prepend(s),t.attr(\"aria-labelledby\",i.attr(\"id\"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(\".ui-menu-item\").each(function(){var t=e(this);s._isDivider(t)&&t.addClass(\"ui-widget-content ui-menu-divider\")}),i.not(\".ui-menu-item, .ui-menu-divider\").addClass(\"ui-menu-item\").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(\".ui-state-disabled\").attr(\"aria-disabled\",\"true\"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:\"menuitem\",listbox:\"option\"}[this.options.role]},_setOption:function(e,t){\"icons\"===e&&this.element.find(\".ui-menu-icon\").removeClass(this.options.icons.submenu).addClass(t.submenu),\"disabled\"===e&&this.element.toggleClass(\"ui-state-disabled\",!!t).attr(\"aria-disabled\",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&\"focus\"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass(\"ui-state-focus\").removeClass(\"ui-state-active\"),this.options.role&&this.element.attr(\"aria-activedescendant\",s.attr(\"id\")),this.active.parent().closest(\".ui-menu-item\").addClass(\"ui-state-active\"),e&&\"keydown\"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(\".ui-menu\"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger(\"focus\",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],\"borderTopWidth\"))||0,s=parseFloat(e.css(this.activeMenu[0],\"paddingTop\"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass(\"ui-state-focus\"),this.active=null,this._trigger(\"blur\",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),\"true\"===e.attr(\"aria-hidden\")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(\".ui-menu\").not(t.parents(\".ui-menu\")).hide().attr(\"aria-hidden\",\"true\"),t.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\",\"true\").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(\".ui-menu\"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(\".ui-menu\").hide().attr(\"aria-hidden\",\"true\").attr(\"aria-expanded\",\"false\").end().find(\".ui-state-active\").not(\".ui-state-focus\").removeClass(\"ui-state-active\")},_closeOnDocumentClick:function(t){return!e(t.target).closest(\".ui-menu\").length},_isDivider:function(e){return!/[^\\-\\u2014\\u2013\\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(\".ui-menu-item\",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(\".ui-menu \").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move(\"next\",\"first\",e)},previous:function(e){this._move(\"prev\",\"last\",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(\".ui-menu-item\").length},isLastItem:function(){return this.active&&!this.active.nextAll(\".ui-menu-item\").length},_move:function(e,t,i){var s;this.active&&(s=\"first\"===e||\"last\"===e?this.active[\"first\"===e?\"prevAll\":\"nextAll\"](\".ui-menu-item\").eq(-1):this.active[e+\"All\"](\".ui-menu-item\").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(\".ui-menu-item\").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?\"last\":\"first\"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(\".ui-menu-item\").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()\",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a=\"textarea\"===n,o=\"input\"===n;this.isMultiLine=a?!0:o?!1:this.element.prop(\"isContentEditable\"),this.valueMethod=this.element[a||o?\"val\":\"text\"],this.isNewMenu=!0,this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\",\"off\"),this._on(this.element,{keydown:function(n){if(this.element.prop(\"readOnly\"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move(\"previousPage\",n);break;case a.PAGE_DOWN:t=!0,this._move(\"nextPage\",n);break;case a.UP:t=!0,this._keyEvent(\"previous\",n);break;case a.DOWN:t=!0,this._keyEvent(\"next\",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(\":visible\")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(\":visible\"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move(\"previousPage\",s);break;case n.PAGE_DOWN:this._move(\"nextPage\",s);break;case n.UP:this._keyEvent(\"previous\",s);break;case n.DOWN:this._keyEvent(\"next\",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e(\"\").addClass(\"ui-autocomplete ui-front\").appendTo(this._appendTo()).menu({role:null}).hide().menu(\"instance\"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(\".ui-menu-item\").length||this._delay(function(){var t=this;this.document.one(\"mousedown\",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one(\"mousemove\",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data(\"ui-autocomplete-item\"),!1!==this._trigger(\"focus\",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr(\"aria-label\")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e(\"\").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data(\"ui-autocomplete-item\"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger(\"select\",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e(\"
\",{role:\"status\",\"aria-live\":\"assertive\",\"aria-relevant\":\"additions\"}).addClass(\"ui-helper-hidden-accessible\").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")\r\n}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),\"source\"===e&&this._initSource(),\"appendTo\"===e&&this.menu.element.appendTo(this._appendTo()),\"disabled\"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(\".ui-front\")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):\"string\"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:\"json\",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(\":visible\"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length\").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(\":visible\")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(\":visible\"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),\"i\");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget(\"ui.autocomplete\",e.ui.autocomplete,{options:{messages:{noResults:\"No search results.\",results:function(e){return e+(e>1?\" results are\":\" result is\")+\" available, use up and down arrow keys to navigate.\"}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e(\"\").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete});","/*!\r\n * Bootstrap v4.1.3 (https://getbootstrap.com/)\r\n * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n */\r\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"jquery\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"jquery\"],t):t(e.bootstrap={},e.jQuery)}(this,function(e,t){\"use strict\";function i(e,t){for(var n=0;n
this._items.length-1||e<0))if(this._isSliding)k(this._element).one(q.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),u=0l[e]&&!i.escapeWithReference&&(n=Math.min(u[t],l[e]-(\"right\"===e?u.width:u.height))),Ve({},t,n)}};return c.forEach(function(e){var t=-1!==[\"left\",\"top\"].indexOf(e)?\"primary\":\"secondary\";u=ze({},u,f[t](e))}),e.offsets.popper=u,e},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,r=e.placement.split(\"-\")[0],o=Math.floor,s=-1!==[\"top\",\"bottom\"].indexOf(r),a=s?\"right\":\"bottom\",l=s?\"left\":\"top\",c=s?\"width\":\"height\";return n[a]o(i[a])&&(e.offsets.popper[l]=o(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!pt(e.instance.modifiers,\"arrow\",\"keepTogether\"))return e;var i=t.element;if(\"string\"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),e;var r=e.placement.split(\"-\")[0],o=e.offsets,s=o.popper,a=o.reference,l=-1!==[\"left\",\"right\"].indexOf(r),c=l?\"height\":\"width\",u=l?\"Top\":\"Left\",f=u.toLowerCase(),h=l?\"left\":\"top\",d=l?\"bottom\":\"right\",p=nt(i)[c];a[d]-ps[d]&&(e.offsets.popper[f]+=a[f]+p-s[d]),e.offsets.popper=Ge(e.offsets.popper);var m=a[f]+a[c]/2-p/2,g=Pe(e.instance.popper),_=parseFloat(g[\"margin\"+u],10),v=parseFloat(g[\"border\"+u+\"Width\"],10),y=m-e.offsets.popper[f]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),e.arrowElement=i,e.offsets.arrow=(Ve(n={},f,Math.round(y)),Ve(n,h,\"\"),n),e},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(p,m){if(at(p.instance.modifiers,\"inner\"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=$e(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split(\"-\")[0],v=it(_),y=p.placement.split(\"-\")[1]||\"\",E=[];switch(m.behavior){case vt:E=[_,v];break;case yt:E=_t(_);break;case Et:E=_t(_,!0);break;default:E=m.behavior}return E.forEach(function(e,t){if(_!==e||E.length===t+1)return p;_=p.placement.split(\"-\")[0],v=it(_);var n,i=p.offsets.popper,r=p.offsets.reference,o=Math.floor,s=\"left\"===_&&o(i.right)>o(r.left)||\"right\"===_&&o(i.left)o(r.top)||\"bottom\"===_&&o(i.top)o(g.right),c=o(i.top)o(g.bottom),f=\"left\"===_&&a||\"right\"===_&&l||\"top\"===_&&c||\"bottom\"===_&&u,h=-1!==[\"top\",\"bottom\"].indexOf(_),d=!!m.flipVariations&&(h&&\"start\"===y&&a||h&&\"end\"===y&&l||!h&&\"start\"===y&&c||!h&&\"end\"===y&&u);(s||f||d)&&(p.flipped=!0,(s||f)&&(_=E[t+1]),d&&(y=\"end\"===(n=y)?\"start\":\"start\"===n?\"end\":n),p.placement=_+(y?\"-\"+y:\"\"),p.offsets.popper=ze({},p.offsets.popper,rt(p.instance.popper,p.offsets.reference,p.placement)),p=st(p.instance.modifiers,p,\"flip\"))}),p},behavior:\"flip\",padding:5,boundariesElement:\"viewport\"},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split(\"-\")[0],i=e.offsets,r=i.popper,o=i.reference,s=-1!==[\"left\",\"right\"].indexOf(n),a=-1===[\"top\",\"left\"].indexOf(n);return r[s?\"left\":\"top\"]=o[n]-(a?r[s?\"width\":\"height\"]:0),e.placement=it(t),e.offsets.popper=Ge(r),e}},hide:{order:800,enabled:!0,fn:function(e){if(!pt(e.instance.modifiers,\"hide\",\"preventOverflow\"))return e;var t=e.offsets.reference,n=ot(e.instance.modifiers,function(e){return\"preventOverflow\"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+\"px\"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+\"px\")},e._resetAdjustments=function(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right
',trigger:\"hover focus\",title:\"\",delay:0,html:!(An={AUTO:\"auto\",TOP:\"top\",RIGHT:\"right\",BOTTOM:\"bottom\",LEFT:\"left\"}),selector:!(Dn={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(number|string)\",container:\"(string|element|boolean)\",fallbackPlacement:\"(string|array)\",boundary:\"(string|element)\"}),placement:\"top\",offset:0,container:!1,fallbackPlacement:\"flip\",boundary:\"scrollParent\"},Nn=\"out\",kn={HIDE:\"hide\"+wn,HIDDEN:\"hidden\"+wn,SHOW:(On=\"show\")+wn,SHOWN:\"shown\"+wn,INSERTED:\"inserted\"+wn,CLICK:\"click\"+wn,FOCUSIN:\"focusin\"+wn,FOCUSOUT:\"focusout\"+wn,MOUSEENTER:\"mouseenter\"+wn,MOUSELEAVE:\"mouseleave\"+wn},xn=\"fade\",Pn=\"show\",Ln=\".tooltip-inner\",jn=\".arrow\",Hn=\"hover\",Mn=\"focus\",Fn=\"click\",Wn=\"manual\",Rn=function(){function i(e,t){if(\"undefined\"==typeof Ct)throw new TypeError(\"Bootstrap tooltips require Popper.js (https://popper.js.org)\");this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=yn(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),yn(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(yn(this.getTipElement()).hasClass(Pn))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),yn.removeData(this.element,this.constructor.DATA_KEY),yn(this.element).off(this.constructor.EVENT_KEY),yn(this.element).closest(\".modal\").off(\"hide.bs.modal\"),this.tip&&yn(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if(\"none\"===yn(this.element).css(\"display\"))throw new Error(\"Please use show on visible elements\");var e=yn.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){yn(this.element).trigger(e);var n=yn.contains(this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=we.getUID(this.constructor.NAME);i.setAttribute(\"id\",r),this.element.setAttribute(\"aria-describedby\",r),this.setContent(),this.config.animation&&yn(i).addClass(xn);var o=\"function\"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,s=this._getAttachment(o);this.addAttachmentClass(s);var a=!1===this.config.container?document.body:yn(document).find(this.config.container);yn(i).data(this.constructor.DATA_KEY,this),yn.contains(this.element.ownerDocument.documentElement,this.tip)||yn(i).appendTo(a),yn(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Ct(this.element,i,{placement:s,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:jn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){t._handlePopperPlacementChange(e)}}),yn(i).addClass(Pn),\"ontouchstart\"in document.documentElement&&yn(document.body).children().on(\"mouseover\",null,yn.noop);var l=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,yn(t.element).trigger(t.constructor.Event.SHOWN),e===Nn&&t._leave(null,t)};if(yn(this.tip).hasClass(xn)){var c=we.getTransitionDurationFromElement(this.tip);yn(this.tip).one(we.TRANSITION_END,l).emulateTransitionEnd(c)}else l()}},e.hide=function(e){var t=this,n=this.getTipElement(),i=yn.Event(this.constructor.Event.HIDE),r=function(){t._hoverState!==On&&n.parentNode&&n.parentNode.removeChild(n),t._cleanTipClass(),t.element.removeAttribute(\"aria-describedby\"),yn(t.element).trigger(t.constructor.Event.HIDDEN),null!==t._popper&&t._popper.destroy(),e&&e()};if(yn(this.element).trigger(i),!i.isDefaultPrevented()){if(yn(n).removeClass(Pn),\"ontouchstart\"in document.documentElement&&yn(document.body).children().off(\"mouseover\",null,yn.noop),this._activeTrigger[Fn]=!1,this._activeTrigger[Mn]=!1,this._activeTrigger[Hn]=!1,yn(this.tip).hasClass(xn)){var o=we.getTransitionDurationFromElement(n);yn(n).one(we.TRANSITION_END,r).emulateTransitionEnd(o)}else r();this._hoverState=\"\"}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){yn(this.getTipElement()).addClass(Tn+\"-\"+e)},e.getTipElement=function(){return this.tip=this.tip||yn(this.config.template)[0],this.tip},e.setContent=function(){var e=this.getTipElement();this.setElementContent(yn(e.querySelectorAll(Ln)),this.getTitle()),yn(e).removeClass(xn+\" \"+Pn)},e.setElementContent=function(e,t){var n=this.config.html;\"object\"==typeof t&&(t.nodeType||t.jquery)?n?yn(t).parent().is(e)||e.empty().append(t):e.text(yn(t).text()):e[n?\"html\":\"text\"](t)},e.getTitle=function(){var e=this.element.getAttribute(\"data-original-title\");return e||(e=\"function\"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},e._getAttachment=function(e){return An[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(\" \").forEach(function(e){if(\"click\"===e)yn(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if(e!==Wn){var t=e===Hn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Hn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;yn(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}yn(i.element).closest(\".modal\").on(\"hide.bs.modal\",function(){return i.hide()})}),this.config.selector?this.config=l({},this.config,{trigger:\"manual\",selector:\"\"}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute(\"data-original-title\");(this.element.getAttribute(\"title\")||\"string\"!==e)&&(this.element.setAttribute(\"data-original-title\",this.element.getAttribute(\"title\")||\"\"),this.element.setAttribute(\"title\",\"\"))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||yn(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),yn(e.currentTarget).data(n,t)),e&&(t._activeTrigger[\"focusin\"===e.type?Mn:Hn]=!0),yn(t.getTipElement()).hasClass(Pn)||t._hoverState===On?t._hoverState=On:(clearTimeout(t._timeout),t._hoverState=On,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===On&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||yn(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),yn(e.currentTarget).data(n,t)),e&&(t._activeTrigger[\"focusout\"===e.type?Mn:Hn]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Nn,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){t._hoverState===Nn&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){return\"number\"==typeof(e=l({},this.constructor.Default,yn(this.element).data(),\"object\"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),\"number\"==typeof e.title&&(e.title=e.title.toString()),\"number\"==typeof e.content&&(e.content=e.content.toString()),we.typeCheckConfig(En,e,this.constructor.DefaultType),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=yn(this.getTipElement()),t=e.attr(\"class\").match(Sn);null!==t&&t.length&&e.removeClass(t.join(\"\"))},e._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},e._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute(\"x-placement\")&&(yn(e).removeClass(xn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},i._jQueryInterface=function(n){return this.each(function(){var e=yn(this).data(bn),t=\"object\"==typeof n&&n;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),yn(this).data(bn,e)),\"string\"==typeof n)){if(\"undefined\"==typeof e[n])throw new TypeError('No method named \"'+n+'\"');e[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}},{key:\"Default\",get:function(){return In}},{key:\"NAME\",get:function(){return En}},{key:\"DATA_KEY\",get:function(){return bn}},{key:\"Event\",get:function(){return kn}},{key:\"EVENT_KEY\",get:function(){return wn}},{key:\"DefaultType\",get:function(){return Dn}}]),i}(),yn.fn[En]=Rn._jQueryInterface,yn.fn[En].Constructor=Rn,yn.fn[En].noConflict=function(){return yn.fn[En]=Cn,Rn._jQueryInterface},Rn),Qi=(Bn=\"popover\",Kn=\".\"+(qn=\"bs.popover\"),Qn=(Un=t).fn[Bn],Yn=\"bs-popover\",Vn=new RegExp(\"(^|\\\\s)\"+Yn+\"\\\\S+\",\"g\"),zn=l({},Ki.Default,{placement:\"right\",trigger:\"click\",content:\"\",template:''}),Gn=l({},Ki.DefaultType,{content:\"(string|element|function)\"}),Jn=\"fade\",Xn=\".popover-header\",$n=\".popover-body\",ei={HIDE:\"hide\"+Kn,HIDDEN:\"hidden\"+Kn,SHOW:(Zn=\"show\")+Kn,SHOWN:\"shown\"+Kn,INSERTED:\"inserted\"+Kn,CLICK:\"click\"+Kn,FOCUSIN:\"focusin\"+Kn,FOCUSOUT:\"focusout\"+Kn,MOUSEENTER:\"mouseenter\"+Kn,MOUSELEAVE:\"mouseleave\"+Kn},ti=function(e){var t,n;function i(){return e.apply(this,arguments)||this}n=e,(t=i).prototype=Object.create(n.prototype),(t.prototype.constructor=t).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(e){Un(this.getTipElement()).addClass(Yn+\"-\"+e)},r.getTipElement=function(){return this.tip=this.tip||Un(this.config.template)[0],this.tip},r.setContent=function(){var e=Un(this.getTipElement());this.setElementContent(e.find(Xn),this.getTitle());var t=this._getContent();\"function\"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find($n),t),e.removeClass(Jn+\" \"+Zn)},r._getContent=function(){return this.element.getAttribute(\"data-content\")||this.config.content},r._cleanTipClass=function(){var e=Un(this.getTipElement()),t=e.attr(\"class\").match(Vn);null!==t&&0=this._offsets[r]&&(\"undefined\"==typeof this._offsets[r+1]||e li > .active\",Fi='[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',Wi=\".dropdown-toggle\",Ri=\"> .dropdown-menu .active\",Ui=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&Ti(this._element).hasClass(Ni)||Ti(this._element).hasClass(ki))){var e,i,t=Ti(this._element).closest(ji)[0],r=we.getSelectorFromElement(this._element);if(t){var o=\"UL\"===t.nodeName?Mi:Hi;i=(i=Ti.makeArray(Ti(t).find(o)))[i.length-1]}var s=Ti.Event(Ii.HIDE,{relatedTarget:this._element}),a=Ti.Event(Ii.SHOW,{relatedTarget:i});if(i&&Ti(i).trigger(s),Ti(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,t);var l=function(){var e=Ti.Event(Ii.HIDDEN,{relatedTarget:n._element}),t=Ti.Event(Ii.SHOWN,{relatedTarget:i});Ti(i).trigger(e),Ti(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){Ti.removeData(this._element,Si),this._element=null},e._activate=function(e,t,n){var i=this,r=(\"UL\"===t.nodeName?Ti(t).find(Mi):Ti(t).children(Hi))[0],o=n&&r&&Ti(r).hasClass(xi),s=function(){return i._transitionComplete(e,r,n)};if(r&&o){var a=we.getTransitionDurationFromElement(r);Ti(r).one(we.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},e._transitionComplete=function(e,t,n){if(t){Ti(t).removeClass(Pi+\" \"+Ni);var i=Ti(t.parentNode).find(Ri)[0];i&&Ti(i).removeClass(Ni),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!1)}if(Ti(e).addClass(Ni),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!0),we.reflow(e),Ti(e).addClass(Pi),e.parentNode&&Ti(e.parentNode).hasClass(Oi)){var r=Ti(e).closest(Li)[0];if(r){var o=[].slice.call(r.querySelectorAll(Wi));Ti(o).addClass(Ni)}e.setAttribute(\"aria-expanded\",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=Ti(this),t=e.data(Si);if(t||(t=new i(this),e.data(Si,t)),\"string\"==typeof n){if(\"undefined\"==typeof t[n])throw new TypeError('No method named \"'+n+'\"');t[n]()}})},s(i,null,[{key:\"VERSION\",get:function(){return\"4.1.3\"}}]),i}(),Ti(document).on(Ii.CLICK_DATA_API,Fi,function(e){e.preventDefault(),Ui._jQueryInterface.call(Ti(this),\"show\")}),Ti.fn.tab=Ui._jQueryInterface,Ti.fn.tab.Constructor=Ui,Ti.fn.tab.noConflict=function(){return Ti.fn.tab=Ai,Ui._jQueryInterface},Ui);!function(e){if(\"undefined\"==typeof e)throw new TypeError(\"Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.\");var t=e.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error(\"Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\")}(t),e.Util=we,e.Alert=Ce,e.Button=Te,e.Carousel=Se,e.Collapse=De,e.Dropdown=Bi,e.Modal=qi,e.Popover=Qi,e.Scrollspy=Yi,e.Tab=Vi,e.Tooltip=Ki,Object.defineProperty(e,\"__esModule\",{value:!0})});\r\n//# sourceMappingURL=bootstrap.bundle.min.js.map","/*! nouislider - 10.0.0 - 2017-05-28 14:52:48 */\r\n\r\n(function (factory) {\r\n\r\n if ( typeof define === 'function' && define.amd ) {\r\n\r\n // AMD. Register as an anonymous module.\r\n define([], factory);\r\n\r\n } else if ( typeof exports === 'object' ) {\r\n\r\n // Node/CommonJS\r\n module.exports = factory();\r\n\r\n } else {\r\n\r\n // Browser globals\r\n window.noUiSlider = factory();\r\n }\r\n\r\n}(function( ){\r\n\r\n\t'use strict';\r\n\r\n\tvar VERSION = '10.0.0';\r\n\r\n\r\n\tfunction isValidFormatter ( entry ) {\r\n\t\treturn typeof entry === 'object' && typeof entry.to === 'function' && typeof entry.from === 'function';\r\n\t}\r\n\r\n\tfunction removeElement ( el ) {\r\n\t\tel.parentElement.removeChild(el);\r\n\t}\r\n\r\n\t// Bindable version\r\n\tfunction preventDefault ( e ) {\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\t// Removes duplicates from an array.\r\n\tfunction unique ( array ) {\r\n\t\treturn array.filter(function(a){\r\n\t\t\treturn !this[a] ? this[a] = true : false;\r\n\t\t}, {});\r\n\t}\r\n\r\n\t// Round a value to the closest 'to'.\r\n\tfunction closest ( value, to ) {\r\n\t\treturn Math.round(value / to) * to;\r\n\t}\r\n\r\n\t// Current position of an element relative to the document.\r\n\tfunction offset ( elem, orientation ) {\r\n\r\n\t\tvar rect = elem.getBoundingClientRect();\r\n\t\tvar doc = elem.ownerDocument;\r\n\t\tvar docElem = doc.documentElement;\r\n\t\tvar pageOffset = getPageOffset(doc);\r\n\r\n\t\t// getBoundingClientRect contains left scroll in Chrome on Android.\r\n\t\t// I haven't found a feature detection that proves this. Worst case\r\n\t\t// scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\r\n\t\tif ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) {\r\n\t\t\tpageOffset.x = 0;\r\n\t\t}\r\n\r\n\t\treturn orientation ? (rect.top + pageOffset.y - docElem.clientTop) : (rect.left + pageOffset.x - docElem.clientLeft);\r\n\t}\r\n\r\n\t// Checks whether a value is numerical.\r\n\tfunction isNumeric ( a ) {\r\n\t\treturn typeof a === 'number' && !isNaN( a ) && isFinite( a );\r\n\t}\r\n\r\n\t// Sets a class and removes it after [duration] ms.\r\n\tfunction addClassFor ( element, className, duration ) {\r\n\t\tif (duration > 0) {\r\n\t\taddClass(element, className);\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tremoveClass(element, className);\r\n\t\t\t}, duration);\r\n\t\t}\r\n\t}\r\n\r\n\t// Limits a value to 0 - 100\r\n\tfunction limit ( a ) {\r\n\t\treturn Math.max(Math.min(a, 100), 0);\r\n\t}\r\n\r\n\t// Wraps a variable as an array, if it isn't one yet.\r\n\t// Note that an input array is returned by reference!\r\n\tfunction asArray ( a ) {\r\n\t\treturn Array.isArray(a) ? a : [a];\r\n\t}\r\n\r\n\t// Counts decimals\r\n\tfunction countDecimals ( numStr ) {\r\n\t\tnumStr = String(numStr);\r\n\t\tvar pieces = numStr.split(\".\");\r\n\t\treturn pieces.length > 1 ? pieces[1].length : 0;\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#add_class\r\n\tfunction addClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.add(className);\r\n\t\t} else {\r\n\t\t\tel.className += ' ' + className;\r\n\t\t}\r\n\t}\r\n\r\n\t// http://youmightnotneedjquery.com/#remove_class\r\n\tfunction removeClass ( el, className ) {\r\n\t\tif ( el.classList ) {\r\n\t\t\tel.classList.remove(className);\r\n\t\t} else {\r\n\t\t\tel.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n\t\t}\r\n\t}\r\n\r\n\t// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\r\n\tfunction hasClass ( el, className ) {\r\n\t\treturn el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n\t}\r\n\r\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\r\n\tfunction getPageOffset ( doc ) {\r\n\r\n\t\tvar supportPageOffset = window.pageXOffset !== undefined;\r\n\t\tvar isCSS1Compat = ((doc.compatMode || \"\") === \"CSS1Compat\");\r\n\t\tvar x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? doc.documentElement.scrollLeft : doc.body.scrollLeft;\r\n\t\tvar y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? doc.documentElement.scrollTop : doc.body.scrollTop;\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n\r\n\t// we provide a function to compute constants instead\r\n\t// of accessing window.* as soon as the module needs it\r\n\t// so that we do not compute anything if not needed\r\n\tfunction getActions ( ) {\r\n\r\n\t\t// Determine the events to bind. IE11 implements pointerEvents without\r\n\t\t// a prefix, which breaks compatibility with the IE10 implementation.\r\n\t\treturn window.navigator.pointerEnabled ? {\r\n\t\t\tstart: 'pointerdown',\r\n\t\t\tmove: 'pointermove',\r\n\t\t\tend: 'pointerup'\r\n\t\t} : window.navigator.msPointerEnabled ? {\r\n\t\t\tstart: 'MSPointerDown',\r\n\t\t\tmove: 'MSPointerMove',\r\n\t\t\tend: 'MSPointerUp'\r\n\t\t} : {\r\n\t\t\tstart: 'mousedown touchstart',\r\n\t\t\tmove: 'mousemove touchmove',\r\n\t\t\tend: 'mouseup touchend'\r\n\t\t};\r\n\t}\r\n\r\n\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n\t// Issue #785\r\n\tfunction getSupportsPassive ( ) {\r\n\r\n\t\tvar supportsPassive = false;\r\n\r\n\t\ttry {\r\n\r\n\t\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\tsupportsPassive = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener('test', null, opts);\r\n\r\n\t\t} catch (e) {}\r\n\r\n\t\treturn supportsPassive;\r\n\t}\r\n\r\n\tfunction getSupportsTouchActionNone ( ) {\r\n\t\treturn window.CSS && CSS.supports && CSS.supports('touch-action', 'none');\r\n\t}\r\n\r\n\r\n// Value calculation\r\n\r\n\t// Determine the size of a sub-range in relation to a full range.\r\n\tfunction subRangeRatio ( pa, pb ) {\r\n\t\treturn (100 / (pb - pa));\r\n\t}\r\n\r\n\t// (percentage) How many percent is this value of this range?\r\n\tfunction fromPercentage ( range, value ) {\r\n\t\treturn (value * 100) / ( range[1] - range[0] );\r\n\t}\r\n\r\n\t// (percentage) Where is this value on this range?\r\n\tfunction toPercentage ( range, value ) {\r\n\t\treturn fromPercentage( range, range[0] < 0 ?\r\n\t\t\tvalue + Math.abs(range[0]) :\r\n\t\t\t\tvalue - range[0] );\r\n\t}\r\n\r\n\t// (value) How much is this percentage on this range?\r\n\tfunction isPercentage ( range, value ) {\r\n\t\treturn ((value * ( range[1] - range[0] )) / 100) + range[0];\r\n\t}\r\n\r\n\r\n// Range conversion\r\n\r\n\tfunction getJ ( value, arr ) {\r\n\r\n\t\tvar j = 1;\r\n\r\n\t\twhile ( value >= arr[j] ){\r\n\t\t\tj += 1;\r\n\t\t}\r\n\r\n\t\treturn j;\r\n\t}\r\n\r\n\t// (percentage) Input a value, find where, on a scale of 0-100, it applies.\r\n\tfunction toStepping ( xVal, xPct, value ) {\r\n\r\n\t\tif ( value >= xVal.slice(-1)[0] ){\r\n\t\t\treturn 100;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xVal ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (value) Input a percentage, find where it is on the specified range.\r\n\tfunction fromStepping ( xVal, xPct, value ) {\r\n\r\n\t\t// There is no range group that fits 100\r\n\t\tif ( value >= 100 ){\r\n\t\t\treturn xVal.slice(-1)[0];\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), va, vb, pa, pb;\r\n\r\n\t\tva = xVal[j-1];\r\n\t\tvb = xVal[j];\r\n\t\tpa = xPct[j-1];\r\n\t\tpb = xPct[j];\r\n\r\n\t\treturn isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb));\r\n\t}\r\n\r\n\t// (percentage) Get the step that applies at a certain value.\r\n\tfunction getStep ( xPct, xSteps, snap, value ) {\r\n\r\n\t\tif ( value === 100 ) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tvar j = getJ( value, xPct ), a, b;\r\n\r\n\t\t// If 'snap' is set, steps are used as fixed points on the slider.\r\n\t\tif ( snap ) {\r\n\r\n\t\t\ta = xPct[j-1];\r\n\t\t\tb = xPct[j];\r\n\r\n\t\t\t// Find the closest position, a or b.\r\n\t\t\tif ((value - a) > ((b-a)/2)){\r\n\t\t\t\treturn b;\r\n\t\t\t}\r\n\r\n\t\t\treturn a;\r\n\t\t}\r\n\r\n\t\tif ( !xSteps[j-1] ){\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn xPct[j-1] + closest(\r\n\t\t\tvalue - xPct[j-1],\r\n\t\t\txSteps[j-1]\r\n\t\t);\r\n\t}\r\n\r\n\r\n// Entry parsing\r\n\r\n\tfunction handleEntryPoint ( index, value, that ) {\r\n\r\n\t\tvar percentage;\r\n\r\n\t\t// Wrap numerical input in an array.\r\n\t\tif ( typeof value === \"number\" ) {\r\n\t\t\tvalue = [value];\r\n\t\t}\r\n\r\n\t\t// Reject any invalid input, by testing whether value is an array.\r\n\t\tif ( Object.prototype.toString.call( value ) !== '[object Array]' ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'range' contains invalid value.\");\r\n\t\t}\r\n\r\n\t\t// Covert min/max syntax to 0 and 100.\r\n\t\tif ( index === 'min' ) {\r\n\t\t\tpercentage = 0;\r\n\t\t} else if ( index === 'max' ) {\r\n\t\t\tpercentage = 100;\r\n\t\t} else {\r\n\t\t\tpercentage = parseFloat( index );\r\n\t\t}\r\n\r\n\t\t// Check for correct input.\r\n\t\tif ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'range' value isn't numeric.\");\r\n\t\t}\r\n\r\n\t\t// Store values.\r\n\t\tthat.xPct.push( percentage );\r\n\t\tthat.xVal.push( value[0] );\r\n\r\n\t\t// NaN will evaluate to false too, but to keep\r\n\t\t// logging clear, set step explicitly. Make sure\r\n\t\t// not to override the 'step' setting with false.\r\n\t\tif ( !percentage ) {\r\n\t\t\tif ( !isNaN( value[1] ) ) {\r\n\t\t\t\tthat.xSteps[0] = value[1];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthat.xSteps.push( isNaN(value[1]) ? false : value[1] );\r\n\t\t}\r\n\r\n\t\tthat.xHighestCompleteStep.push(0);\r\n\t}\r\n\r\n\tfunction handleStepPoint ( i, n, that ) {\r\n\r\n\t\t// Ignore 'false' stepping.\r\n\t\tif ( !n ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Factor to range ratio\r\n\t\tthat.xSteps[i] = fromPercentage([\r\n\t\t\t that.xVal[i]\r\n\t\t\t,that.xVal[i+1]\r\n\t\t], n) / subRangeRatio (\r\n\t\t\tthat.xPct[i],\r\n\t\t\tthat.xPct[i+1] );\r\n\r\n\t\tvar totalSteps = (that.xVal[i+1] - that.xVal[i]) / that.xNumSteps[i];\r\n\t\tvar highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\r\n\t\tvar step = that.xVal[i] + (that.xNumSteps[i] * highestStep);\r\n\r\n\t\tthat.xHighestCompleteStep[i] = step;\r\n\t}\r\n\r\n\r\n// Interface\r\n\r\n\tfunction Spectrum ( entry, snap, singleStep ) {\r\n\r\n\t\tthis.xPct = [];\r\n\t\tthis.xVal = [];\r\n\t\tthis.xSteps = [ singleStep || false ];\r\n\t\tthis.xNumSteps = [ false ];\r\n\t\tthis.xHighestCompleteStep = [];\r\n\r\n\t\tthis.snap = snap;\r\n\r\n\t\tvar index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];\r\n\r\n\t\t// Map the object keys to an array.\r\n\t\tfor ( index in entry ) {\r\n\t\t\tif ( entry.hasOwnProperty(index) ) {\r\n\t\t\t\tordered.push([entry[index], index]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Sort all entries by value (numeric sort).\r\n\t\tif ( ordered.length && typeof ordered[0][0] === \"object\" ) {\r\n\t\t\tordered.sort(function(a, b) { return a[0][0] - b[0][0]; });\r\n\t\t} else {\r\n\t\t\tordered.sort(function(a, b) { return a[0] - b[0]; });\r\n\t\t}\r\n\r\n\r\n\t\t// Convert all entries to subranges.\r\n\t\tfor ( index = 0; index < ordered.length; index++ ) {\r\n\t\t\thandleEntryPoint(ordered[index][1], ordered[index][0], this);\r\n\t\t}\r\n\r\n\t\t// Store the actual step values.\r\n\t\t// xSteps is sorted in the same order as xPct and xVal.\r\n\t\tthis.xNumSteps = this.xSteps.slice(0);\r\n\r\n\t\t// Convert all numeric steps to the percentage of the subrange they represent.\r\n\t\tfor ( index = 0; index < this.xNumSteps.length; index++ ) {\r\n\t\t\thandleStepPoint(index, this.xNumSteps[index], this);\r\n\t\t}\r\n\t}\r\n\r\n\tSpectrum.prototype.getMargin = function ( value ) {\r\n\r\n\t\tvar step = this.xNumSteps[0];\r\n\r\n\t\tif ( step && ((value / step) % 1) !== 0 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'limit', 'margin' and 'padding' must be divisible by step.\");\r\n\t\t}\r\n\r\n\t\treturn this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\r\n\t};\r\n\r\n\tSpectrum.prototype.toStepping = function ( value ) {\r\n\r\n\t\tvalue = toStepping( this.xVal, this.xPct, value );\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.fromStepping = function ( value ) {\r\n\r\n\t\treturn fromStepping( this.xVal, this.xPct, value );\r\n\t};\r\n\r\n\tSpectrum.prototype.getStep = function ( value ) {\r\n\r\n\t\tvalue = getStep(this.xPct, this.xSteps, this.snap, value );\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tSpectrum.prototype.getNearbySteps = function ( value ) {\r\n\r\n\t\tvar j = getJ(value, this.xPct);\r\n\r\n\t\treturn {\r\n\t\t\tstepBefore: { startValue: this.xVal[j-2], step: this.xNumSteps[j-2], highestStep: this.xHighestCompleteStep[j-2] },\r\n\t\t\tthisStep: { startValue: this.xVal[j-1], step: this.xNumSteps[j-1], highestStep: this.xHighestCompleteStep[j-1] },\r\n\t\t\tstepAfter: { startValue: this.xVal[j-0], step: this.xNumSteps[j-0], highestStep: this.xHighestCompleteStep[j-0] }\r\n\t\t};\r\n\t};\r\n\r\n\tSpectrum.prototype.countStepDecimals = function () {\r\n\t\tvar stepDecimals = this.xNumSteps.map(countDecimals);\r\n\t\treturn Math.max.apply(null, stepDecimals);\r\n \t};\r\n\r\n\t// Outside testing\r\n\tSpectrum.prototype.convert = function ( value ) {\r\n\t\treturn this.getStep(this.toStepping(value));\r\n\t};\r\n\r\n/*\tEvery input option is tested and parsed. This'll prevent\r\n\tendless validation in internal methods. These tests are\r\n\tstructured with an item for every option available. An\r\n\toption can be marked as required by setting the 'r' flag.\r\n\tThe testing function is provided with three arguments:\r\n\t\t- The provided value for the option;\r\n\t\t- A reference to the options object;\r\n\t\t- The name for the option;\r\n\r\n\tThe testing function returns false when an error is detected,\r\n\tor true when everything is OK. It can also modify the option\r\n\tobject, to make sure all values can be correctly looped elsewhere. */\r\n\r\n\tvar defaultFormatter = { 'to': function( value ){\r\n\t\treturn value !== undefined && value.toFixed(2);\r\n\t}, 'from': Number };\r\n\r\n\tfunction validateFormat ( entry ) {\r\n\r\n\t\t// Any object with a to and from method is supported.\r\n\t\tif ( isValidFormatter(entry) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'format' requires 'to' and 'from' methods.\");\r\n\t}\r\n\r\n\tfunction testStep ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric( entry ) ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'step' is not numeric.\");\r\n\t\t}\r\n\r\n\t\t// The step option can still be used to set stepping\r\n\t\t// for linear sliders. Overwritten if set in 'range'.\r\n\t\tparsed.singleStep = entry;\r\n\t}\r\n\r\n\tfunction testRange ( parsed, entry ) {\r\n\r\n\t\t// Filter incorrect input.\r\n\t\tif ( typeof entry !== 'object' || Array.isArray(entry) ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'range' is not an object.\");\r\n\t\t}\r\n\r\n\t\t// Catch missing start or end.\r\n\t\tif ( entry.min === undefined || entry.max === undefined ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): Missing 'min' or 'max' in 'range'.\");\r\n\t\t}\r\n\r\n\t\t// Catch equal start or end.\r\n\t\tif ( entry.min === entry.max ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'range' 'min' and 'max' cannot be equal.\");\r\n\t\t}\r\n\r\n\t\tparsed.spectrum = new Spectrum(entry, parsed.snap, parsed.singleStep);\r\n\t}\r\n\r\n\tfunction testStart ( parsed, entry ) {\r\n\r\n\t\tentry = asArray(entry);\r\n\r\n\t\t// Validate input. Values aren't tested, as the public .val method\r\n\t\t// will always provide a valid location.\r\n\t\tif ( !Array.isArray( entry ) || !entry.length ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'start' option is incorrect.\");\r\n\t\t}\r\n\r\n\t\t// Store the number of handles.\r\n\t\tparsed.handles = entry.length;\r\n\r\n\t\t// When the slider is initialized, the .val method will\r\n\t\t// be called with the start options.\r\n\t\tparsed.start = entry;\r\n\t}\r\n\r\n\tfunction testSnap ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.snap = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'snap' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimate ( parsed, entry ) {\r\n\r\n\t\t// Enforce 100% stepping within subranges.\r\n\t\tparsed.animate = entry;\r\n\r\n\t\tif ( typeof entry !== 'boolean' ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'animate' option must be a boolean.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAnimationDuration ( parsed, entry ) {\r\n\r\n\t\tparsed.animationDuration = entry;\r\n\r\n\t\tif ( typeof entry !== 'number' ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'animationDuration' option must be a number.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testConnect ( parsed, entry ) {\r\n\r\n\t\tvar connect = [false];\r\n\t\tvar i;\r\n\r\n\t\t// Map legacy options\r\n\t\tif ( entry === 'lower' ) {\r\n\t\t\tentry = [true, false];\r\n\t\t}\r\n\r\n\t\telse if ( entry === 'upper' ) {\r\n\t\t\tentry = [false, true];\r\n\t\t}\r\n\r\n\t\t// Handle boolean options\r\n\t\tif ( entry === true || entry === false ) {\r\n\r\n\t\t\tfor ( i = 1; i < parsed.handles; i++ ) {\r\n\t\t\t\tconnect.push(entry);\r\n\t\t\t}\r\n\r\n\t\t\tconnect.push(false);\r\n\t\t}\r\n\r\n\t\t// Reject invalid input\r\n\t\telse if ( !Array.isArray( entry ) || !entry.length || entry.length !== parsed.handles + 1 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'connect' option doesn't match handle count.\");\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\tconnect = entry;\r\n\t\t}\r\n\r\n\t\tparsed.connect = connect;\r\n\t}\r\n\r\n\tfunction testOrientation ( parsed, entry ) {\r\n\r\n\t\t// Set orientation to an a numerical value for easy\r\n\t\t// array selection.\r\n\t\tswitch ( entry ){\r\n\t\t case 'horizontal':\r\n\t\t\tparsed.ort = 0;\r\n\t\t\tbreak;\r\n\t\t case 'vertical':\r\n\t\t\tparsed.ort = 1;\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'orientation' option is invalid.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testMargin ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\t// Issue #582\r\n\t\tif ( entry === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparsed.margin = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.margin ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'margin' option is only supported on linear sliders.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testLimit ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'limit' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\tparsed.limit = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.limit || parsed.handles < 2 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'limit' option is only supported on linear sliders with 2 or more handles.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testPadding ( parsed, entry ) {\r\n\r\n\t\tif ( !isNumeric(entry) ){\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be numeric.\");\r\n\t\t}\r\n\r\n\t\tif ( entry === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparsed.padding = parsed.spectrum.getMargin(entry);\r\n\r\n\t\tif ( !parsed.padding ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option is only supported on linear sliders.\");\r\n\t\t}\r\n\r\n\t\tif ( parsed.padding < 0 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be a positive number.\");\r\n\t\t}\r\n\r\n\t\tif ( parsed.padding >= 50 ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'padding' option must be less than half the range.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testDirection ( parsed, entry ) {\r\n\r\n\t\t// Set direction as a numerical value for easy parsing.\r\n\t\t// Invert connection for RTL sliders, so that the proper\r\n\t\t// handles get the connect/background classes.\r\n\t\tswitch ( entry ) {\r\n\t\t case 'ltr':\r\n\t\t\tparsed.dir = 0;\r\n\t\t\tbreak;\r\n\t\t case 'rtl':\r\n\t\t\tparsed.dir = 1;\r\n\t\t\tbreak;\r\n\t\t default:\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'direction' option was not recognized.\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testBehaviour ( parsed, entry ) {\r\n\r\n\t\t// Make sure the input is a string.\r\n\t\tif ( typeof entry !== 'string' ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'behaviour' must be a string containing options.\");\r\n\t\t}\r\n\r\n\t\t// Check if the string contains any keywords.\r\n\t\t// None are required.\r\n\t\tvar tap = entry.indexOf('tap') >= 0;\r\n\t\tvar drag = entry.indexOf('drag') >= 0;\r\n\t\tvar fixed = entry.indexOf('fixed') >= 0;\r\n\t\tvar snap = entry.indexOf('snap') >= 0;\r\n\t\tvar hover = entry.indexOf('hover') >= 0;\r\n\r\n\t\tif ( fixed ) {\r\n\r\n\t\t\tif ( parsed.handles !== 2 ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'fixed' behaviour must be used with 2 handles\");\r\n\t\t\t}\r\n\r\n\t\t\t// Use margin to enforce fixed state\r\n\t\t\ttestMargin(parsed, parsed.start[1] - parsed.start[0]);\r\n\t\t}\r\n\r\n\t\tparsed.events = {\r\n\t\t\ttap: tap || snap,\r\n\t\t\tdrag: drag,\r\n\t\t\tfixed: fixed,\r\n\t\t\tsnap: snap,\r\n\t\t\thover: hover\r\n\t\t};\r\n\t}\r\n\r\n\tfunction testTooltips ( parsed, entry ) {\r\n\r\n\t\tif ( entry === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telse if ( entry === true ) {\r\n\r\n\t\t\tparsed.tooltips = [];\r\n\r\n\t\t\tfor ( var i = 0; i < parsed.handles; i++ ) {\r\n\t\t\t\tparsed.tooltips.push(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telse {\r\n\r\n\t\t\tparsed.tooltips = asArray(entry);\r\n\r\n\t\t\tif ( parsed.tooltips.length !== parsed.handles ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): must pass a formatter for all handles.\");\r\n\t\t\t}\r\n\r\n\t\t\tparsed.tooltips.forEach(function(formatter){\r\n\t\t\t\tif ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'tooltips' must be passed a formatter or 'false'.\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testAriaFormat ( parsed, entry ) {\r\n\t\tparsed.ariaFormat = entry;\r\n\t\tvalidateFormat(entry);\r\n\t}\r\n\r\n\tfunction testFormat ( parsed, entry ) {\r\n\t\tparsed.format = entry;\r\n\t\tvalidateFormat(entry);\r\n\t}\r\n\r\n\tfunction testCssPrefix ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'cssPrefix' must be a string or `false`.\");\r\n\t\t}\r\n\r\n\t\tparsed.cssPrefix = entry;\r\n\t}\r\n\r\n\tfunction testCssClasses ( parsed, entry ) {\r\n\r\n\t\tif ( entry !== undefined && typeof entry !== 'object' ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'cssClasses' must be an object.\");\r\n\t\t}\r\n\r\n\t\tif ( typeof parsed.cssPrefix === 'string' ) {\r\n\t\t\tparsed.cssClasses = {};\r\n\r\n\t\t\tfor ( var key in entry ) {\r\n\t\t\t\tif ( !entry.hasOwnProperty(key) ) { continue; }\r\n\r\n\t\t\t\tparsed.cssClasses[key] = parsed.cssPrefix + entry[key];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tparsed.cssClasses = entry;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction testUseRaf ( parsed, entry ) {\r\n\t\tif ( entry === true || entry === false ) {\r\n\t\t\tparsed.useRequestAnimationFrame = entry;\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'useRequestAnimationFrame' option should be true (default) or false.\");\r\n\t\t}\r\n\t}\r\n\r\n\t// Test all developer settings and parse to assumption-safe values.\r\n\tfunction testOptions ( options ) {\r\n\r\n\t\t// To prove a fix for #537, freeze options here.\r\n\t\t// If the object is modified, an error will be thrown.\r\n\t\t// Object.freeze(options);\r\n\r\n\t\tvar parsed = {\r\n\t\t\tmargin: 0,\r\n\t\t\tlimit: 0,\r\n\t\t\tpadding: 0,\r\n\t\t\tanimate: true,\r\n\t\t\tanimationDuration: 300,\r\n\t\t\tariaFormat: defaultFormatter,\r\n\t\t\tformat: defaultFormatter\r\n\t\t};\r\n\r\n\t\t// Tests are executed in the order they are presented here.\r\n\t\tvar tests = {\r\n\t\t\t'step': { r: false, t: testStep },\r\n\t\t\t'start': { r: true, t: testStart },\r\n\t\t\t'connect': { r: true, t: testConnect },\r\n\t\t\t'direction': { r: true, t: testDirection },\r\n\t\t\t'snap': { r: false, t: testSnap },\r\n\t\t\t'animate': { r: false, t: testAnimate },\r\n\t\t\t'animationDuration': { r: false, t: testAnimationDuration },\r\n\t\t\t'range': { r: true, t: testRange },\r\n\t\t\t'orientation': { r: false, t: testOrientation },\r\n\t\t\t'margin': { r: false, t: testMargin },\r\n\t\t\t'limit': { r: false, t: testLimit },\r\n\t\t\t'padding': { r: false, t: testPadding },\r\n\t\t\t'behaviour': { r: true, t: testBehaviour },\r\n\t\t\t'ariaFormat': { r: false, t: testAriaFormat },\r\n\t\t\t'format': { r: false, t: testFormat },\r\n\t\t\t'tooltips': { r: false, t: testTooltips },\r\n\t\t\t'cssPrefix': { r: false, t: testCssPrefix },\r\n\t\t\t'cssClasses': { r: false, t: testCssClasses },\r\n\t\t\t'useRequestAnimationFrame': { r: false, t: testUseRaf }\r\n\t\t};\r\n\r\n\t\tvar defaults = {\r\n\t\t\t'connect': false,\r\n\t\t\t'direction': 'ltr',\r\n\t\t\t'behaviour': 'tap',\r\n\t\t\t'orientation': 'horizontal',\r\n\t\t\t'cssPrefix' : 'noUi-',\r\n\t\t\t'cssClasses': {\r\n\t\t\t\ttarget: 'target',\r\n\t\t\t\tbase: 'base',\r\n\t\t\t\torigin: 'origin',\r\n\t\t\t\thandle: 'handle',\r\n\t\t\t\thandleLower: 'handle-lower',\r\n\t\t\t\thandleUpper: 'handle-upper',\r\n\t\t\t\thorizontal: 'horizontal',\r\n\t\t\t\tvertical: 'vertical',\r\n\t\t\t\tbackground: 'background',\r\n\t\t\t\tconnect: 'connect',\r\n\t\t\t\tltr: 'ltr',\r\n\t\t\t\trtl: 'rtl',\r\n\t\t\t\tdraggable: 'draggable',\r\n\t\t\t\tdrag: 'state-drag',\r\n\t\t\t\ttap: 'state-tap',\r\n\t\t\t\tactive: 'active',\r\n\t\t\t\ttooltip: 'tooltip',\r\n\t\t\t\tpips: 'pips',\r\n\t\t\t\tpipsHorizontal: 'pips-horizontal',\r\n\t\t\t\tpipsVertical: 'pips-vertical',\r\n\t\t\t\tmarker: 'marker',\r\n\t\t\t\tmarkerHorizontal: 'marker-horizontal',\r\n\t\t\t\tmarkerVertical: 'marker-vertical',\r\n\t\t\t\tmarkerNormal: 'marker-normal',\r\n\t\t\t\tmarkerLarge: 'marker-large',\r\n\t\t\t\tmarkerSub: 'marker-sub',\r\n\t\t\t\tvalue: 'value',\r\n\t\t\t\tvalueHorizontal: 'value-horizontal',\r\n\t\t\t\tvalueVertical: 'value-vertical',\r\n\t\t\t\tvalueNormal: 'value-normal',\r\n\t\t\t\tvalueLarge: 'value-large',\r\n\t\t\t\tvalueSub: 'value-sub'\r\n\t\t\t},\r\n\t\t\t'useRequestAnimationFrame': true\r\n\t\t};\r\n\r\n\t\t// AriaFormat defaults to regular format, if any.\r\n\t\tif ( options.format && !options.ariaFormat ) {\r\n\t\t\toptions.ariaFormat = options.format;\r\n\t\t}\r\n\r\n\t\t// Run all options through a testing mechanism to ensure correct\r\n\t\t// input. It should be noted that options might get modified to\r\n\t\t// be handled properly. E.g. wrapping integers in arrays.\r\n\t\tObject.keys(tests).forEach(function( name ){\r\n\r\n\t\t\t// If the option isn't set, but it is required, throw an error.\r\n\t\t\tif ( options[name] === undefined && defaults[name] === undefined ) {\r\n\r\n\t\t\t\tif ( tests[name].r ) {\r\n\t\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): '\" + name + \"' is required.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\ttests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] );\r\n\t\t});\r\n\r\n\t\t// Forward pips options\r\n\t\tparsed.pips = options.pips;\r\n\r\n\t\tvar styles = [['left', 'top'], ['right', 'bottom']];\r\n\r\n\t\t// Pre-define the styles.\r\n\t\tparsed.style = styles[parsed.dir][parsed.ort];\r\n\t\tparsed.styleOposite = styles[parsed.dir?0:1][parsed.ort];\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\r\nfunction closure ( target, options, originalOptions ){\r\n\r\n\tvar actions = getActions();\r\n\tvar supportsTouchActionNone = getSupportsTouchActionNone();\r\n\tvar supportsPassive = supportsTouchActionNone && getSupportsPassive();\r\n\r\n\t// All variables local to 'closure' are prefixed with 'scope_'\r\n\tvar scope_Target = target;\r\n\tvar scope_Locations = [];\r\n\tvar scope_Base;\r\n\tvar scope_Handles;\r\n\tvar scope_HandleNumbers = [];\r\n\tvar scope_ActiveHandle = false;\r\n\tvar scope_Connects;\r\n\tvar scope_Spectrum = options.spectrum;\r\n\tvar scope_Values = [];\r\n\tvar scope_Events = {};\r\n\tvar scope_Self;\r\n\tvar scope_Pips;\r\n\tvar scope_Listeners = null;\r\n\tvar scope_Document = target.ownerDocument;\r\n\tvar scope_DocumentElement = scope_Document.documentElement;\r\n\tvar scope_Body = scope_Document.body;\r\n\r\n\r\n\t// Creates a node, adds it to target, returns the new node.\r\n\tfunction addNodeTo ( target, className ) {\r\n\r\n\t\tvar div = scope_Document.createElement('div');\r\n\r\n\t\tif ( className ) {\r\n\t\t\taddClass(div, className);\r\n\t\t}\r\n\r\n\t\ttarget.appendChild(div);\r\n\r\n\t\treturn div;\r\n\t}\r\n\r\n\t// Append a origin to the base\r\n\tfunction addOrigin ( base, handleNumber ) {\r\n\r\n\t\tvar origin = addNodeTo(base, options.cssClasses.origin);\r\n\t\tvar handle = addNodeTo(origin, options.cssClasses.handle);\r\n\r\n\t\thandle.setAttribute('data-handle', handleNumber);\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\r\n\t\t// 0 = focusable and reachable\r\n\t\thandle.setAttribute('tabindex', '0');\r\n\t\thandle.setAttribute('role', 'slider');\r\n\t\thandle.setAttribute('aria-orientation', options.ort ? 'vertical' : 'horizontal');\r\n\r\n\t\tif ( handleNumber === 0 ) {\r\n\t\t\taddClass(handle, options.cssClasses.handleLower);\r\n\t\t}\r\n\r\n\t\telse if ( handleNumber === options.handles - 1 ) {\r\n\t\t\taddClass(handle, options.cssClasses.handleUpper);\r\n\t\t}\r\n\r\n\t\treturn origin;\r\n\t}\r\n\r\n\t// Insert nodes for connect elements\r\n\tfunction addConnect ( base, add ) {\r\n\r\n\t\tif ( !add ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn addNodeTo(base, options.cssClasses.connect);\r\n\t}\r\n\r\n\t// Add handles to the slider base.\r\n\tfunction addElements ( connectOptions, base ) {\r\n\r\n\t\tscope_Handles = [];\r\n\t\tscope_Connects = [];\r\n\r\n\t\tscope_Connects.push(addConnect(base, connectOptions[0]));\r\n\r\n\t\t// [::::O====O====O====]\r\n\t\t// connectOptions = [0, 1, 1, 1]\r\n\r\n\t\tfor ( var i = 0; i < options.handles; i++ ) {\r\n\t\t\t// Keep a list of all added handles.\r\n\t\t\tscope_Handles.push(addOrigin(base, i));\r\n\t\t\tscope_HandleNumbers[i] = i;\r\n\t\t\tscope_Connects.push(addConnect(base, connectOptions[i + 1]));\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialize a single slider.\r\n\tfunction addSlider ( target ) {\r\n\r\n\t\t// Apply classes and data to the target.\r\n\t\taddClass(target, options.cssClasses.target);\r\n\r\n\t\tif ( options.dir === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.ltr);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.rtl);\r\n\t\t}\r\n\r\n\t\tif ( options.ort === 0 ) {\r\n\t\t\taddClass(target, options.cssClasses.horizontal);\r\n\t\t} else {\r\n\t\t\taddClass(target, options.cssClasses.vertical);\r\n\t\t}\r\n\r\n\t\tscope_Base = addNodeTo(target, options.cssClasses.base);\r\n\t}\r\n\r\n\r\n\tfunction addTooltip ( handle, handleNumber ) {\r\n\r\n\t\tif ( !options.tooltips[handleNumber] ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn addNodeTo(handle.firstChild, options.cssClasses.tooltip);\r\n\t}\r\n\r\n\t// The tooltips option is a shorthand for using the 'update' event.\r\n\tfunction tooltips ( ) {\r\n\r\n\t\t// Tooltips are added with options.tooltips in original order.\r\n\t\tvar tips = scope_Handles.map(addTooltip);\r\n\r\n\t\tbindEvent('update', function(values, handleNumber, unencoded) {\r\n\r\n\t\t\tif ( !tips[handleNumber] ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar formattedValue = values[handleNumber];\r\n\r\n\t\t\tif ( options.tooltips[handleNumber] !== true ) {\r\n\t\t\t\tformattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\r\n\t\t\t}\r\n\r\n\t\t\ttips[handleNumber].innerHTML = formattedValue;\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction aria ( ) {\r\n\r\n\t\tbindEvent('update', function ( values, handleNumber, unencoded, tap, positions ) {\r\n\r\n\t\t\t// Update Aria Values for all handles, as a change in one changes min and max values for the next.\r\n\t\t\tscope_HandleNumbers.forEach(function( handleNumber ){\r\n\r\n\t\t\t\tvar handle = scope_Handles[handleNumber];\r\n\r\n\t\t\t\tvar min = checkHandlePosition(scope_Locations, handleNumber, 0, true, true, true);\r\n\t\t\t\tvar max = checkHandlePosition(scope_Locations, handleNumber, 100, true, true, true);\r\n\r\n\t\t\t\tvar now = positions[handleNumber];\r\n\t\t\t\tvar text = options.ariaFormat.to(unencoded[handleNumber]);\r\n\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuemin', min.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuemax', max.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuenow', now.toFixed(1));\r\n\t\t\t\thandle.children[0].setAttribute('aria-valuetext', text);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction getGroup ( mode, values, stepped ) {\r\n\r\n\t\t// Use the range.\r\n\t\tif ( mode === 'range' || mode === 'steps' ) {\r\n\t\t\treturn scope_Spectrum.xVal;\r\n\t\t}\r\n\r\n\t\tif ( mode === 'count' ) {\r\n\r\n\t\t\tif ( !values ) {\r\n\t\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): 'values' required for mode 'count'.\");\r\n\t\t\t}\r\n\r\n\t\t\t// Divide 0 - 100 in 'count' parts.\r\n\t\t\tvar spread = ( 100 / (values - 1) );\r\n\t\t\tvar v;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tvalues = [];\r\n\r\n\t\t\t// List these parts and have them handled as 'positions'.\r\n\t\t\twhile ( (v = i++ * spread) <= 100 ) {\r\n\t\t\t\tvalues.push(v);\r\n\t\t\t}\r\n\r\n\t\t\tmode = 'positions';\r\n\t\t}\r\n\r\n\t\tif ( mode === 'positions' ) {\r\n\r\n\t\t\t// Map all percentages to on-range values.\r\n\t\t\treturn values.map(function( value ){\r\n\t\t\t\treturn scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value );\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif ( mode === 'values' ) {\r\n\r\n\t\t\t// If the value must be stepped, it needs to be converted to a percentage first.\r\n\t\t\tif ( stepped ) {\r\n\r\n\t\t\t\treturn values.map(function( value ){\r\n\r\n\t\t\t\t\t// Convert to percentage, apply step, return to value.\r\n\t\t\t\t\treturn scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) );\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Otherwise, we can simply use the values.\r\n\t\t\treturn values;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction generateSpread ( density, mode, group ) {\r\n\r\n\t\tfunction safeIncrement(value, increment) {\r\n\t\t\t// Avoid floating point variance by dropping the smallest decimal places.\r\n\t\t\treturn (value + increment).toFixed(7) / 1;\r\n\t\t}\r\n\r\n\t\tvar indexes = {};\r\n\t\tvar firstInRange = scope_Spectrum.xVal[0];\r\n\t\tvar lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1];\r\n\t\tvar ignoreFirst = false;\r\n\t\tvar ignoreLast = false;\r\n\t\tvar prevPct = 0;\r\n\r\n\t\t// Create a copy of the group, sort it and filter away all duplicates.\r\n\t\tgroup = unique(group.slice().sort(function(a, b){ return a - b; }));\r\n\r\n\t\t// Make sure the range starts with the first element.\r\n\t\tif ( group[0] !== firstInRange ) {\r\n\t\t\tgroup.unshift(firstInRange);\r\n\t\t\tignoreFirst = true;\r\n\t\t}\r\n\r\n\t\t// Likewise for the last one.\r\n\t\tif ( group[group.length - 1] !== lastInRange ) {\r\n\t\t\tgroup.push(lastInRange);\r\n\t\t\tignoreLast = true;\r\n\t\t}\r\n\r\n\t\tgroup.forEach(function ( current, index ) {\r\n\r\n\t\t\t// Get the current step and the lower + upper positions.\r\n\t\t\tvar step;\r\n\t\t\tvar i;\r\n\t\t\tvar q;\r\n\t\t\tvar low = current;\r\n\t\t\tvar high = group[index+1];\r\n\t\t\tvar newPct;\r\n\t\t\tvar pctDifference;\r\n\t\t\tvar pctPos;\r\n\t\t\tvar type;\r\n\t\t\tvar steps;\r\n\t\t\tvar realSteps;\r\n\t\t\tvar stepsize;\r\n\r\n\t\t\t// When using 'steps' mode, use the provided steps.\r\n\t\t\t// Otherwise, we'll step on to the next subrange.\r\n\t\t\tif ( mode === 'steps' ) {\r\n\t\t\t\tstep = scope_Spectrum.xNumSteps[ index ];\r\n\t\t\t}\r\n\r\n\t\t\t// Default to a 'full' step.\r\n\t\t\tif ( !step ) {\r\n\t\t\t\tstep = high-low;\r\n\t\t\t}\r\n\r\n\t\t\t// Low can be 0, so test for false. If high is undefined,\r\n\t\t\t// we are at the last subrange. Index 0 is already handled.\r\n\t\t\tif ( low === false || high === undefined ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure step isn't 0, which would cause an infinite loop (#654)\r\n\t\t\tstep = Math.max(step, 0.0000001);\r\n\r\n\t\t\t// Find all steps in the subrange.\r\n\t\t\tfor ( i = low; i <= high; i = safeIncrement(i, step) ) {\r\n\r\n\t\t\t\t// Get the percentage value for the current step,\r\n\t\t\t\t// calculate the size for the subrange.\r\n\t\t\t\tnewPct = scope_Spectrum.toStepping( i );\r\n\t\t\t\tpctDifference = newPct - prevPct;\r\n\r\n\t\t\t\tsteps = pctDifference / density;\r\n\t\t\t\trealSteps = Math.round(steps);\r\n\r\n\t\t\t\t// This ratio represents the ammount of percentage-space a point indicates.\r\n\t\t\t\t// For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.\r\n\t\t\t\t// Round the percentage offset to an even number, then divide by two\r\n\t\t\t\t// to spread the offset on both sides of the range.\r\n\t\t\t\tstepsize = pctDifference/realSteps;\r\n\r\n\t\t\t\t// Divide all points evenly, adding the correct number to this subrange.\r\n\t\t\t\t// Run up to <= so that 100% gets a point, event if ignoreLast is set.\r\n\t\t\t\tfor ( q = 1; q <= realSteps; q += 1 ) {\r\n\r\n\t\t\t\t\t// The ratio between the rounded value and the actual size might be ~1% off.\r\n\t\t\t\t\t// Correct the percentage offset by the number of points\r\n\t\t\t\t\t// per subrange. density = 1 will result in 100 points on the\r\n\t\t\t\t\t// full range, 2 for 50, 4 for 25, etc.\r\n\t\t\t\t\tpctPos = prevPct + ( q * stepsize );\r\n\t\t\t\t\tindexes[pctPos.toFixed(5)] = ['x', 0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Determine the point type.\r\n\t\t\t\ttype = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );\r\n\r\n\t\t\t\t// Enforce the 'ignoreFirst' option by overwriting the type for 0.\r\n\t\t\t\tif ( !index && ignoreFirst ) {\r\n\t\t\t\t\ttype = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !(i === high && ignoreLast)) {\r\n\t\t\t\t\t// Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\r\n\t\t\t\t\tindexes[newPct.toFixed(5)] = [i, type];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Update the percentage count.\r\n\t\t\t\tprevPct = newPct;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn indexes;\r\n\t}\r\n\r\n\tfunction addMarking ( spread, filterFunc, formatter ) {\r\n\r\n\t\tvar element = scope_Document.createElement('div');\r\n\r\n\t\tvar valueSizeClasses = [\r\n\t\t\toptions.cssClasses.valueNormal,\r\n\t\t\toptions.cssClasses.valueLarge,\r\n\t\t\toptions.cssClasses.valueSub\r\n\t\t];\r\n\t\tvar markerSizeClasses = [\r\n\t\t\toptions.cssClasses.markerNormal,\r\n\t\t\toptions.cssClasses.markerLarge,\r\n\t\t\toptions.cssClasses.markerSub\r\n\t\t];\r\n\t\tvar valueOrientationClasses = [\r\n\t\t\toptions.cssClasses.valueHorizontal,\r\n\t\t\toptions.cssClasses.valueVertical\r\n\t\t];\r\n\t\tvar markerOrientationClasses = [\r\n\t\t\toptions.cssClasses.markerHorizontal,\r\n\t\t\toptions.cssClasses.markerVertical\r\n\t\t];\r\n\r\n\t\taddClass(element, options.cssClasses.pips);\r\n\t\taddClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\r\n\r\n\t\tfunction getClasses( type, source ){\r\n\t\t\tvar a = source === options.cssClasses.value;\r\n\t\t\tvar orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\r\n\t\t\tvar sizeClasses = a ? valueSizeClasses : markerSizeClasses;\r\n\r\n\t\t\treturn source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];\r\n\t\t}\r\n\r\n\t\tfunction addSpread ( offset, values ){\r\n\r\n\t\t\t// Apply the filter function, if it is set.\r\n\t\t\tvalues[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];\r\n\r\n\t\t\t// Add a marker for every point\r\n\t\t\tvar node = addNodeTo(element, false);\r\n\t\t\t\tnode.className = getClasses(values[1], options.cssClasses.marker);\r\n\t\t\t\tnode.style[options.style] = offset + '%';\r\n\r\n\t\t\t// Values are only appended for points marked '1' or '2'.\r\n\t\t\tif ( values[1] ) {\r\n\t\t\t\tnode = addNodeTo(element, false);\r\n\t\t\t\tnode.className = getClasses(values[1], options.cssClasses.value);\r\n\t\t\t\tnode.style[options.style] = offset + '%';\r\n\t\t\t\tnode.innerText = formatter.to(values[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Append all points.\r\n\t\tObject.keys(spread).forEach(function(a){\r\n\t\t\taddSpread(a, spread[a]);\r\n\t\t});\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tfunction removePips ( ) {\r\n\t\tif ( scope_Pips ) {\r\n\t\t\tremoveElement(scope_Pips);\r\n\t\t\tscope_Pips = null;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction pips ( grid ) {\r\n\r\n\t\t// Fix #669\r\n\t\tremovePips();\r\n\r\n\t\tvar mode = grid.mode;\r\n\t\tvar density = grid.density || 1;\r\n\t\tvar filter = grid.filter || false;\r\n\t\tvar values = grid.values || false;\r\n\t\tvar stepped = grid.stepped || false;\r\n\t\tvar group = getGroup( mode, values, stepped );\r\n\t\tvar spread = generateSpread( density, mode, group );\r\n\t\tvar format = grid.format || {\r\n\t\t\tto: Math.round\r\n\t\t};\r\n\r\n\t\tscope_Pips = scope_Target.appendChild(addMarking(\r\n\t\t\tspread,\r\n\t\t\tfilter,\r\n\t\t\tformat\r\n\t\t));\r\n\r\n\t\treturn scope_Pips;\r\n\t}\r\n\r\n\r\n\t// Shorthand for base dimensions.\r\n\tfunction baseSize ( ) {\r\n\t\tvar rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort];\r\n\t\treturn options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]);\r\n\t}\r\n\r\n\t// Handler for attaching events trough a proxy.\r\n\tfunction attachEvent ( events, element, callback, data ) {\r\n\r\n\t\t// This function can be used to 'filter' events to the slider.\r\n\t\t// element is a node, not a nodeList\r\n\r\n\t\tvar method = function ( e ){\r\n\r\n\t\t\tif ( scope_Target.hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Stop if an active 'tap' transition is taking place.\r\n\t\t\tif ( hasClass(scope_Target, options.cssClasses.tap) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\te = fixEvent(e, data.pageOffset);\r\n\r\n\t\t\t// Handle reject of multitouch\r\n\t\t\tif ( !e ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Ignore right or middle clicks on start #454\r\n\t\t\tif ( data.hover && e.buttons ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\r\n\t\t\t// iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\r\n\t\t\t// touch-action: manipulation, but that allows panning, which breaks\r\n\t\t\t// sliders after zooming/on non-responsive pages.\r\n\t\t\t// See: https://bugs.webkit.org/show_bug.cgi?id=133112\r\n\t\t\tif ( !supportsPassive ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\te.calcPoint = e.points[ options.ort ];\r\n\r\n\t\t\t// Call the event handler with the event [ and additional data ].\r\n\t\t\tcallback ( e, data );\r\n\t\t};\r\n\r\n\t\tvar methods = [];\r\n\r\n\t\t// Bind a closure on the target for every event type.\r\n\t\tevents.split(' ').forEach(function( eventName ){\r\n\t\t\telement.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\r\n\t\t\tmethods.push([eventName, method]);\r\n\t\t});\r\n\r\n\t\treturn methods;\r\n\t}\r\n\r\n\t// Provide a clean event with standardized offset values.\r\n\tfunction fixEvent ( e, pageOffset ) {\r\n\r\n\t\t// Filter the event to register the type, which can be\r\n\t\t// touch, mouse or pointer. Offset changes need to be\r\n\t\t// made on an event specific basis.\r\n\t\tvar touch = e.type.indexOf('touch') === 0;\r\n\t\tvar mouse = e.type.indexOf('mouse') === 0;\r\n\t\tvar pointer = e.type.indexOf('pointer') === 0;\r\n\r\n\t\tvar x;\r\n\t\tvar y;\r\n\r\n\t\t// IE10 implemented pointer events with a prefix;\r\n\t\tif ( e.type.indexOf('MSPointer') === 0 ) {\r\n\t\t\tpointer = true;\r\n\t\t}\r\n\r\n\t\tif ( touch ) {\r\n\r\n\t\t\t// Fix bug when user touches with two or more fingers on mobile devices.\r\n\t\t\t// It's useful when you have two or more sliders on one page,\r\n\t\t\t// that can be touched simultaneously.\r\n\t\t\t// #649, #663, #668\r\n\t\t\tif ( e.touches.length > 1 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// noUiSlider supports one movement at a time,\r\n\t\t\t// so we can select the first 'changedTouch'.\r\n\t\t\tx = e.changedTouches[0].pageX;\r\n\t\t\ty = e.changedTouches[0].pageY;\r\n\t\t}\r\n\r\n\t\tpageOffset = pageOffset || getPageOffset(scope_Document);\r\n\r\n\t\tif ( mouse || pointer ) {\r\n\t\t\tx = e.clientX + pageOffset.x;\r\n\t\t\ty = e.clientY + pageOffset.y;\r\n\t\t}\r\n\r\n\t\te.pageOffset = pageOffset;\r\n\t\te.points = [x, y];\r\n\t\te.cursor = mouse || pointer; // Fix #435\r\n\r\n\t\treturn e;\r\n\t}\r\n\r\n\t// Translate a coordinate in the document to a percentage on the slider\r\n\tfunction calcPointToPercentage ( calcPoint ) {\r\n\t\tvar location = calcPoint - offset(scope_Base, options.ort);\r\n\t\tvar proposal = ( location * 100 ) / baseSize();\r\n\t\treturn options.dir ? 100 - proposal : proposal;\r\n\t}\r\n\r\n\t// Find handle closest to a certain percentage on the slider\r\n\tfunction getClosestHandle ( proposal ) {\r\n\r\n\t\tvar closest = 100;\r\n\t\tvar handleNumber = false;\r\n\r\n\t\tscope_Handles.forEach(function(handle, index){\r\n\r\n\t\t\t// Disabled handles are ignored\r\n\t\t\tif ( handle.hasAttribute('disabled') ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar pos = Math.abs(scope_Locations[index] - proposal);\r\n\r\n\t\t\tif ( pos < closest ) {\r\n\t\t\t\thandleNumber = index;\r\n\t\t\t\tclosest = pos;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn handleNumber;\r\n\t}\r\n\r\n\t// Moves handle(s) by a percentage\r\n\t// (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\r\n\tfunction moveHandles ( upward, proposal, locations, handleNumbers ) {\r\n\r\n\t\tvar proposals = locations.slice();\r\n\r\n\t\tvar b = [!upward, upward];\r\n\t\tvar f = [upward, !upward];\r\n\r\n\t\t// Copy handleNumbers so we don't change the dataset\r\n\t\thandleNumbers = handleNumbers.slice();\r\n\r\n\t\t// Check to see which handle is 'leading'.\r\n\t\t// If that one can't move the second can't either.\r\n\t\tif ( upward ) {\r\n\t\t\thandleNumbers.reverse();\r\n\t\t}\r\n\r\n\t\t// Step 1: get the maximum percentage that any of the handles can move\r\n\t\tif ( handleNumbers.length > 1 ) {\r\n\r\n\t\t\thandleNumbers.forEach(function(handleNumber, o) {\r\n\r\n\t\t\t\tvar to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false);\r\n\r\n\t\t\t\t// Stop if one of the handles can't move.\r\n\t\t\t\tif ( to === false ) {\r\n\t\t\t\t\tproposal = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tproposal = to - proposals[handleNumber];\r\n\t\t\t\t\tproposals[handleNumber] = to;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// If using one handle, check backward AND forward\r\n\t\telse {\r\n\t\t\tb = f = [true];\r\n\t\t}\r\n\r\n\t\tvar state = false;\r\n\r\n\t\t// Step 2: Try to set the handles with the found percentage\r\n\t\thandleNumbers.forEach(function(handleNumber, o) {\r\n\t\t\tstate = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state;\r\n\t\t});\r\n\r\n\t\t// Step 3: If a handle moved, fire events\r\n\t\tif ( state ) {\r\n\t\t\thandleNumbers.forEach(function(handleNumber){\r\n\t\t\t\tfireEvent('update', handleNumber);\r\n\t\t\t\tfireEvent('slide', handleNumber);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// External event handling\r\n\tfunction fireEvent ( eventName, handleNumber, tap ) {\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\r\n\t\t\tvar eventType = targetEvent.split('.')[0];\r\n\r\n\t\t\tif ( eventName === eventType ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\r\n\t\t\t\t\tcallback.call(\r\n\t\t\t\t\t\t// Use the slider public API as the scope ('this')\r\n\t\t\t\t\t\tscope_Self,\r\n\t\t\t\t\t\t// Return values as array, so arg_1[arg_2] is always valid.\r\n\t\t\t\t\t\tscope_Values.map(options.format.to),\r\n\t\t\t\t\t\t// Handle index, 0 or 1\r\n\t\t\t\t\t\thandleNumber,\r\n\t\t\t\t\t\t// Unformatted slider values\r\n\t\t\t\t\t\tscope_Values.slice(),\r\n\t\t\t\t\t\t// Event is fired by tap, true or false\r\n\t\t\t\t\t\ttap || false,\r\n\t\t\t\t\t\t// Left offset of the handle, in relation to the slider\r\n\t\t\t\t\t\tscope_Locations.slice()\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t// Fire 'end' when a mouse or pen leaves the document.\r\n\tfunction documentLeave ( event, data ) {\r\n\t\tif ( event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null ){\r\n\t\t\teventEnd (event, data);\r\n\t\t}\r\n\t}\r\n\r\n\t// Handle movement on document for handle and range drag.\r\n\tfunction eventMove ( event, data ) {\r\n\r\n\t\t// Fix #498\r\n\t\t// Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\r\n\t\t// https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\r\n\t\t// IE9 has .buttons and .which zero on mousemove.\r\n\t\t// Firefox breaks the spec MDN defines.\r\n\t\tif ( navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) {\r\n\t\t\treturn eventEnd(event, data);\r\n\t\t}\r\n\r\n\t\t// Check if we are moving up or down\r\n\t\tvar movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\r\n\r\n\t\t// Convert the movement into a percentage of the slider width/height\r\n\t\tvar proposal = (movement * 100) / data.baseSize;\r\n\r\n\t\tmoveHandles(movement > 0, proposal, data.locations, data.handleNumbers);\r\n\t}\r\n\r\n\t// Unbind move events on document, call callbacks.\r\n\tfunction eventEnd ( event, data ) {\r\n\r\n\t\t// The handle is no longer active, so remove the class.\r\n\t\tif ( scope_ActiveHandle ) {\r\n\t\t\tremoveClass(scope_ActiveHandle, options.cssClasses.active);\r\n\t\t\tscope_ActiveHandle = false;\r\n\t\t}\r\n\r\n\t\t// Remove cursor styles and text-selection events bound to the body.\r\n\t\tif ( event.cursor ) {\r\n\t\t\tscope_Body.style.cursor = '';\r\n\t\t\tscope_Body.removeEventListener('selectstart', preventDefault);\r\n\t\t}\r\n\r\n\t\t// Unbind the move and end events, which are added on 'start'.\r\n\t\tscope_Listeners.forEach(function( c ) {\r\n\t\t\tscope_DocumentElement.removeEventListener(c[0], c[1]);\r\n\t\t});\r\n\r\n\t\t// Remove dragging class.\r\n\t\tremoveClass(scope_Target, options.cssClasses.drag);\r\n\r\n\t\tsetZindex();\r\n\r\n\t\tdata.handleNumbers.forEach(function(handleNumber){\r\n\t\t\tfireEvent('change', handleNumber);\r\n\t\t\tfireEvent('set', handleNumber);\r\n\t\t\tfireEvent('end', handleNumber);\r\n\t\t});\r\n\t}\r\n\r\n\t// Bind move events on document.\r\n\tfunction eventStart ( event, data ) {\r\n\r\n\t\tif ( data.handleNumbers.length === 1 ) {\r\n\r\n\t\t\tvar handle = scope_Handles[data.handleNumbers[0]];\r\n\r\n\t\t\t// Ignore 'disabled' handles\r\n\t\t\tif ( handle.hasAttribute('disabled') ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Mark the handle as 'active' so it can be styled.\r\n\t\t\tscope_ActiveHandle = handle.children[0];\r\n\t\t\taddClass(scope_ActiveHandle, options.cssClasses.active);\r\n\t\t}\r\n\r\n\t\t// A drag should never propagate up to the 'tap' event.\r\n\t\tevent.stopPropagation();\r\n\r\n\t\t// Attach the move and end events.\r\n\t\tvar moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\r\n\t\t\tstartCalcPoint: event.calcPoint,\r\n\t\t\tbaseSize: baseSize(),\r\n\t\t\tpageOffset: event.pageOffset,\r\n\t\t\thandleNumbers: data.handleNumbers,\r\n\t\t\tbuttonsProperty: event.buttons,\r\n\t\t\tlocations: scope_Locations.slice()\r\n\t\t});\r\n\r\n\t\tvar endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\r\n\t\t\thandleNumbers: data.handleNumbers\r\n\t\t});\r\n\r\n\t\tvar outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\r\n\t\t\thandleNumbers: data.handleNumbers\r\n\t\t});\r\n\r\n\t\tscope_Listeners = moveEvent.concat(endEvent, outEvent);\r\n\r\n\t\t// Text selection isn't an issue on touch devices,\r\n\t\t// so adding cursor styles can be skipped.\r\n\t\tif ( event.cursor ) {\r\n\r\n\t\t\t// Prevent the 'I' cursor and extend the range-drag cursor.\r\n\t\t\tscope_Body.style.cursor = getComputedStyle(event.target).cursor;\r\n\r\n\t\t\t// Mark the target with a dragging state.\r\n\t\t\tif ( scope_Handles.length > 1 ) {\r\n\t\t\t\taddClass(scope_Target, options.cssClasses.drag);\r\n\t\t\t}\r\n\r\n\t\t\t// Prevent text selection when dragging the handles.\r\n\t\t\t// In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\r\n\t\t\t// which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\r\n\t\t\t// meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\r\n\t\t\t// The 'cursor' flag is false.\r\n\t\t\t// See: http://caniuse.com/#search=selectstart\r\n\t\t\tscope_Body.addEventListener('selectstart', preventDefault, false);\r\n\t\t}\r\n\r\n\t\tdata.handleNumbers.forEach(function(handleNumber){\r\n\t\t\tfireEvent('start', handleNumber);\r\n\t\t});\r\n\t}\r\n\r\n\t// Move closest handle to tapped location.\r\n\tfunction eventTap ( event ) {\r\n\r\n\t\t// The tap event shouldn't propagate up\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tvar proposal = calcPointToPercentage(event.calcPoint);\r\n\t\tvar handleNumber = getClosestHandle(proposal);\r\n\r\n\t\t// Tackle the case that all handles are 'disabled'.\r\n\t\tif ( handleNumber === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Flag the slider as it is now in a transitional state.\r\n\t\t// Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\r\n\t\tif ( !options.events.snap ) {\r\n\t\t\taddClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n\t\t}\r\n\r\n\t\tsetHandle(handleNumber, proposal, true, true);\r\n\r\n\t\tsetZindex();\r\n\r\n\t\tfireEvent('slide', handleNumber, true);\r\n\t\tfireEvent('update', handleNumber, true);\r\n\t\tfireEvent('change', handleNumber, true);\r\n\t\tfireEvent('set', handleNumber, true);\r\n\r\n\t\tif ( options.events.snap ) {\r\n\t\t\teventStart(event, { handleNumbers: [handleNumber] });\r\n\t\t}\r\n\t}\r\n\r\n\t// Fires a 'hover' event for a hovered mouse/pen position.\r\n\tfunction eventHover ( event ) {\r\n\r\n\t\tvar proposal = calcPointToPercentage(event.calcPoint);\r\n\r\n\t\tvar to = scope_Spectrum.getStep(proposal);\r\n\t\tvar value = scope_Spectrum.fromStepping(to);\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\r\n\t\t\tif ( 'hover' === targetEvent.split('.')[0] ) {\r\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\r\n\t\t\t\t\tcallback.call( scope_Self, value );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Attach events to several slider parts.\r\n\tfunction bindSliderEvents ( behaviour ) {\r\n\r\n\t\t// Attach the standard drag event to the handles.\r\n\t\tif ( !behaviour.fixed ) {\r\n\r\n\t\t\tscope_Handles.forEach(function( handle, index ){\r\n\r\n\t\t\t\t// These events are only bound to the visual handle\r\n\t\t\t\t// element, not the 'real' origin element.\r\n\t\t\t\tattachEvent ( actions.start, handle.children[0], eventStart, {\r\n\t\t\t\t\thandleNumbers: [index]\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Attach the tap event to the slider base.\r\n\t\tif ( behaviour.tap ) {\r\n\t\t\tattachEvent (actions.start, scope_Base, eventTap, {});\r\n\t\t}\r\n\r\n\t\t// Fire hover events\r\n\t\tif ( behaviour.hover ) {\r\n\t\t\tattachEvent (actions.move, scope_Base, eventHover, { hover: true });\r\n\t\t}\r\n\r\n\t\t// Make the range draggable.\r\n\t\tif ( behaviour.drag ){\r\n\r\n\t\t\tscope_Connects.forEach(function( connect, index ){\r\n\r\n\t\t\t\tif ( connect === false || index === 0 || index === scope_Connects.length - 1 ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar handleBefore = scope_Handles[index - 1];\r\n\t\t\t\tvar handleAfter = scope_Handles[index];\r\n\t\t\t\tvar eventHolders = [connect];\r\n\r\n\t\t\t\taddClass(connect, options.cssClasses.draggable);\r\n\r\n\t\t\t\t// When the range is fixed, the entire range can\r\n\t\t\t\t// be dragged by the handles. The handle in the first\r\n\t\t\t\t// origin will propagate the start event upward,\r\n\t\t\t\t// but it needs to be bound manually on the other.\r\n\t\t\t\tif ( behaviour.fixed ) {\r\n\t\t\t\t\teventHolders.push(handleBefore.children[0]);\r\n\t\t\t\t\teventHolders.push(handleAfter.children[0]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\teventHolders.forEach(function( eventHolder ) {\r\n\t\t\t\t\tattachEvent ( actions.start, eventHolder, eventStart, {\r\n\t\t\t\t\t\thandles: [handleBefore, handleAfter],\r\n\t\t\t\t\t\thandleNumbers: [index - 1, index]\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// Split out the handle positioning logic so the Move event can use it, too\r\n\tfunction checkHandlePosition ( reference, handleNumber, to, lookBackward, lookForward, getValue ) {\r\n\r\n\t\t// For sliders with multiple handles, limit movement to the other handle.\r\n\t\t// Apply the margin option by adding it to the handle positions.\r\n\t\tif ( scope_Handles.length > 1 ) {\r\n\r\n\t\t\tif ( lookBackward && handleNumber > 0 ) {\r\n\t\t\t\tto = Math.max(to, reference[handleNumber - 1] + options.margin);\r\n\t\t\t}\r\n\r\n\t\t\tif ( lookForward && handleNumber < scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.min(to, reference[handleNumber + 1] - options.margin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// The limit option has the opposite effect, limiting handles to a\r\n\t\t// maximum distance from another. Limit must be > 0, as otherwise\r\n\t\t// handles would be unmoveable.\r\n\t\tif ( scope_Handles.length > 1 && options.limit ) {\r\n\r\n\t\t\tif ( lookBackward && handleNumber > 0 ) {\r\n\t\t\t\tto = Math.min(to, reference[handleNumber - 1] + options.limit);\r\n\t\t\t}\r\n\r\n\t\t\tif ( lookForward && handleNumber < scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.max(to, reference[handleNumber + 1] - options.limit);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// The padding option keeps the handles a certain distance from the\r\n\t\t// edges of the slider. Padding must be > 0.\r\n\t\tif ( options.padding ) {\r\n\r\n\t\t\tif ( handleNumber === 0 ) {\r\n\t\t\t\tto = Math.max(to, options.padding);\r\n\t\t\t}\r\n\r\n\t\t\tif ( handleNumber === scope_Handles.length - 1 ) {\r\n\t\t\t\tto = Math.min(to, 100 - options.padding);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tto = scope_Spectrum.getStep(to);\r\n\r\n\t\t// Limit percentage to the 0 - 100 range\r\n\t\tto = limit(to);\r\n\r\n\t\t// Return false if handle can't move\r\n\t\tif ( to === reference[handleNumber] && !getValue ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn to;\r\n\t}\r\n\r\n\tfunction toPct ( pct ) {\r\n\t\treturn pct + '%';\r\n\t}\r\n\r\n\t// Updates scope_Locations and scope_Values, updates visual state\r\n\tfunction updateHandlePosition ( handleNumber, to ) {\r\n\r\n\t\t// Update locations.\r\n\t\tscope_Locations[handleNumber] = to;\r\n\r\n\t\t// Convert the value to the slider stepping/range.\r\n\t\tscope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\r\n\r\n\t\t// Called synchronously or on the next animationFrame\r\n\t\tvar stateUpdate = function() {\r\n\t\t\tscope_Handles[handleNumber].style[options.style] = toPct(to);\r\n\t\t\tupdateConnect(handleNumber);\r\n\t\t\tupdateConnect(handleNumber + 1);\r\n\t\t};\r\n\r\n\t\t// Set the handle to the new position.\r\n\t\t// Use requestAnimationFrame for efficient painting.\r\n\t\t// No significant effect in Chrome, Edge sees dramatic performace improvements.\r\n\t\t// Option to disable is useful for unit tests, and single-step debugging.\r\n\t\tif ( window.requestAnimationFrame && options.useRequestAnimationFrame ) {\r\n\t\t\twindow.requestAnimationFrame(stateUpdate);\r\n\t\t} else {\r\n\t\t\tstateUpdate();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setZindex ( ) {\r\n\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\t\t\t// Handles before the slider middle are stacked later = higher,\r\n\t\t\t// Handles after the middle later is lower\r\n\t\t\t// [[7] [8] .......... | .......... [5] [4]\r\n\t\t\tvar dir = (scope_Locations[handleNumber] > 50 ? -1 : 1);\r\n\t\t\tvar zIndex = 3 + (scope_Handles.length + (dir * handleNumber));\r\n\t\t\tscope_Handles[handleNumber].childNodes[0].style.zIndex = zIndex;\r\n\t\t});\r\n\t}\r\n\r\n\t// Test suggested values and apply margin, step.\r\n\tfunction setHandle ( handleNumber, to, lookBackward, lookForward ) {\r\n\r\n\t\tto = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false);\r\n\r\n\t\tif ( to === false ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tupdateHandlePosition(handleNumber, to);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Updates style attribute for connect nodes\r\n\tfunction updateConnect ( index ) {\r\n\r\n\t\t// Skip connects set to false\r\n\t\tif ( !scope_Connects[index] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar l = 0;\r\n\t\tvar h = 100;\r\n\r\n\t\tif ( index !== 0 ) {\r\n\t\t\tl = scope_Locations[index - 1];\r\n\t\t}\r\n\r\n\t\tif ( index !== scope_Connects.length - 1 ) {\r\n\t\t\th = scope_Locations[index];\r\n\t\t}\r\n\r\n\t\tscope_Connects[index].style[options.style] = toPct(l);\r\n\t\tscope_Connects[index].style[options.styleOposite] = toPct(100 - h);\r\n\t}\r\n\r\n\t// ...\r\n\tfunction setValue ( to, handleNumber ) {\r\n\r\n\t\t// Setting with null indicates an 'ignore'.\r\n\t\t// Inputting 'false' is invalid.\r\n\t\tif ( to === null || to === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If a formatted number was passed, attemt to decode it.\r\n\t\tif ( typeof to === 'number' ) {\r\n\t\t\tto = String(to);\r\n\t\t}\r\n\r\n\t\tto = options.format.from(to);\r\n\r\n\t\t// Request an update for all links if the value was invalid.\r\n\t\t// Do so too if setting the handle fails.\r\n\t\tif ( to !== false && !isNaN(to) ) {\r\n\t\t\tsetHandle(handleNumber, scope_Spectrum.toStepping(to), false, false);\r\n\t\t}\r\n\t}\r\n\r\n\t// Set the slider value.\r\n\tfunction valueSet ( input, fireSetEvent ) {\r\n\r\n\t\tvar values = asArray(input);\r\n\t\tvar isInit = scope_Locations[0] === undefined;\r\n\r\n\t\t// Event fires by default\r\n\t\tfireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);\r\n\r\n\t\tvalues.forEach(setValue);\r\n\r\n\t\t// Animation is optional.\r\n\t\t// Make sure the initial values were set before using animated placement.\r\n\t\tif ( options.animate && !isInit ) {\r\n\t\t\taddClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\r\n\t\t}\r\n\r\n\t\t// Now that all base values are set, apply constraints\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\t\t\tsetHandle(handleNumber, scope_Locations[handleNumber], true, false);\r\n\t\t});\r\n\r\n\t\tsetZindex();\r\n\r\n\t\tscope_HandleNumbers.forEach(function(handleNumber){\r\n\r\n\t\t\tfireEvent('update', handleNumber);\r\n\r\n\t\t\t// Fire the event only for handles that received a new value, as per #579\r\n\t\t\tif ( values[handleNumber] !== null && fireSetEvent ) {\r\n\t\t\t\tfireEvent('set', handleNumber);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Reset slider to initial values\r\n\tfunction valueReset ( fireSetEvent ) {\r\n\t\tvalueSet(options.start, fireSetEvent);\r\n\t}\r\n\r\n\t// Get the slider value.\r\n\tfunction valueGet ( ) {\r\n\r\n\t\tvar values = scope_Values.map(options.format.to);\r\n\r\n\t\t// If only one handle is used, return a single value.\r\n\t\tif ( values.length === 1 ){\r\n\t\t\treturn values[0];\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t// Removes classes from the root and empties it.\r\n\tfunction destroy ( ) {\r\n\r\n\t\tfor ( var key in options.cssClasses ) {\r\n\t\t\tif ( !options.cssClasses.hasOwnProperty(key) ) { continue; }\r\n\t\t\tremoveClass(scope_Target, options.cssClasses[key]);\r\n\t\t}\r\n\r\n\t\twhile (scope_Target.firstChild) {\r\n\t\t\tscope_Target.removeChild(scope_Target.firstChild);\r\n\t\t}\r\n\r\n\t\tdelete scope_Target.noUiSlider;\r\n\t}\r\n\r\n\t// Get the current step size for the slider.\r\n\tfunction getCurrentStep ( ) {\r\n\r\n\t\t// Check all locations, map them to their stepping point.\r\n\t\t// Get the step point, then find it in the input list.\r\n\t\treturn scope_Locations.map(function( location, index ){\r\n\r\n\t\t\tvar nearbySteps = scope_Spectrum.getNearbySteps( location );\r\n\t\t\tvar value = scope_Values[index];\r\n\t\t\tvar increment = nearbySteps.thisStep.step;\r\n\t\t\tvar decrement = null;\r\n\r\n\t\t\t// If the next value in this step moves into the next step,\r\n\t\t\t// the increment is the start of the next step - the current value\r\n\t\t\tif ( increment !== false ) {\r\n\t\t\t\tif ( value + increment > nearbySteps.stepAfter.startValue ) {\r\n\t\t\t\t\tincrement = nearbySteps.stepAfter.startValue - value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// If the value is beyond the starting point\r\n\t\t\tif ( value > nearbySteps.thisStep.startValue ) {\r\n\t\t\t\tdecrement = nearbySteps.thisStep.step;\r\n\t\t\t}\r\n\r\n\t\t\telse if ( nearbySteps.stepBefore.step === false ) {\r\n\t\t\t\tdecrement = false;\r\n\t\t\t}\r\n\r\n\t\t\t// If a handle is at the start of a step, it always steps back into the previous step first\r\n\t\t\telse {\r\n\t\t\t\tdecrement = value - nearbySteps.stepBefore.highestStep;\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Now, if at the slider edges, there is not in/decrement\r\n\t\t\tif ( location === 100 ) {\r\n\t\t\t\tincrement = null;\r\n\t\t\t}\r\n\r\n\t\t\telse if ( location === 0 ) {\r\n\t\t\t\tdecrement = null;\r\n\t\t\t}\r\n\r\n\t\t\t// As per #391, the comparison for the decrement step can have some rounding issues.\r\n\t\t\tvar stepDecimals = scope_Spectrum.countStepDecimals();\r\n\r\n\t\t\t// Round per #391\r\n\t\t\tif ( increment !== null && increment !== false ) {\r\n\t\t\t\tincrement = Number(increment.toFixed(stepDecimals));\r\n\t\t\t}\r\n\r\n\t\t\tif ( decrement !== null && decrement !== false ) {\r\n\t\t\t\tdecrement = Number(decrement.toFixed(stepDecimals));\r\n\t\t\t}\r\n\r\n\t\t\treturn [decrement, increment];\r\n\t\t});\r\n\t}\r\n\r\n\t// Attach an event to this slider, possibly including a namespace\r\n\tfunction bindEvent ( namespacedEvent, callback ) {\r\n\t\tscope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\r\n\t\tscope_Events[namespacedEvent].push(callback);\r\n\r\n\t\t// If the event bound is 'update,' fire it immediately for all handles.\r\n\t\tif ( namespacedEvent.split('.')[0] === 'update' ) {\r\n\t\t\tscope_Handles.forEach(function(a, index){\r\n\t\t\t\tfireEvent('update', index);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// Undo attachment of event\r\n\tfunction removeEvent ( namespacedEvent ) {\r\n\r\n\t\tvar event = namespacedEvent && namespacedEvent.split('.')[0];\r\n\t\tvar namespace = event && namespacedEvent.substring(event.length);\r\n\r\n\t\tObject.keys(scope_Events).forEach(function( bind ){\r\n\r\n\t\t\tvar tEvent = bind.split('.')[0],\r\n\t\t\t\ttNamespace = bind.substring(tEvent.length);\r\n\r\n\t\t\tif ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) {\r\n\t\t\t\tdelete scope_Events[bind];\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Updateable: margin, limit, padding, step, range, animate, snap\r\n\tfunction updateOptions ( optionsToUpdate, fireSetEvent ) {\r\n\r\n\t\t// Spectrum is created using the range, snap, direction and step options.\r\n\t\t// 'snap' and 'step' can be updated.\r\n\t\t// If 'snap' and 'step' are not passed, they should remain unchanged.\r\n\t\tvar v = valueGet();\r\n\r\n\t\tvar updateAble = ['margin', 'limit', 'padding', 'range', 'animate', 'snap', 'step', 'format'];\r\n\r\n\t\t// Only change options that we're actually passed to update.\r\n\t\tupdateAble.forEach(function(name){\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toriginalOptions[name] = optionsToUpdate[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar newOptions = testOptions(originalOptions);\r\n\r\n\t\t// Load new options into the slider state\r\n\t\tupdateAble.forEach(function(name){\r\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\r\n\t\t\t\toptions[name] = newOptions[name];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tscope_Spectrum = newOptions.spectrum;\r\n\r\n\t\t// Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\r\n\t\toptions.margin = newOptions.margin;\r\n\t\toptions.limit = newOptions.limit;\r\n\t\toptions.padding = newOptions.padding;\r\n\r\n\t\t// Update pips, removes existing.\r\n\t\tif ( options.pips ) {\r\n\t\t\tpips(options.pips);\r\n\t\t}\r\n\r\n\t\t// Invalidate the current positioning so valueSet forces an update.\r\n\t\tscope_Locations = [];\r\n\t\tvalueSet(optionsToUpdate.start || v, fireSetEvent);\r\n\t}\r\n\r\n\t// Throw an error if the slider was already initialized.\r\n\tif ( scope_Target.noUiSlider ) {\r\n\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): Slider was already initialized.\");\r\n\t}\r\n\r\n\t// Create the base element, initialise HTML and set classes.\r\n\t// Add handles and connect elements.\r\n\taddSlider(scope_Target);\r\n\taddElements(options.connect, scope_Base);\r\n\r\n\tscope_Self = {\r\n\t\tdestroy: destroy,\r\n\t\tsteps: getCurrentStep,\r\n\t\ton: bindEvent,\r\n\t\toff: removeEvent,\r\n\t\tget: valueGet,\r\n\t\tset: valueSet,\r\n\t\treset: valueReset,\r\n\t\t// Exposed for unit testing, don't use this in your application.\r\n\t\t__moveHandles: function(a, b, c) { moveHandles(a, b, scope_Locations, c); },\r\n\t\toptions: originalOptions, // Issue #600, #678\r\n\t\tupdateOptions: updateOptions,\r\n\t\ttarget: scope_Target, // Issue #597\r\n\t\tremovePips: removePips,\r\n\t\tpips: pips // Issue #594\r\n\t};\r\n\r\n\t// Attach user events.\r\n\tbindSliderEvents(options.events);\r\n\r\n\t// Use the public value method to set the start values.\r\n\tvalueSet(options.start);\r\n\r\n\tif ( options.pips ) {\r\n\t\tpips(options.pips);\r\n\t}\r\n\r\n\tif ( options.tooltips ) {\r\n\t\ttooltips();\r\n\t}\r\n\r\n\taria();\r\n\r\n\treturn scope_Self;\r\n\r\n}\r\n\r\n\r\n\t// Run the standard initializer\r\n\tfunction initialize ( target, originalOptions ) {\r\n\r\n\t\tif ( !target || !target.nodeName ) {\r\n\t\t\tthrow new Error(\"noUiSlider (\" + VERSION + \"): create requires a single element, got: \" + target);\r\n\t\t}\r\n\r\n\t\t// Test the options and create the slider environment;\r\n\t\tvar options = testOptions( originalOptions, target );\r\n\t\tvar api = closure( target, options, originalOptions );\r\n\r\n\t\ttarget.noUiSlider = api;\r\n\r\n\t\treturn api;\r\n\t}\r\n\r\n\t// Use an object instead of a function for future expansibility;\r\n\treturn {\r\n\t\tversion: VERSION,\r\n\t\tcreate: initialize\r\n\t};\r\n\r\n}));","/*\r\n _ _ _ _\r\n ___| (_) ___| | __ (_)___\r\n/ __| | |/ __| |/ / | / __|\r\n\\__ \\ | | (__| < _ | \\__ \\\r\n|___/_|_|\\___|_|\\_(_)/ |___/\r\n |__/\r\n\r\n Version: 1.6.0\r\n Author: Ken Wheeler\r\n Website: http://kenwheeler.github.io\r\n Docs: http://kenwheeler.github.io/slick\r\n Repo: http://github.com/kenwheeler/slick\r\n Issues: http://github.com/kenwheeler/slick/issues\r\n\r\n */\r\n/* global window, document, define, jQuery, setInterval, clearInterval */\r\n(function(factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof exports !== 'undefined') {\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n factory(jQuery);\r\n }\r\n\r\n}(function($) {\r\n 'use strict';\r\n var Slick = window.Slick || {};\r\n\r\n Slick = (function() {\r\n\r\n var instanceUid = 0;\r\n\r\n function Slick(element, settings) {\r\n\r\n var _ = this, dataSettings;\r\n\r\n _.defaults = {\r\n accessibility: true,\r\n adaptiveHeight: false,\r\n appendArrows: $(element),\r\n appendDots: $(element),\r\n arrows: true,\r\n asNavFor: null,\r\n prevArrow: 'Previous ',\r\n nextArrow: 'Next ',\r\n autoplay: false,\r\n autoplaySpeed: 3000,\r\n centerMode: false,\r\n centerPadding: '50px',\r\n cssEase: 'ease',\r\n customPaging: function(slider, i) {\r\n return $(' ').text(i + 1);\r\n },\r\n dots: false,\r\n dotsClass: 'slick-dots',\r\n draggable: true,\r\n easing: 'linear',\r\n edgeFriction: 0.35,\r\n fade: false,\r\n focusOnSelect: false,\r\n infinite: true,\r\n initialSlide: 0,\r\n lazyLoad: 'ondemand',\r\n mobileFirst: false,\r\n pauseOnHover: true,\r\n pauseOnFocus: true,\r\n pauseOnDotsHover: false,\r\n respondTo: 'window',\r\n responsive: null,\r\n rows: 1,\r\n rtl: false,\r\n slide: '',\r\n slidesPerRow: 1,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n speed: 500,\r\n swipe: true,\r\n swipeToSlide: false,\r\n touchMove: true,\r\n touchThreshold: 5,\r\n useCSS: true,\r\n useTransform: true,\r\n variableWidth: false,\r\n vertical: false,\r\n verticalSwiping: false,\r\n waitForAnimate: true,\r\n zIndex: 1000\r\n };\r\n\r\n _.initials = {\r\n animating: false,\r\n dragging: false,\r\n autoPlayTimer: null,\r\n currentDirection: 0,\r\n currentLeft: null,\r\n currentSlide: 0,\r\n direction: 1,\r\n $dots: null,\r\n listWidth: null,\r\n listHeight: null,\r\n loadIndex: 0,\r\n $nextArrow: null,\r\n $prevArrow: null,\r\n slideCount: null,\r\n slideWidth: null,\r\n $slideTrack: null,\r\n $slides: null,\r\n sliding: false,\r\n slideOffset: 0,\r\n swipeLeft: null,\r\n $list: null,\r\n touchObject: {},\r\n transformsEnabled: false,\r\n unslicked: false\r\n };\r\n\r\n $.extend(_, _.initials);\r\n\r\n _.activeBreakpoint = null;\r\n _.animType = null;\r\n _.animProp = null;\r\n _.breakpoints = [];\r\n _.breakpointSettings = [];\r\n _.cssTransitions = false;\r\n _.focussed = false;\r\n _.interrupted = false;\r\n _.hidden = 'hidden';\r\n _.paused = true;\r\n _.positionProp = null;\r\n _.respondTo = null;\r\n _.rowCount = 1;\r\n _.shouldClick = true;\r\n _.$slider = $(element);\r\n _.$slidesCache = null;\r\n _.transformType = null;\r\n _.transitionType = null;\r\n _.visibilityChange = 'visibilitychange';\r\n _.windowWidth = 0;\r\n _.windowTimer = null;\r\n\r\n dataSettings = $(element).data('slick') || {};\r\n\r\n _.options = $.extend({}, _.defaults, settings, dataSettings);\r\n\r\n _.currentSlide = _.options.initialSlide;\r\n\r\n _.originalSettings = _.options;\r\n\r\n if (typeof document.mozHidden !== 'undefined') {\r\n _.hidden = 'mozHidden';\r\n _.visibilityChange = 'mozvisibilitychange';\r\n } else if (typeof document.webkitHidden !== 'undefined') {\r\n _.hidden = 'webkitHidden';\r\n _.visibilityChange = 'webkitvisibilitychange';\r\n }\r\n\r\n _.autoPlay = $.proxy(_.autoPlay, _);\r\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\r\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\r\n _.changeSlide = $.proxy(_.changeSlide, _);\r\n _.clickHandler = $.proxy(_.clickHandler, _);\r\n _.selectHandler = $.proxy(_.selectHandler, _);\r\n _.setPosition = $.proxy(_.setPosition, _);\r\n _.swipeHandler = $.proxy(_.swipeHandler, _);\r\n _.dragHandler = $.proxy(_.dragHandler, _);\r\n _.keyHandler = $.proxy(_.keyHandler, _);\r\n\r\n _.instanceUid = instanceUid++;\r\n\r\n // A simple way to check for HTML strings\r\n // Strict HTML recognition (must start with <)\r\n // Extracted from jQuery v1.11 source\r\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\r\n\r\n\r\n _.registerBreakpoints();\r\n _.init(true);\r\n\r\n }\r\n\r\n return Slick;\r\n\r\n }());\r\n\r\n Slick.prototype.activateADA = function() {\r\n var _ = this;\r\n\r\n _.$slideTrack.find('.slick-active').attr({\r\n 'aria-hidden': 'false'\r\n }).find('a, input, button, select').attr({\r\n 'tabindex': '0'\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\r\n\r\n var _ = this;\r\n\r\n if (typeof(index) === 'boolean') {\r\n addBefore = index;\r\n index = null;\r\n } else if (index < 0 || (index >= _.slideCount)) {\r\n return false;\r\n }\r\n\r\n _.unload();\r\n\r\n if (typeof(index) === 'number') {\r\n if (index === 0 && _.$slides.length === 0) {\r\n $(markup).appendTo(_.$slideTrack);\r\n } else if (addBefore) {\r\n $(markup).insertBefore(_.$slides.eq(index));\r\n } else {\r\n $(markup).insertAfter(_.$slides.eq(index));\r\n }\r\n } else {\r\n if (addBefore === true) {\r\n $(markup).prependTo(_.$slideTrack);\r\n } else {\r\n $(markup).appendTo(_.$slideTrack);\r\n }\r\n }\r\n\r\n _.$slides = _.$slideTrack.children(this.options.slide);\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.append(_.$slides);\r\n\r\n _.$slides.each(function(index, element) {\r\n $(element).attr('data-slick-index', index);\r\n });\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.reinit();\r\n\r\n };\r\n\r\n Slick.prototype.animateHeight = function() {\r\n var _ = this;\r\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\r\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\r\n _.$list.animate({\r\n height: targetHeight\r\n }, _.options.speed);\r\n }\r\n };\r\n\r\n Slick.prototype.animateSlide = function(targetLeft, callback) {\r\n\r\n var animProps = {},\r\n _ = this;\r\n\r\n _.animateHeight();\r\n\r\n if (_.options.rtl === true && _.options.vertical === false) {\r\n targetLeft = -targetLeft;\r\n }\r\n if (_.transformsEnabled === false) {\r\n if (_.options.vertical === false) {\r\n _.$slideTrack.animate({\r\n left: targetLeft\r\n }, _.options.speed, _.options.easing, callback);\r\n } else {\r\n _.$slideTrack.animate({\r\n top: targetLeft\r\n }, _.options.speed, _.options.easing, callback);\r\n }\r\n\r\n } else {\r\n\r\n if (_.cssTransitions === false) {\r\n if (_.options.rtl === true) {\r\n _.currentLeft = -(_.currentLeft);\r\n }\r\n $({\r\n animStart: _.currentLeft\r\n }).animate({\r\n animStart: targetLeft\r\n }, {\r\n duration: _.options.speed,\r\n easing: _.options.easing,\r\n step: function(now) {\r\n now = Math.ceil(now);\r\n if (_.options.vertical === false) {\r\n animProps[_.animType] = 'translate(' +\r\n now + 'px, 0px)';\r\n _.$slideTrack.css(animProps);\r\n } else {\r\n animProps[_.animType] = 'translate(0px,' +\r\n now + 'px)';\r\n _.$slideTrack.css(animProps);\r\n }\r\n },\r\n complete: function() {\r\n if (callback) {\r\n callback.call();\r\n }\r\n }\r\n });\r\n\r\n } else {\r\n\r\n _.applyTransition();\r\n targetLeft = Math.ceil(targetLeft);\r\n\r\n if (_.options.vertical === false) {\r\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\r\n } else {\r\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\r\n }\r\n _.$slideTrack.css(animProps);\r\n\r\n if (callback) {\r\n setTimeout(function() {\r\n\r\n _.disableTransition();\r\n\r\n callback.call();\r\n }, _.options.speed);\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.getNavTarget = function() {\r\n\r\n var _ = this,\r\n asNavFor = _.options.asNavFor;\r\n\r\n if ( asNavFor && asNavFor !== null ) {\r\n asNavFor = $(asNavFor).not(_.$slider);\r\n }\r\n\r\n return asNavFor;\r\n\r\n };\r\n\r\n Slick.prototype.asNavFor = function(index) {\r\n\r\n var _ = this,\r\n asNavFor = _.getNavTarget();\r\n\r\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\r\n asNavFor.each(function() {\r\n var target = $(this).slick('getSlick');\r\n if(!target.unslicked) {\r\n target.slideHandler(index, true);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.applyTransition = function(slide) {\r\n\r\n var _ = this,\r\n transition = {};\r\n\r\n if (_.options.fade === false) {\r\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\r\n } else {\r\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\r\n }\r\n\r\n if (_.options.fade === false) {\r\n _.$slideTrack.css(transition);\r\n } else {\r\n _.$slides.eq(slide).css(transition);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlay = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n\r\n if ( _.slideCount > _.options.slidesToShow ) {\r\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlayClear = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.autoPlayTimer) {\r\n clearInterval(_.autoPlayTimer);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.autoPlayIterator = function() {\r\n\r\n var _ = this,\r\n slideTo = _.currentSlide + _.options.slidesToScroll;\r\n\r\n if ( !_.paused && !_.interrupted && !_.focussed ) {\r\n\r\n if ( _.options.infinite === false ) {\r\n\r\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\r\n _.direction = 0;\r\n }\r\n\r\n else if ( _.direction === 0 ) {\r\n\r\n slideTo = _.currentSlide - _.options.slidesToScroll;\r\n\r\n if ( _.currentSlide - 1 === 0 ) {\r\n _.direction = 1;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n _.slideHandler( slideTo );\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildArrows = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true ) {\r\n\r\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\r\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\r\n\r\n if( _.slideCount > _.options.slidesToShow ) {\r\n\r\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\r\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\r\n\r\n if (_.htmlExpr.test(_.options.prevArrow)) {\r\n _.$prevArrow.prependTo(_.options.appendArrows);\r\n }\r\n\r\n if (_.htmlExpr.test(_.options.nextArrow)) {\r\n _.$nextArrow.appendTo(_.options.appendArrows);\r\n }\r\n\r\n if (_.options.infinite !== true) {\r\n _.$prevArrow\r\n .addClass('slick-disabled')\r\n .attr('aria-disabled', 'true');\r\n }\r\n\r\n } else {\r\n\r\n _.$prevArrow.add( _.$nextArrow )\r\n\r\n .addClass('slick-hidden')\r\n .attr({\r\n 'aria-disabled': 'true',\r\n 'tabindex': '-1'\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildDots = function() {\r\n\r\n var _ = this,\r\n i, dot;\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$slider.addClass('slick-dotted');\r\n\r\n dot = $('').addClass(_.options.dotsClass);\r\n\r\n for (i = 0; i <= _.getDotCount(); i += 1) {\r\n dot.append($(' ').append(_.options.customPaging.call(this, _, i)));\r\n }\r\n\r\n _.$dots = dot.appendTo(_.options.appendDots);\r\n\r\n _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildOut = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slides =\r\n _.$slider\r\n .children( _.options.slide + ':not(.slick-cloned)')\r\n .addClass('slick-slide');\r\n\r\n _.slideCount = _.$slides.length;\r\n\r\n _.$slides.each(function(index, element) {\r\n $(element)\r\n .attr('data-slick-index', index)\r\n .data('originalStyling', $(element).attr('style') || '');\r\n });\r\n\r\n _.$slider.addClass('slick-slider');\r\n\r\n _.$slideTrack = (_.slideCount === 0) ?\r\n $('').appendTo(_.$slider) :\r\n _.$slides.wrapAll('
').parent();\r\n\r\n _.$list = _.$slideTrack.wrap(\r\n '
').parent();\r\n _.$slideTrack.css('opacity', 0);\r\n\r\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\r\n _.options.slidesToScroll = 1;\r\n }\r\n\r\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\r\n\r\n _.setupInfinite();\r\n\r\n _.buildArrows();\r\n\r\n _.buildDots();\r\n\r\n _.updateDots();\r\n\r\n\r\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\r\n\r\n if (_.options.draggable === true) {\r\n _.$list.addClass('draggable');\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.buildRows = function() {\r\n\r\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\r\n\r\n newSlides = document.createDocumentFragment();\r\n originalSlides = _.$slider.children();\r\n\r\n if(_.options.rows > 1) {\r\n\r\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\r\n numOfSlides = Math.ceil(\r\n originalSlides.length / slidesPerSection\r\n );\r\n\r\n for(a = 0; a < numOfSlides; a++){\r\n var slide = document.createElement('div');\r\n for(b = 0; b < _.options.rows; b++) {\r\n var row = document.createElement('div');\r\n for(c = 0; c < _.options.slidesPerRow; c++) {\r\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\r\n if (originalSlides.get(target)) {\r\n row.appendChild(originalSlides.get(target));\r\n }\r\n }\r\n slide.appendChild(row);\r\n }\r\n newSlides.appendChild(slide);\r\n }\r\n\r\n _.$slider.empty().append(newSlides);\r\n _.$slider.children().children().children()\r\n .css({\r\n 'width':(100 / _.options.slidesPerRow) + '%',\r\n 'display': 'inline-block'\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\r\n\r\n var _ = this,\r\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\r\n var sliderWidth = _.$slider.width();\r\n var windowWidth = window.innerWidth || $(window).width();\r\n\r\n if (_.respondTo === 'window') {\r\n respondToWidth = windowWidth;\r\n } else if (_.respondTo === 'slider') {\r\n respondToWidth = sliderWidth;\r\n } else if (_.respondTo === 'min') {\r\n respondToWidth = Math.min(windowWidth, sliderWidth);\r\n }\r\n\r\n if ( _.options.responsive &&\r\n _.options.responsive.length &&\r\n _.options.responsive !== null) {\r\n\r\n targetBreakpoint = null;\r\n\r\n for (breakpoint in _.breakpoints) {\r\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\r\n if (_.originalSettings.mobileFirst === false) {\r\n if (respondToWidth < _.breakpoints[breakpoint]) {\r\n targetBreakpoint = _.breakpoints[breakpoint];\r\n }\r\n } else {\r\n if (respondToWidth > _.breakpoints[breakpoint]) {\r\n targetBreakpoint = _.breakpoints[breakpoint];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (targetBreakpoint !== null) {\r\n if (_.activeBreakpoint !== null) {\r\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\r\n _.activeBreakpoint =\r\n targetBreakpoint;\r\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\r\n _.unslick(targetBreakpoint);\r\n } else {\r\n _.options = $.extend({}, _.originalSettings,\r\n _.breakpointSettings[\r\n targetBreakpoint]);\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n }\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n } else {\r\n _.activeBreakpoint = targetBreakpoint;\r\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\r\n _.unslick(targetBreakpoint);\r\n } else {\r\n _.options = $.extend({}, _.originalSettings,\r\n _.breakpointSettings[\r\n targetBreakpoint]);\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n }\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n } else {\r\n if (_.activeBreakpoint !== null) {\r\n _.activeBreakpoint = null;\r\n _.options = _.originalSettings;\r\n if (initial === true) {\r\n _.currentSlide = _.options.initialSlide;\r\n }\r\n _.refresh(initial);\r\n triggerBreakpoint = targetBreakpoint;\r\n }\r\n }\r\n\r\n // only trigger breakpoints during an actual break. not on initialize.\r\n if( !initial && triggerBreakpoint !== false ) {\r\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.changeSlide = function(event, dontAnimate) {\r\n\r\n var _ = this,\r\n $target = $(event.currentTarget),\r\n indexOffset, slideOffset, unevenOffset;\r\n\r\n // If target is a link, prevent default action.\r\n if($target.is('a')) {\r\n event.preventDefault();\r\n }\r\n\r\n // If target is not the
element (ie: a child), find the .\r\n if(!$target.is('li')) {\r\n $target = $target.closest('li');\r\n }\r\n\r\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\r\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\r\n\r\n switch (event.data.message) {\r\n\r\n case 'previous':\r\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\r\n }\r\n break;\r\n\r\n case 'next':\r\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\r\n }\r\n break;\r\n\r\n case 'index':\r\n var index = event.data.index === 0 ? 0 :\r\n event.data.index || $target.index() * _.options.slidesToScroll;\r\n\r\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\r\n $target.children().trigger('focus');\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.checkNavigable = function(index) {\r\n\r\n var _ = this,\r\n navigables, prevNavigable;\r\n\r\n navigables = _.getNavigableIndexes();\r\n prevNavigable = 0;\r\n if (index > navigables[navigables.length - 1]) {\r\n index = navigables[navigables.length - 1];\r\n } else {\r\n for (var n in navigables) {\r\n if (index < navigables[n]) {\r\n index = prevNavigable;\r\n break;\r\n }\r\n prevNavigable = navigables[n];\r\n }\r\n }\r\n\r\n return index;\r\n };\r\n\r\n Slick.prototype.cleanUpEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.dots && _.$dots !== null) {\r\n\r\n $('li', _.$dots)\r\n .off('click.slick', _.changeSlide)\r\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\r\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n _.$slider.off('focus.slick blur.slick');\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\r\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\r\n }\r\n\r\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\r\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\r\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\r\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\r\n\r\n _.$list.off('click.slick', _.clickHandler);\r\n\r\n $(document).off(_.visibilityChange, _.visibility);\r\n\r\n _.cleanUpSlideEvents();\r\n\r\n if (_.options.accessibility === true) {\r\n _.$list.off('keydown.slick', _.keyHandler);\r\n }\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\r\n }\r\n\r\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\r\n\r\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\r\n\r\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\r\n\r\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\r\n $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);\r\n\r\n };\r\n\r\n Slick.prototype.cleanUpSlideEvents = function() {\r\n\r\n var _ = this;\r\n\r\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\r\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n };\r\n\r\n Slick.prototype.cleanUpRows = function() {\r\n\r\n var _ = this, originalSlides;\r\n\r\n if(_.options.rows > 1) {\r\n originalSlides = _.$slides.children().children();\r\n originalSlides.removeAttr('style');\r\n _.$slider.empty().append(originalSlides);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.clickHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n if (_.shouldClick === false) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.destroy = function(refresh) {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n\r\n _.touchObject = {};\r\n\r\n _.cleanUpEvents();\r\n\r\n $('.slick-cloned', _.$slider).detach();\r\n\r\n if (_.$dots) {\r\n _.$dots.remove();\r\n }\r\n\r\n\r\n if ( _.$prevArrow && _.$prevArrow.length ) {\r\n\r\n _.$prevArrow\r\n .removeClass('slick-disabled slick-arrow slick-hidden')\r\n .removeAttr('aria-hidden aria-disabled tabindex')\r\n .css('display','');\r\n\r\n if ( _.htmlExpr.test( _.options.prevArrow )) {\r\n _.$prevArrow.remove();\r\n }\r\n }\r\n\r\n if ( _.$nextArrow && _.$nextArrow.length ) {\r\n\r\n _.$nextArrow\r\n .removeClass('slick-disabled slick-arrow slick-hidden')\r\n .removeAttr('aria-hidden aria-disabled tabindex')\r\n .css('display','');\r\n\r\n if ( _.htmlExpr.test( _.options.nextArrow )) {\r\n _.$nextArrow.remove();\r\n }\r\n\r\n }\r\n\r\n\r\n if (_.$slides) {\r\n\r\n _.$slides\r\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\r\n .removeAttr('aria-hidden')\r\n .removeAttr('data-slick-index')\r\n .each(function(){\r\n $(this).attr('style', $(this).data('originalStyling'));\r\n });\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.detach();\r\n\r\n _.$list.detach();\r\n\r\n _.$slider.append(_.$slides);\r\n }\r\n\r\n _.cleanUpRows();\r\n\r\n _.$slider.removeClass('slick-slider');\r\n _.$slider.removeClass('slick-initialized');\r\n _.$slider.removeClass('slick-dotted');\r\n\r\n _.unslicked = true;\r\n\r\n if(!refresh) {\r\n _.$slider.trigger('destroy', [_]);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.disableTransition = function(slide) {\r\n\r\n var _ = this,\r\n transition = {};\r\n\r\n transition[_.transitionType] = '';\r\n\r\n if (_.options.fade === false) {\r\n _.$slideTrack.css(transition);\r\n } else {\r\n _.$slides.eq(slide).css(transition);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\r\n\r\n var _ = this;\r\n\r\n if (_.cssTransitions === false) {\r\n\r\n _.$slides.eq(slideIndex).css({\r\n zIndex: _.options.zIndex\r\n });\r\n\r\n _.$slides.eq(slideIndex).animate({\r\n opacity: 1\r\n }, _.options.speed, _.options.easing, callback);\r\n\r\n } else {\r\n\r\n _.applyTransition(slideIndex);\r\n\r\n _.$slides.eq(slideIndex).css({\r\n opacity: 1,\r\n zIndex: _.options.zIndex\r\n });\r\n\r\n if (callback) {\r\n setTimeout(function() {\r\n\r\n _.disableTransition(slideIndex);\r\n\r\n callback.call();\r\n }, _.options.speed);\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.fadeSlideOut = function(slideIndex) {\r\n\r\n var _ = this;\r\n\r\n if (_.cssTransitions === false) {\r\n\r\n _.$slides.eq(slideIndex).animate({\r\n opacity: 0,\r\n zIndex: _.options.zIndex - 2\r\n }, _.options.speed, _.options.easing);\r\n\r\n } else {\r\n\r\n _.applyTransition(slideIndex);\r\n\r\n _.$slides.eq(slideIndex).css({\r\n opacity: 0,\r\n zIndex: _.options.zIndex - 2\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\r\n\r\n var _ = this;\r\n\r\n if (filter !== null) {\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.unload();\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\r\n\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.focusHandler = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slider\r\n .off('focus.slick blur.slick')\r\n .on('focus.slick blur.slick',\r\n '*:not(.slick-arrow)', function(event) {\r\n\r\n event.stopImmediatePropagation();\r\n var $sf = $(this);\r\n\r\n setTimeout(function() {\r\n\r\n if( _.options.pauseOnFocus ) {\r\n _.focussed = $sf.is(':focus');\r\n _.autoPlay();\r\n }\r\n\r\n }, 0);\r\n\r\n });\r\n };\r\n\r\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\r\n\r\n var _ = this;\r\n return _.currentSlide;\r\n\r\n };\r\n\r\n Slick.prototype.getDotCount = function() {\r\n\r\n var _ = this;\r\n\r\n var breakPoint = 0;\r\n var counter = 0;\r\n var pagerQty = 0;\r\n\r\n if (_.options.infinite === true) {\r\n while (breakPoint < _.slideCount) {\r\n ++pagerQty;\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n } else if (_.options.centerMode === true) {\r\n pagerQty = _.slideCount;\r\n } else if(!_.options.asNavFor) {\r\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\r\n }else {\r\n while (breakPoint < _.slideCount) {\r\n ++pagerQty;\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n }\r\n\r\n return pagerQty - 1;\r\n\r\n };\r\n\r\n Slick.prototype.getLeft = function(slideIndex) {\r\n\r\n var _ = this,\r\n targetLeft,\r\n verticalHeight,\r\n verticalOffset = 0,\r\n targetSlide;\r\n\r\n _.slideOffset = 0;\r\n verticalHeight = _.$slides.first().outerHeight(true);\r\n\r\n if (_.options.infinite === true) {\r\n if (_.slideCount > _.options.slidesToShow) {\r\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\r\n verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;\r\n }\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\r\n if (slideIndex > _.slideCount) {\r\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\r\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\r\n } else {\r\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\r\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\r\n }\r\n }\r\n }\r\n } else {\r\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\r\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\r\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\r\n }\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n _.slideOffset = 0;\r\n verticalOffset = 0;\r\n }\r\n\r\n if (_.options.centerMode === true && _.options.infinite === true) {\r\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\r\n } else if (_.options.centerMode === true) {\r\n _.slideOffset = 0;\r\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\r\n }\r\n\r\n if (_.options.vertical === false) {\r\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\r\n } else {\r\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\r\n }\r\n\r\n if (_.options.variableWidth === true) {\r\n\r\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\r\n } else {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\r\n }\r\n\r\n if (_.options.rtl === true) {\r\n if (targetSlide[0]) {\r\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\r\n } else {\r\n targetLeft = 0;\r\n }\r\n } else {\r\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\r\n }\r\n\r\n if (_.options.centerMode === true) {\r\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\r\n } else {\r\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\r\n }\r\n\r\n if (_.options.rtl === true) {\r\n if (targetSlide[0]) {\r\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\r\n } else {\r\n targetLeft = 0;\r\n }\r\n } else {\r\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\r\n }\r\n\r\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\r\n }\r\n }\r\n\r\n return targetLeft;\r\n\r\n };\r\n\r\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\r\n\r\n var _ = this;\r\n\r\n return _.options[option];\r\n\r\n };\r\n\r\n Slick.prototype.getNavigableIndexes = function() {\r\n\r\n var _ = this,\r\n breakPoint = 0,\r\n counter = 0,\r\n indexes = [],\r\n max;\r\n\r\n if (_.options.infinite === false) {\r\n max = _.slideCount;\r\n } else {\r\n breakPoint = _.options.slidesToScroll * -1;\r\n counter = _.options.slidesToScroll * -1;\r\n max = _.slideCount * 2;\r\n }\r\n\r\n while (breakPoint < max) {\r\n indexes.push(breakPoint);\r\n breakPoint = counter + _.options.slidesToScroll;\r\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\r\n }\r\n\r\n return indexes;\r\n\r\n };\r\n\r\n Slick.prototype.getSlick = function() {\r\n\r\n return this;\r\n\r\n };\r\n\r\n Slick.prototype.getSlideCount = function() {\r\n\r\n var _ = this,\r\n slidesTraversed, swipedSlide, centerOffset;\r\n\r\n centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\r\n\r\n if (_.options.swipeToSlide === true) {\r\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\r\n if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\r\n swipedSlide = slide;\r\n return false;\r\n }\r\n });\r\n\r\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\r\n\r\n return slidesTraversed;\r\n\r\n } else {\r\n return _.options.slidesToScroll;\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'index',\r\n index: parseInt(slide)\r\n }\r\n }, dontAnimate);\r\n\r\n };\r\n\r\n Slick.prototype.init = function(creation) {\r\n\r\n var _ = this;\r\n\r\n if (!$(_.$slider).hasClass('slick-initialized')) {\r\n\r\n $(_.$slider).addClass('slick-initialized');\r\n\r\n _.buildRows();\r\n _.buildOut();\r\n _.setProps();\r\n _.startLoad();\r\n _.loadSlider();\r\n _.initializeEvents();\r\n _.updateArrows();\r\n _.updateDots();\r\n _.checkResponsive(true);\r\n _.focusHandler();\r\n\r\n }\r\n\r\n if (creation) {\r\n _.$slider.trigger('init', [_]);\r\n }\r\n\r\n if (_.options.accessibility === true) {\r\n _.initADA();\r\n }\r\n\r\n if ( _.options.autoplay ) {\r\n\r\n _.paused = false;\r\n _.autoPlay();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initADA = function() {\r\n var _ = this;\r\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\r\n 'aria-hidden': 'true',\r\n 'tabindex': '-1'\r\n }).find('a, input, button, select').attr({\r\n 'tabindex': '-1'\r\n });\r\n\r\n _.$slideTrack.attr('role', 'listbox');\r\n\r\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\r\n $(this).attr({\r\n 'role': 'option',\r\n 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''\r\n });\r\n });\r\n\r\n if (_.$dots !== null) {\r\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\r\n $(this).attr({\r\n 'role': 'presentation',\r\n 'aria-selected': 'false',\r\n 'aria-controls': 'navigation' + _.instanceUid + i + '',\r\n 'id': 'slick-slide' + _.instanceUid + i + ''\r\n });\r\n })\r\n .first().attr('aria-selected', 'true').end()\r\n .find('button').attr('role', 'button').end()\r\n .closest('div').attr('role', 'toolbar');\r\n }\r\n _.activateADA();\r\n\r\n };\r\n\r\n Slick.prototype.initArrowEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n _.$prevArrow\r\n .off('click.slick')\r\n .on('click.slick', {\r\n message: 'previous'\r\n }, _.changeSlide);\r\n _.$nextArrow\r\n .off('click.slick')\r\n .on('click.slick', {\r\n message: 'next'\r\n }, _.changeSlide);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initDotEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n $('li', _.$dots).on('click.slick', {\r\n message: 'index'\r\n }, _.changeSlide);\r\n }\r\n\r\n if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {\r\n\r\n $('li', _.$dots)\r\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\r\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initSlideEvents = function() {\r\n\r\n var _ = this;\r\n\r\n if ( _.options.pauseOnHover ) {\r\n\r\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\r\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.initializeEvents = function() {\r\n\r\n var _ = this;\r\n\r\n _.initArrowEvents();\r\n\r\n _.initDotEvents();\r\n _.initSlideEvents();\r\n\r\n _.$list.on('touchstart.slick mousedown.slick', {\r\n action: 'start'\r\n }, _.swipeHandler);\r\n _.$list.on('touchmove.slick mousemove.slick', {\r\n action: 'move'\r\n }, _.swipeHandler);\r\n _.$list.on('touchend.slick mouseup.slick', {\r\n action: 'end'\r\n }, _.swipeHandler);\r\n _.$list.on('touchcancel.slick mouseleave.slick', {\r\n action: 'end'\r\n }, _.swipeHandler);\r\n\r\n _.$list.on('click.slick', _.clickHandler);\r\n\r\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\r\n\r\n if (_.options.accessibility === true) {\r\n _.$list.on('keydown.slick', _.keyHandler);\r\n }\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\r\n }\r\n\r\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\r\n\r\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\r\n\r\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\r\n\r\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\r\n $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);\r\n\r\n };\r\n\r\n Slick.prototype.initUI = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$prevArrow.show();\r\n _.$nextArrow.show();\r\n\r\n }\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$dots.show();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.keyHandler = function(event) {\r\n\r\n var _ = this;\r\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\r\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\r\n if (event.keyCode === 37 && _.options.accessibility === true) {\r\n _.changeSlide({\r\n data: {\r\n message: _.options.rtl === true ? 'next' : 'previous'\r\n }\r\n });\r\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\r\n _.changeSlide({\r\n data: {\r\n message: _.options.rtl === true ? 'previous' : 'next'\r\n }\r\n });\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.lazyLoad = function() {\r\n\r\n var _ = this,\r\n loadRange, cloneRange, rangeStart, rangeEnd;\r\n\r\n function loadImages(imagesScope) {\r\n\r\n $('img[data-lazy]', imagesScope).each(function() {\r\n\r\n var image = $(this),\r\n imageSource = $(this).attr('data-lazy'),\r\n imageToLoad = document.createElement('img');\r\n\r\n imageToLoad.onload = function() {\r\n\r\n image\r\n .animate({ opacity: 0 }, 100, function() {\r\n image\r\n .attr('src', imageSource)\r\n .animate({ opacity: 1 }, 200, function() {\r\n image\r\n .removeAttr('data-lazy')\r\n .removeClass('slick-loading');\r\n });\r\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\r\n });\r\n\r\n };\r\n\r\n imageToLoad.onerror = function() {\r\n\r\n image\r\n .removeAttr( 'data-lazy' )\r\n .removeClass( 'slick-loading' )\r\n .addClass( 'slick-lazyload-error' );\r\n\r\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\r\n\r\n };\r\n\r\n imageToLoad.src = imageSource;\r\n\r\n });\r\n\r\n }\r\n\r\n if (_.options.centerMode === true) {\r\n if (_.options.infinite === true) {\r\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\r\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\r\n } else {\r\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\r\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\r\n }\r\n } else {\r\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\r\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\r\n if (_.options.fade === true) {\r\n if (rangeStart > 0) rangeStart--;\r\n if (rangeEnd <= _.slideCount) rangeEnd++;\r\n }\r\n }\r\n\r\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\r\n loadImages(loadRange);\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n cloneRange = _.$slider.find('.slick-slide');\r\n loadImages(cloneRange);\r\n } else\r\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\r\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\r\n loadImages(cloneRange);\r\n } else if (_.currentSlide === 0) {\r\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\r\n loadImages(cloneRange);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.loadSlider = function() {\r\n\r\n var _ = this;\r\n\r\n _.setPosition();\r\n\r\n _.$slideTrack.css({\r\n opacity: 1\r\n });\r\n\r\n _.$slider.removeClass('slick-loading');\r\n\r\n _.initUI();\r\n\r\n if (_.options.lazyLoad === 'progressive') {\r\n _.progressiveLazyLoad();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.next = Slick.prototype.slickNext = function() {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'next'\r\n }\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.orientationChange = function() {\r\n\r\n var _ = this;\r\n\r\n _.checkResponsive();\r\n _.setPosition();\r\n\r\n };\r\n\r\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlayClear();\r\n _.paused = true;\r\n\r\n };\r\n\r\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\r\n\r\n var _ = this;\r\n\r\n _.autoPlay();\r\n _.options.autoplay = true;\r\n _.paused = false;\r\n _.focussed = false;\r\n _.interrupted = false;\r\n\r\n };\r\n\r\n Slick.prototype.postSlide = function(index) {\r\n\r\n var _ = this;\r\n\r\n if( !_.unslicked ) {\r\n\r\n _.$slider.trigger('afterChange', [_, index]);\r\n\r\n _.animating = false;\r\n\r\n _.setPosition();\r\n\r\n _.swipeLeft = null;\r\n\r\n if ( _.options.autoplay ) {\r\n _.autoPlay();\r\n }\r\n\r\n if (_.options.accessibility === true) {\r\n _.initADA();\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\r\n\r\n var _ = this;\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'previous'\r\n }\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.preventDefault = function(event) {\r\n\r\n event.preventDefault();\r\n\r\n };\r\n\r\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\r\n\r\n tryCount = tryCount || 1;\r\n\r\n var _ = this,\r\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\r\n image,\r\n imageSource,\r\n imageToLoad;\r\n\r\n if ( $imgsToLoad.length ) {\r\n\r\n image = $imgsToLoad.first();\r\n imageSource = image.attr('data-lazy');\r\n imageToLoad = document.createElement('img');\r\n\r\n imageToLoad.onload = function() {\r\n\r\n image\r\n .attr( 'src', imageSource )\r\n .removeAttr('data-lazy')\r\n .removeClass('slick-loading');\r\n\r\n if ( _.options.adaptiveHeight === true ) {\r\n _.setPosition();\r\n }\r\n\r\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\r\n _.progressiveLazyLoad();\r\n\r\n };\r\n\r\n imageToLoad.onerror = function() {\r\n\r\n if ( tryCount < 3 ) {\r\n\r\n /**\r\n * try to load the image 3 times,\r\n * leave a slight delay so we don't get\r\n * servers blocking the request.\r\n */\r\n setTimeout( function() {\r\n _.progressiveLazyLoad( tryCount + 1 );\r\n }, 500 );\r\n\r\n } else {\r\n\r\n image\r\n .removeAttr( 'data-lazy' )\r\n .removeClass( 'slick-loading' )\r\n .addClass( 'slick-lazyload-error' );\r\n\r\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\r\n\r\n _.progressiveLazyLoad();\r\n\r\n }\r\n\r\n };\r\n\r\n imageToLoad.src = imageSource;\r\n\r\n } else {\r\n\r\n _.$slider.trigger('allImagesLoaded', [ _ ]);\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.refresh = function( initializing ) {\r\n\r\n var _ = this, currentSlide, lastVisibleIndex;\r\n\r\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\r\n\r\n // in non-infinite sliders, we don't want to go past the\r\n // last visible index.\r\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\r\n _.currentSlide = lastVisibleIndex;\r\n }\r\n\r\n // if less slides than to show, go to start.\r\n if ( _.slideCount <= _.options.slidesToShow ) {\r\n _.currentSlide = 0;\r\n\r\n }\r\n\r\n currentSlide = _.currentSlide;\r\n\r\n _.destroy(true);\r\n\r\n $.extend(_, _.initials, { currentSlide: currentSlide });\r\n\r\n _.init();\r\n\r\n if( !initializing ) {\r\n\r\n _.changeSlide({\r\n data: {\r\n message: 'index',\r\n index: currentSlide\r\n }\r\n }, false);\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.registerBreakpoints = function() {\r\n\r\n var _ = this, breakpoint, currentBreakpoint, l,\r\n responsiveSettings = _.options.responsive || null;\r\n\r\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\r\n\r\n _.respondTo = _.options.respondTo || 'window';\r\n\r\n for ( breakpoint in responsiveSettings ) {\r\n\r\n l = _.breakpoints.length-1;\r\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\r\n\r\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\r\n\r\n // loop through the breakpoints and cut out any existing\r\n // ones with the same breakpoint number, we don't want dupes.\r\n while( l >= 0 ) {\r\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\r\n _.breakpoints.splice(l,1);\r\n }\r\n l--;\r\n }\r\n\r\n _.breakpoints.push(currentBreakpoint);\r\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\r\n\r\n }\r\n\r\n }\r\n\r\n _.breakpoints.sort(function(a, b) {\r\n return ( _.options.mobileFirst ) ? a-b : b-a;\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.reinit = function() {\r\n\r\n var _ = this;\r\n\r\n _.$slides =\r\n _.$slideTrack\r\n .children(_.options.slide)\r\n .addClass('slick-slide');\r\n\r\n _.slideCount = _.$slides.length;\r\n\r\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\r\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n _.currentSlide = 0;\r\n }\r\n\r\n _.registerBreakpoints();\r\n\r\n _.setProps();\r\n _.setupInfinite();\r\n _.buildArrows();\r\n _.updateArrows();\r\n _.initArrowEvents();\r\n _.buildDots();\r\n _.updateDots();\r\n _.initDotEvents();\r\n _.cleanUpSlideEvents();\r\n _.initSlideEvents();\r\n\r\n _.checkResponsive(false, true);\r\n\r\n if (_.options.focusOnSelect === true) {\r\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\r\n }\r\n\r\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\r\n\r\n _.setPosition();\r\n _.focusHandler();\r\n\r\n _.paused = !_.options.autoplay;\r\n _.autoPlay();\r\n\r\n _.$slider.trigger('reInit', [_]);\r\n\r\n };\r\n\r\n Slick.prototype.resize = function() {\r\n\r\n var _ = this;\r\n\r\n if ($(window).width() !== _.windowWidth) {\r\n clearTimeout(_.windowDelay);\r\n _.windowDelay = window.setTimeout(function() {\r\n _.windowWidth = $(window).width();\r\n _.checkResponsive();\r\n if( !_.unslicked ) { _.setPosition(); }\r\n }, 50);\r\n }\r\n };\r\n\r\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\r\n\r\n var _ = this;\r\n\r\n if (typeof(index) === 'boolean') {\r\n removeBefore = index;\r\n index = removeBefore === true ? 0 : _.slideCount - 1;\r\n } else {\r\n index = removeBefore === true ? --index : index;\r\n }\r\n\r\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\r\n return false;\r\n }\r\n\r\n _.unload();\r\n\r\n if (removeAll === true) {\r\n _.$slideTrack.children().remove();\r\n } else {\r\n _.$slideTrack.children(this.options.slide).eq(index).remove();\r\n }\r\n\r\n _.$slides = _.$slideTrack.children(this.options.slide);\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slideTrack.append(_.$slides);\r\n\r\n _.$slidesCache = _.$slides;\r\n\r\n _.reinit();\r\n\r\n };\r\n\r\n Slick.prototype.setCSS = function(position) {\r\n\r\n var _ = this,\r\n positionProps = {},\r\n x, y;\r\n\r\n if (_.options.rtl === true) {\r\n position = -position;\r\n }\r\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\r\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\r\n\r\n positionProps[_.positionProp] = position;\r\n\r\n if (_.transformsEnabled === false) {\r\n _.$slideTrack.css(positionProps);\r\n } else {\r\n positionProps = {};\r\n if (_.cssTransitions === false) {\r\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\r\n _.$slideTrack.css(positionProps);\r\n } else {\r\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\r\n _.$slideTrack.css(positionProps);\r\n }\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setDimensions = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.vertical === false) {\r\n if (_.options.centerMode === true) {\r\n _.$list.css({\r\n padding: ('0px ' + _.options.centerPadding)\r\n });\r\n }\r\n } else {\r\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\r\n if (_.options.centerMode === true) {\r\n _.$list.css({\r\n padding: (_.options.centerPadding + ' 0px')\r\n });\r\n }\r\n }\r\n\r\n _.listWidth = _.$list.width();\r\n _.listHeight = _.$list.height();\r\n\r\n\r\n if (_.options.vertical === false && _.options.variableWidth === false) {\r\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\r\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\r\n\r\n } else if (_.options.variableWidth === true) {\r\n _.$slideTrack.width(5000 * _.slideCount);\r\n } else {\r\n _.slideWidth = Math.ceil(_.listWidth);\r\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\r\n }\r\n\r\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\r\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\r\n\r\n };\r\n\r\n Slick.prototype.setFade = function() {\r\n\r\n var _ = this,\r\n targetLeft;\r\n\r\n _.$slides.each(function(index, element) {\r\n targetLeft = (_.slideWidth * index) * -1;\r\n if (_.options.rtl === true) {\r\n $(element).css({\r\n position: 'relative',\r\n right: targetLeft,\r\n top: 0,\r\n zIndex: _.options.zIndex - 2,\r\n opacity: 0\r\n });\r\n } else {\r\n $(element).css({\r\n position: 'relative',\r\n left: targetLeft,\r\n top: 0,\r\n zIndex: _.options.zIndex - 2,\r\n opacity: 0\r\n });\r\n }\r\n });\r\n\r\n _.$slides.eq(_.currentSlide).css({\r\n zIndex: _.options.zIndex - 1,\r\n opacity: 1\r\n });\r\n\r\n };\r\n\r\n Slick.prototype.setHeight = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\r\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\r\n _.$list.css('height', targetHeight);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setOption =\r\n Slick.prototype.slickSetOption = function() {\r\n\r\n /**\r\n * accepts arguments in format of:\r\n *\r\n * - for changing a single option's value:\r\n * .slick(\"setOption\", option, value, refresh )\r\n *\r\n * - for changing a set of responsive options:\r\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\r\n *\r\n * - for updating multiple values at once (not responsive)\r\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\r\n */\r\n\r\n var _ = this, l, item, option, value, refresh = false, type;\r\n\r\n if( $.type( arguments[0] ) === 'object' ) {\r\n\r\n option = arguments[0];\r\n refresh = arguments[1];\r\n type = 'multiple';\r\n\r\n } else if ( $.type( arguments[0] ) === 'string' ) {\r\n\r\n option = arguments[0];\r\n value = arguments[1];\r\n refresh = arguments[2];\r\n\r\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\r\n\r\n type = 'responsive';\r\n\r\n } else if ( typeof arguments[1] !== 'undefined' ) {\r\n\r\n type = 'single';\r\n\r\n }\r\n\r\n }\r\n\r\n if ( type === 'single' ) {\r\n\r\n _.options[option] = value;\r\n\r\n\r\n } else if ( type === 'multiple' ) {\r\n\r\n $.each( option , function( opt, val ) {\r\n\r\n _.options[opt] = val;\r\n\r\n });\r\n\r\n\r\n } else if ( type === 'responsive' ) {\r\n\r\n for ( item in value ) {\r\n\r\n if( $.type( _.options.responsive ) !== 'array' ) {\r\n\r\n _.options.responsive = [ value[item] ];\r\n\r\n } else {\r\n\r\n l = _.options.responsive.length-1;\r\n\r\n // loop through the responsive object and splice out duplicates.\r\n while( l >= 0 ) {\r\n\r\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\r\n\r\n _.options.responsive.splice(l,1);\r\n\r\n }\r\n\r\n l--;\r\n\r\n }\r\n\r\n _.options.responsive.push( value[item] );\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if ( refresh ) {\r\n\r\n _.unload();\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setPosition = function() {\r\n\r\n var _ = this;\r\n\r\n _.setDimensions();\r\n\r\n _.setHeight();\r\n\r\n if (_.options.fade === false) {\r\n _.setCSS(_.getLeft(_.currentSlide));\r\n } else {\r\n _.setFade();\r\n }\r\n\r\n _.$slider.trigger('setPosition', [_]);\r\n\r\n };\r\n\r\n Slick.prototype.setProps = function() {\r\n\r\n var _ = this,\r\n bodyStyle = document.body.style;\r\n\r\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\r\n\r\n if (_.positionProp === 'top') {\r\n _.$slider.addClass('slick-vertical');\r\n } else {\r\n _.$slider.removeClass('slick-vertical');\r\n }\r\n\r\n if (bodyStyle.WebkitTransition !== undefined ||\r\n bodyStyle.MozTransition !== undefined ||\r\n bodyStyle.msTransition !== undefined) {\r\n if (_.options.useCSS === true) {\r\n _.cssTransitions = true;\r\n }\r\n }\r\n\r\n if ( _.options.fade ) {\r\n if ( typeof _.options.zIndex === 'number' ) {\r\n if( _.options.zIndex < 3 ) {\r\n _.options.zIndex = 3;\r\n }\r\n } else {\r\n _.options.zIndex = _.defaults.zIndex;\r\n }\r\n }\r\n\r\n if (bodyStyle.OTransform !== undefined) {\r\n _.animType = 'OTransform';\r\n _.transformType = '-o-transform';\r\n _.transitionType = 'OTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.MozTransform !== undefined) {\r\n _.animType = 'MozTransform';\r\n _.transformType = '-moz-transform';\r\n _.transitionType = 'MozTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.webkitTransform !== undefined) {\r\n _.animType = 'webkitTransform';\r\n _.transformType = '-webkit-transform';\r\n _.transitionType = 'webkitTransition';\r\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.msTransform !== undefined) {\r\n _.animType = 'msTransform';\r\n _.transformType = '-ms-transform';\r\n _.transitionType = 'msTransition';\r\n if (bodyStyle.msTransform === undefined) _.animType = false;\r\n }\r\n if (bodyStyle.transform !== undefined && _.animType !== false) {\r\n _.animType = 'transform';\r\n _.transformType = 'transform';\r\n _.transitionType = 'transition';\r\n }\r\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\r\n };\r\n\r\n\r\n Slick.prototype.setSlideClasses = function(index) {\r\n\r\n var _ = this,\r\n centerOffset, allSlides, indexOffset, remainder;\r\n\r\n allSlides = _.$slider\r\n .find('.slick-slide')\r\n .removeClass('slick-active slick-center slick-current')\r\n .attr('aria-hidden', 'true');\r\n\r\n _.$slides\r\n .eq(index)\r\n .addClass('slick-current');\r\n\r\n if (_.options.centerMode === true) {\r\n\r\n centerOffset = Math.floor(_.options.slidesToShow / 2);\r\n\r\n if (_.options.infinite === true) {\r\n\r\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\r\n\r\n _.$slides\r\n .slice(index - centerOffset, index + centerOffset + 1)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n indexOffset = _.options.slidesToShow + index;\r\n allSlides\r\n .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n if (index === 0) {\r\n\r\n allSlides\r\n .eq(allSlides.length - 1 - _.options.slidesToShow)\r\n .addClass('slick-center');\r\n\r\n } else if (index === _.slideCount - 1) {\r\n\r\n allSlides\r\n .eq(_.options.slidesToShow)\r\n .addClass('slick-center');\r\n\r\n }\r\n\r\n }\r\n\r\n _.$slides\r\n .eq(index)\r\n .addClass('slick-center');\r\n\r\n } else {\r\n\r\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\r\n\r\n _.$slides\r\n .slice(index, index + _.options.slidesToShow)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else if (allSlides.length <= _.options.slidesToShow) {\r\n\r\n allSlides\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n remainder = _.slideCount % _.options.slidesToShow;\r\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\r\n\r\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\r\n\r\n allSlides\r\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n } else {\r\n\r\n allSlides\r\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (_.options.lazyLoad === 'ondemand') {\r\n _.lazyLoad();\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.setupInfinite = function() {\r\n\r\n var _ = this,\r\n i, slideIndex, infiniteCount;\r\n\r\n if (_.options.fade === true) {\r\n _.options.centerMode = false;\r\n }\r\n\r\n if (_.options.infinite === true && _.options.fade === false) {\r\n\r\n slideIndex = null;\r\n\r\n if (_.slideCount > _.options.slidesToShow) {\r\n\r\n if (_.options.centerMode === true) {\r\n infiniteCount = _.options.slidesToShow + 1;\r\n } else {\r\n infiniteCount = _.options.slidesToShow;\r\n }\r\n\r\n for (i = _.slideCount; i > (_.slideCount -\r\n infiniteCount); i -= 1) {\r\n slideIndex = i - 1;\r\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\r\n .attr('data-slick-index', slideIndex - _.slideCount)\r\n .prependTo(_.$slideTrack).addClass('slick-cloned');\r\n }\r\n for (i = 0; i < infiniteCount; i += 1) {\r\n slideIndex = i;\r\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\r\n .attr('data-slick-index', slideIndex + _.slideCount)\r\n .appendTo(_.$slideTrack).addClass('slick-cloned');\r\n }\r\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\r\n $(this).attr('id', '');\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.interrupt = function( toggle ) {\r\n\r\n var _ = this;\r\n\r\n if( !toggle ) {\r\n _.autoPlay();\r\n }\r\n _.interrupted = toggle;\r\n\r\n };\r\n\r\n Slick.prototype.selectHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n var targetElement =\r\n $(event.target).is('.slick-slide') ?\r\n $(event.target) :\r\n $(event.target).parents('.slick-slide');\r\n\r\n var index = parseInt(targetElement.attr('data-slick-index'));\r\n\r\n if (!index) index = 0;\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n\r\n _.setSlideClasses(index);\r\n _.asNavFor(index);\r\n return;\r\n\r\n }\r\n\r\n _.slideHandler(index);\r\n\r\n };\r\n\r\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\r\n\r\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\r\n _ = this, navTarget;\r\n\r\n sync = sync || false;\r\n\r\n if (_.animating === true && _.options.waitForAnimate === true) {\r\n return;\r\n }\r\n\r\n if (_.options.fade === true && _.currentSlide === index) {\r\n return;\r\n }\r\n\r\n if (_.slideCount <= _.options.slidesToShow) {\r\n return;\r\n }\r\n\r\n if (sync === false) {\r\n _.asNavFor(index);\r\n }\r\n\r\n targetSlide = index;\r\n targetLeft = _.getLeft(targetSlide);\r\n slideLeft = _.getLeft(_.currentSlide);\r\n\r\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\r\n\r\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\r\n if (_.options.fade === false) {\r\n targetSlide = _.currentSlide;\r\n if (dontAnimate !== true) {\r\n _.animateSlide(slideLeft, function() {\r\n _.postSlide(targetSlide);\r\n });\r\n } else {\r\n _.postSlide(targetSlide);\r\n }\r\n }\r\n return;\r\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\r\n if (_.options.fade === false) {\r\n targetSlide = _.currentSlide;\r\n if (dontAnimate !== true) {\r\n _.animateSlide(slideLeft, function() {\r\n _.postSlide(targetSlide);\r\n });\r\n } else {\r\n _.postSlide(targetSlide);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if ( _.options.autoplay ) {\r\n clearInterval(_.autoPlayTimer);\r\n }\r\n\r\n if (targetSlide < 0) {\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\r\n } else {\r\n animSlide = _.slideCount + targetSlide;\r\n }\r\n } else if (targetSlide >= _.slideCount) {\r\n if (_.slideCount % _.options.slidesToScroll !== 0) {\r\n animSlide = 0;\r\n } else {\r\n animSlide = targetSlide - _.slideCount;\r\n }\r\n } else {\r\n animSlide = targetSlide;\r\n }\r\n\r\n _.animating = true;\r\n\r\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\r\n\r\n oldSlide = _.currentSlide;\r\n _.currentSlide = animSlide;\r\n\r\n _.setSlideClasses(_.currentSlide);\r\n\r\n if ( _.options.asNavFor ) {\r\n\r\n navTarget = _.getNavTarget();\r\n navTarget = navTarget.slick('getSlick');\r\n\r\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\r\n navTarget.setSlideClasses(_.currentSlide);\r\n }\r\n\r\n }\r\n\r\n _.updateDots();\r\n _.updateArrows();\r\n\r\n if (_.options.fade === true) {\r\n if (dontAnimate !== true) {\r\n\r\n _.fadeSlideOut(oldSlide);\r\n\r\n _.fadeSlide(animSlide, function() {\r\n _.postSlide(animSlide);\r\n });\r\n\r\n } else {\r\n _.postSlide(animSlide);\r\n }\r\n _.animateHeight();\r\n return;\r\n }\r\n\r\n if (dontAnimate !== true) {\r\n _.animateSlide(targetLeft, function() {\r\n _.postSlide(animSlide);\r\n });\r\n } else {\r\n _.postSlide(animSlide);\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.startLoad = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$prevArrow.hide();\r\n _.$nextArrow.hide();\r\n\r\n }\r\n\r\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\r\n\r\n _.$dots.hide();\r\n\r\n }\r\n\r\n _.$slider.addClass('slick-loading');\r\n\r\n };\r\n\r\n Slick.prototype.swipeDirection = function() {\r\n\r\n var xDist, yDist, r, swipeAngle, _ = this;\r\n\r\n xDist = _.touchObject.startX - _.touchObject.curX;\r\n yDist = _.touchObject.startY - _.touchObject.curY;\r\n r = Math.atan2(yDist, xDist);\r\n\r\n swipeAngle = Math.round(r * 180 / Math.PI);\r\n if (swipeAngle < 0) {\r\n swipeAngle = 360 - Math.abs(swipeAngle);\r\n }\r\n\r\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\r\n return (_.options.rtl === false ? 'left' : 'right');\r\n }\r\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\r\n return (_.options.rtl === false ? 'left' : 'right');\r\n }\r\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\r\n return (_.options.rtl === false ? 'right' : 'left');\r\n }\r\n if (_.options.verticalSwiping === true) {\r\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\r\n return 'down';\r\n } else {\r\n return 'up';\r\n }\r\n }\r\n\r\n return 'vertical';\r\n\r\n };\r\n\r\n Slick.prototype.swipeEnd = function(event) {\r\n\r\n var _ = this,\r\n slideCount,\r\n direction;\r\n\r\n _.dragging = false;\r\n _.interrupted = false;\r\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\r\n\r\n if ( _.touchObject.curX === undefined ) {\r\n return false;\r\n }\r\n\r\n if ( _.touchObject.edgeHit === true ) {\r\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\r\n }\r\n\r\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\r\n\r\n direction = _.swipeDirection();\r\n\r\n switch ( direction ) {\r\n\r\n case 'left':\r\n case 'down':\r\n\r\n slideCount =\r\n _.options.swipeToSlide ?\r\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\r\n _.currentSlide + _.getSlideCount();\r\n\r\n _.currentDirection = 0;\r\n\r\n break;\r\n\r\n case 'right':\r\n case 'up':\r\n\r\n slideCount =\r\n _.options.swipeToSlide ?\r\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\r\n _.currentSlide - _.getSlideCount();\r\n\r\n _.currentDirection = 1;\r\n\r\n break;\r\n\r\n default:\r\n\r\n\r\n }\r\n\r\n if( direction != 'vertical' ) {\r\n\r\n _.slideHandler( slideCount );\r\n _.touchObject = {};\r\n _.$slider.trigger('swipe', [_, direction ]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n if ( _.touchObject.startX !== _.touchObject.curX ) {\r\n\r\n _.slideHandler( _.currentSlide );\r\n _.touchObject = {};\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.swipeHandler = function(event) {\r\n\r\n var _ = this;\r\n\r\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\r\n return;\r\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\r\n return;\r\n }\r\n\r\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\r\n event.originalEvent.touches.length : 1;\r\n\r\n _.touchObject.minSwipe = _.listWidth / _.options\r\n .touchThreshold;\r\n\r\n if (_.options.verticalSwiping === true) {\r\n _.touchObject.minSwipe = _.listHeight / _.options\r\n .touchThreshold;\r\n }\r\n\r\n switch (event.data.action) {\r\n\r\n case 'start':\r\n _.swipeStart(event);\r\n break;\r\n\r\n case 'move':\r\n _.swipeMove(event);\r\n break;\r\n\r\n case 'end':\r\n _.swipeEnd(event);\r\n break;\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.swipeMove = function(event) {\r\n\r\n var _ = this,\r\n edgeWasHit = false,\r\n curLeft, swipeDirection, swipeLength, positionOffset, touches;\r\n\r\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\r\n\r\n if (!_.dragging || touches && touches.length !== 1) {\r\n return false;\r\n }\r\n\r\n curLeft = _.getLeft(_.currentSlide);\r\n\r\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\r\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\r\n\r\n _.touchObject.swipeLength = Math.round(Math.sqrt(\r\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\r\n\r\n if (_.options.verticalSwiping === true) {\r\n _.touchObject.swipeLength = Math.round(Math.sqrt(\r\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\r\n }\r\n\r\n swipeDirection = _.swipeDirection();\r\n\r\n if (swipeDirection === 'vertical') {\r\n return;\r\n }\r\n\r\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\r\n event.preventDefault();\r\n }\r\n\r\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\r\n if (_.options.verticalSwiping === true) {\r\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\r\n }\r\n\r\n\r\n swipeLength = _.touchObject.swipeLength;\r\n\r\n _.touchObject.edgeHit = false;\r\n\r\n if (_.options.infinite === false) {\r\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\r\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\r\n _.touchObject.edgeHit = true;\r\n }\r\n }\r\n\r\n if (_.options.vertical === false) {\r\n _.swipeLeft = curLeft + swipeLength * positionOffset;\r\n } else {\r\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\r\n }\r\n if (_.options.verticalSwiping === true) {\r\n _.swipeLeft = curLeft + swipeLength * positionOffset;\r\n }\r\n\r\n if (_.options.fade === true || _.options.touchMove === false) {\r\n return false;\r\n }\r\n\r\n if (_.animating === true) {\r\n _.swipeLeft = null;\r\n return false;\r\n }\r\n\r\n _.setCSS(_.swipeLeft);\r\n\r\n };\r\n\r\n Slick.prototype.swipeStart = function(event) {\r\n\r\n var _ = this,\r\n touches;\r\n\r\n _.interrupted = true;\r\n\r\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\r\n _.touchObject = {};\r\n return false;\r\n }\r\n\r\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\r\n touches = event.originalEvent.touches[0];\r\n }\r\n\r\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\r\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\r\n\r\n _.dragging = true;\r\n\r\n };\r\n\r\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.$slidesCache !== null) {\r\n\r\n _.unload();\r\n\r\n _.$slideTrack.children(this.options.slide).detach();\r\n\r\n _.$slidesCache.appendTo(_.$slideTrack);\r\n\r\n _.reinit();\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.unload = function() {\r\n\r\n var _ = this;\r\n\r\n $('.slick-cloned', _.$slider).remove();\r\n\r\n if (_.$dots) {\r\n _.$dots.remove();\r\n }\r\n\r\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\r\n _.$prevArrow.remove();\r\n }\r\n\r\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\r\n _.$nextArrow.remove();\r\n }\r\n\r\n _.$slides\r\n .removeClass('slick-slide slick-active slick-visible slick-current')\r\n .attr('aria-hidden', 'true')\r\n .css('width', '');\r\n\r\n };\r\n\r\n Slick.prototype.unslick = function(fromBreakpoint) {\r\n\r\n var _ = this;\r\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\r\n _.destroy();\r\n\r\n };\r\n\r\n Slick.prototype.updateArrows = function() {\r\n\r\n var _ = this,\r\n centerOffset;\r\n\r\n centerOffset = Math.floor(_.options.slidesToShow / 2);\r\n\r\n if ( _.options.arrows === true &&\r\n _.slideCount > _.options.slidesToShow &&\r\n !_.options.infinite ) {\r\n\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n if (_.currentSlide === 0) {\r\n\r\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\r\n\r\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\r\n\r\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\r\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.updateDots = function() {\r\n\r\n var _ = this;\r\n\r\n if (_.$dots !== null) {\r\n\r\n _.$dots\r\n .find('li')\r\n .removeClass('slick-active')\r\n .attr('aria-hidden', 'true');\r\n\r\n _.$dots\r\n .find('li')\r\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\r\n .addClass('slick-active')\r\n .attr('aria-hidden', 'false');\r\n\r\n }\r\n\r\n };\r\n\r\n Slick.prototype.visibility = function() {\r\n\r\n var _ = this;\r\n\r\n if ( _.options.autoplay ) {\r\n\r\n if ( document[_.hidden] ) {\r\n\r\n _.interrupted = true;\r\n\r\n } else {\r\n\r\n _.interrupted = false;\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n $.fn.slick = function() {\r\n var _ = this,\r\n opt = arguments[0],\r\n args = Array.prototype.slice.call(arguments, 1),\r\n l = _.length,\r\n i,\r\n ret;\r\n for (i = 0; i < l; i++) {\r\n if (typeof opt == 'object' || typeof opt == 'undefined')\r\n _[i].slick = new Slick(_[i], opt);\r\n else\r\n ret = _[i].slick[opt].apply(_[i].slick, args);\r\n if (typeof ret != 'undefined') return ret;\r\n }\r\n return _;\r\n };\r\n\r\n}));\r\n","/* jshint -W071, -W074 */\r\n/* global jQuery:false */\r\n\r\n/* Disabled options are:\r\n * W071: This function has too many statements\r\n * W074: This function's cyclomatic complexity is too high\r\n */\r\n\r\n/*\r\n *\tjQuery ezPlus 1.1.6\r\n *\tDemo's and documentation:\r\n *\thttp://igorlino.github.io/elevatezoom-plus/\r\n *\r\n *\tlicensed under MIT license.\r\n *\thttp://en.wikipedia.org/wiki/MIT_License\r\n *\r\n */\r\n\r\nif (typeof Object.create !== 'function') {\r\n Object.create = function (obj) {\r\n function F() {\r\n }\r\n\r\n F.prototype = obj;\r\n return new F();\r\n };\r\n}\r\n\r\n(function ($, window, document, undefined) {\r\n var EZP = {\r\n init: function (options, elem) {\r\n var self = this;\r\n var $galleries;\r\n\r\n self.elem = elem;\r\n self.$elem = $(elem);\r\n\r\n self.imageSrc = self.$elem.data('zoom-image') ? self.$elem.data('zoom-image') : self.$elem.attr('src');\r\n\r\n self.options = $.extend({}, $.fn.ezPlus.options, self.responsiveConfig(options || {}));\r\n\r\n if (!self.options.enabled) {\r\n return;\r\n }\r\n\r\n //TINT OVERRIDE SETTINGS\r\n if (self.options.tint) {\r\n self.options.lensColour = 'none'; //colour of the lens background\r\n self.options.lensOpacity = '1'; //opacity of the lens\r\n }\r\n //INNER OVERRIDE SETTINGS\r\n if (self.options.zoomType === 'inner') {\r\n self.options.showLens = false;\r\n }\r\n\r\n //Remove alt on hover\r\n\r\n self.$elem.parent().removeAttr('title').removeAttr('alt');\r\n\r\n self.zoomImage = self.imageSrc;\r\n\r\n self.refresh(1);\r\n\r\n //Create the image swap from the gallery\r\n $galleries = $(self.options.gallery ? ('#' + self.options.gallery) : self.options.gallerySelector);\r\n $galleries.on('click.zoom', self.options.galleryItem, function (e) {\r\n\r\n //Set a class on the currently active gallery image\r\n if (self.options.galleryActiveClass) {\r\n $(self.options.galleryItem, $galleries).removeClass(self.options.galleryActiveClass);\r\n $(this).addClass(self.options.galleryActiveClass);\r\n }\r\n //stop any link on the a tag from working\r\n if (this.tagName === 'A') {\r\n e.preventDefault();\r\n }\r\n\r\n //call the swap image function\r\n if ($(this).data('zoom-image')) {\r\n self.zoomImagePre = $(this).data('zoom-image');\r\n }\r\n else {\r\n self.zoomImagePre = $(this).data('image');\r\n }\r\n self.swaptheimage($(this).data('image'), self.zoomImagePre);\r\n if (this.tagName === 'A') {\r\n return false;\r\n }\r\n });\r\n },\r\n refresh: function (length) {\r\n var self = this;\r\n\r\n setTimeout(function () {\r\n self.fetch(self.imageSrc);\r\n\r\n }, length || self.options.refresh);\r\n },\r\n fetch: function (imgsrc) {\r\n //get the image\r\n var self = this;\r\n var newImg = new Image();\r\n newImg.onload = function () {\r\n //set the large image dimensions - used to calculte ratio's\r\n self.largeWidth = newImg.width;\r\n self.largeHeight = newImg.height;\r\n //once image is loaded start the calls\r\n self.startZoom();\r\n self.currentImage = self.imageSrc;\r\n //let caller know image has been loaded\r\n self.options.onZoomedImageLoaded(self.$elem);\r\n };\r\n self.setImageSource(newImg, imgsrc); // this must be done AFTER setting onload\r\n\r\n return;\r\n },\r\n setImageSource: function (image, src) {\r\n //sets an image's source.\r\n image.src = src;\r\n },\r\n startZoom: function () {\r\n var self = this;\r\n //get dimensions of the non zoomed image\r\n self.nzWidth = self.$elem.width();\r\n self.nzHeight = self.$elem.height();\r\n\r\n //activated elements\r\n self.isWindowActive = false;\r\n self.isLensActive = false;\r\n self.isTintActive = false;\r\n self.overWindow = false;\r\n\r\n //CrossFade Wrapper\r\n if (self.options.imageCrossfade) {\r\n self.zoomWrap = self.$elem.wrap('
');\r\n self.$elem.css('position', 'absolute');\r\n }\r\n\r\n self.zoomLock = 1;\r\n self.scrollingLock = false;\r\n self.changeBgSize = false;\r\n self.currentZoomLevel = self.options.zoomLevel;\r\n\r\n //get offset of the non zoomed image\r\n self.nzOffset = self.$elem.offset();\r\n //calculate the width ratio of the large/small image\r\n self.widthRatio = (self.largeWidth / self.currentZoomLevel) / self.nzWidth;\r\n self.heightRatio = (self.largeHeight / self.currentZoomLevel) / self.nzHeight;\r\n\r\n function getWindowZoomStyle() {\r\n return 'overflow: hidden;' +\r\n 'background-position: 0px 0px;text-align:center;' +\r\n 'background-color: ' + String(self.options.zoomWindowBgColour) + ';' +\r\n 'width: ' + String(self.options.zoomWindowWidth) + 'px;' +\r\n 'height: ' + String(self.options.zoomWindowHeight) + 'px;' +\r\n 'float: left;' +\r\n 'background-size: ' + self.largeWidth / self.currentZoomLevel + 'px ' + self.largeHeight / self.currentZoomLevel + 'px;' +\r\n 'display: none;z-index:100;' +\r\n 'border: ' + String(self.options.borderSize) + 'px solid ' + self.options.borderColour + ';' +\r\n 'background-repeat: no-repeat;' +\r\n 'position: absolute;';\r\n }\r\n\r\n //if window zoom\r\n if (self.options.zoomType === 'window') {\r\n self.zoomWindowStyle = getWindowZoomStyle();\r\n }\r\n\r\n function getInnerZoomStyle() {\r\n //has a border been put on the image? Lets cater for this\r\n var borderWidth = self.$elem.css('border-left-width');\r\n\r\n return 'overflow: hidden;' +\r\n 'margin-left: ' + String(borderWidth) + ';' +\r\n 'margin-top: ' + String(borderWidth) + ';' +\r\n 'background-position: 0px 0px;' +\r\n 'width: ' + String(self.nzWidth) + 'px;' +\r\n 'height: ' + String(self.nzHeight) + 'px;' +\r\n 'float: left;' +\r\n 'display: none;' +\r\n 'cursor:' + (self.options.cursor) + ';' +\r\n 'px solid ' + self.options.borderColour + ';' +\r\n 'background-repeat: no-repeat;' +\r\n 'position: absolute;';\r\n }\r\n\r\n //if inner zoom\r\n if (self.options.zoomType === 'inner') {\r\n self.zoomWindowStyle = getInnerZoomStyle();\r\n }\r\n\r\n function getWindowLensStyle() {\r\n var lensHeight, lensWidth;\r\n // adjust images less than the window height\r\n\r\n if (self.nzHeight < self.options.zoomWindowHeight / self.heightRatio) {\r\n lensHeight = self.nzHeight;\r\n }\r\n else {\r\n lensHeight = String(self.options.zoomWindowHeight / self.heightRatio);\r\n }\r\n if (self.largeWidth < self.options.zoomWindowWidth) {\r\n lensWidth = self.nzWidth;\r\n }\r\n else {\r\n lensWidth = String(self.options.zoomWindowWidth / self.widthRatio);\r\n }\r\n\r\n return 'background-position: 0px 0px;width: ' + String((self.options.zoomWindowWidth) / self.widthRatio) + 'px;' +\r\n 'height: ' + String((self.options.zoomWindowHeight) / self.heightRatio) +\r\n 'px;float: right;display: none;' +\r\n 'overflow: hidden;' +\r\n 'z-index: 999;' +\r\n 'opacity:' + (self.options.lensOpacity) + ';filter: alpha(opacity = ' + (self.options.lensOpacity * 100) + '); zoom:1;' +\r\n 'width:' + lensWidth + 'px;' +\r\n 'height:' + lensHeight + 'px;' +\r\n 'background-color:' + (self.options.lensColour) + ';' +\r\n 'cursor:' + (self.options.cursor) + ';' +\r\n 'border: ' + (self.options.lensBorderSize) + 'px' +\r\n ' solid ' + (self.options.lensBorderColour) + ';background-repeat: no-repeat;position: absolute;';\r\n }\r\n\r\n //lens style for window zoom\r\n if (self.options.zoomType === 'window') {\r\n self.lensStyle = getWindowLensStyle();\r\n }\r\n\r\n //tint style\r\n self.tintStyle = 'display: block;' +\r\n 'position: absolute;' +\r\n 'background-color: ' + self.options.tintColour + ';' +\r\n 'filter:alpha(opacity=0);' +\r\n 'opacity: 0;' +\r\n 'width: ' + self.nzWidth + 'px;' +\r\n 'height: ' + self.nzHeight + 'px;';\r\n\r\n //lens style for lens zoom with optional round for modern browsers\r\n self.lensRound = '';\r\n\r\n if (self.options.zoomType === 'lens') {\r\n self.lensStyle = 'background-position: 0px 0px;' +\r\n 'float: left;display: none;' +\r\n 'border: ' + String(self.options.borderSize) + 'px solid ' + self.options.borderColour + ';' +\r\n 'width:' + String(self.options.lensSize) + 'px;' +\r\n 'height:' + String(self.options.lensSize) + 'px;' +\r\n 'background-repeat: no-repeat;position: absolute;';\r\n }\r\n\r\n //does not round in all browsers\r\n if (self.options.lensShape === 'round') {\r\n self.lensRound = 'border-top-left-radius: ' + String(self.options.lensSize / 2 + self.options.borderSize) + 'px;' +\r\n 'border-top-right-radius: ' + String(self.options.lensSize / 2 + self.options.borderSize) + 'px;' +\r\n 'border-bottom-left-radius: ' + String(self.options.lensSize / 2 + self.options.borderSize) + 'px;' +\r\n 'border-bottom-right-radius: ' + String(self.options.lensSize / 2 + self.options.borderSize) + 'px;';\r\n }\r\n\r\n //create the div's + \"\"\r\n //self.zoomContainer = $('
').addClass('zoomContainer').css({\"position\":\"relative\", \"height\":self.nzHeight, \"width\":self.nzWidth});\r\n\r\n self.zoomContainer =\r\n $('
');\r\n $(self.options.zoomContainerAppendTo).append(self.zoomContainer);\r\n\r\n //this will add overflow hidden and contrain the lens on lens mode\r\n if (self.options.containLensZoom && self.options.zoomType === 'lens') {\r\n self.zoomContainer.css('overflow', 'hidden');\r\n }\r\n if (self.options.zoomType !== 'inner') {\r\n self.zoomLens = $('
')\r\n .appendTo(self.zoomContainer)\r\n .click(function () {\r\n self.$elem.trigger('click');\r\n });\r\n\r\n if (self.options.tint) {\r\n self.tintContainer = $('
').addClass('tintContainer');\r\n self.zoomTint = $('
');\r\n\r\n self.zoomLens.wrap(self.tintContainer);\r\n\r\n self.zoomTintcss = self.zoomLens.after(self.zoomTint);\r\n\r\n //if tint enabled - set an image to show over the tint\r\n\r\n self.zoomTintImage = $(' ')\r\n .appendTo(self.zoomLens)\r\n .click(function () {\r\n\r\n self.$elem.trigger('click');\r\n });\r\n }\r\n }\r\n\r\n var targetZoomContainer = isNaN(self.options.zoomWindowPosition) ? 'body' : self.zoomContainer;\r\n //create zoom window\r\n self.zoomWindow = $('
')\r\n .appendTo(targetZoomContainer).click(function () {\r\n self.$elem.trigger('click');\r\n });\r\n self.zoomWindowContainer = $('
').addClass('zoomWindowContainer').css('width', self.options.zoomWindowWidth);\r\n self.zoomWindow.wrap(self.zoomWindowContainer);\r\n\r\n // self.captionStyle = \"text-align: left;background-color: black;'+\r\n // 'color: white;font-weight: bold;padding: 10px;font-family: sans-serif;font-size: 11px\";\r\n // self.zoomCaption = $('INSERT ALT TAG
').appendTo(self.zoomWindow.parent());\r\n\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-image', 'url(\"' + self.imageSrc + '\")');\r\n }\r\n if (self.options.zoomType === 'window') {\r\n self.zoomWindow.css('background-image', 'url(\"' + self.imageSrc + '\")');\r\n }\r\n if (self.options.zoomType === 'inner') {\r\n self.zoomWindow.css('background-image', 'url(\"' + self.imageSrc + '\")');\r\n }\r\n\r\n /*-------------------END THE ZOOM WINDOW AND LENS----------------------------------*/\r\n if (self.options.touchEnabled) {\r\n //touch events\r\n self.$elem.bind('touchmove', function (e) {\r\n e.preventDefault();\r\n var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\r\n self.setPosition(touch);\r\n });\r\n self.zoomContainer.bind('touchmove', function (e) {\r\n if (self.options.zoomType === 'inner') {\r\n self.showHideWindow('show');\r\n\r\n }\r\n e.preventDefault();\r\n var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\r\n self.setPosition(touch);\r\n\r\n });\r\n self.zoomContainer.bind('touchend', function (e) {\r\n self.showHideWindow('hide');\r\n if (self.options.showLens) {\r\n self.showHideLens('hide');\r\n }\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.showHideTint('hide');\r\n }\r\n });\r\n\r\n self.$elem.bind('touchend', function (e) {\r\n self.showHideWindow('hide');\r\n if (self.options.showLens) {\r\n self.showHideLens('hide');\r\n }\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.showHideTint('hide');\r\n }\r\n });\r\n if (self.options.showLens) {\r\n self.zoomLens.bind('touchmove', function (e) {\r\n\r\n e.preventDefault();\r\n var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\r\n self.setPosition(touch);\r\n });\r\n\r\n self.zoomLens.bind('touchend', function (e) {\r\n self.showHideWindow('hide');\r\n if (self.options.showLens) {\r\n self.showHideLens('hide');\r\n }\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.showHideTint('hide');\r\n }\r\n });\r\n }\r\n }\r\n //Needed to work in IE\r\n self.$elem.bind('mousemove', function (e) {\r\n if (self.overWindow === false) {\r\n self.setElements('show');\r\n }\r\n //make sure on orientation change the setposition is not fired\r\n if (self.lastX !== e.clientX || self.lastY !== e.clientY) {\r\n self.setPosition(e);\r\n self.currentLoc = e;\r\n }\r\n self.lastX = e.clientX;\r\n self.lastY = e.clientY;\r\n\r\n });\r\n\r\n self.zoomContainer.bind('click', self.options.onImageClick);\r\n\r\n self.zoomContainer.bind('mousemove', function (e) {\r\n if (self.overWindow === false) {\r\n self.setElements('show');\r\n }\r\n mouseMoveZoomHandler(e);\r\n });\r\n\r\n function mouseMoveZoomHandler(e) {\r\n //self.overWindow = true;\r\n //make sure on orientation change the setposition is not fired\r\n if (self.lastX !== e.clientX || self.lastY !== e.clientY) {\r\n self.setPosition(e);\r\n self.currentLoc = e;\r\n }\r\n self.lastX = e.clientX;\r\n self.lastY = e.clientY;\r\n }\r\n\r\n var elementToTrack = null;\r\n if (self.options.zoomType !== 'inner') {\r\n elementToTrack = self.zoomLens;\r\n }\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n elementToTrack = self.zoomTint;\r\n }\r\n if (self.options.zoomType === 'inner') {\r\n elementToTrack = self.zoomWindow;\r\n }\r\n\r\n //register the mouse tracking\r\n if (elementToTrack) {\r\n elementToTrack.bind('mousemove', mouseMoveZoomHandler);\r\n }\r\n\r\n // lensFadeOut: 500, zoomTintFadeIn\r\n self.zoomContainer.add(self.$elem).mouseenter(function () {\r\n if (self.overWindow === false) {\r\n self.setElements('show');\r\n }\r\n }).mouseleave(function () {\r\n if (!self.scrollLock) {\r\n self.setElements('hide');\r\n self.options.onDestroy(self.$elem);\r\n }\r\n });\r\n //end ove image\r\n\r\n if (self.options.zoomType !== 'inner') {\r\n self.zoomWindow.mouseenter(function () {\r\n self.overWindow = true;\r\n self.setElements('hide');\r\n }).mouseleave(function () {\r\n self.overWindow = false;\r\n });\r\n }\r\n //end ove image\r\n\r\n // var delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);\r\n\r\n // $(this).empty();\r\n // return false;\r\n\r\n //fix for initial zoom setting\r\n //if (self.options.zoomLevel !== 1) {\r\n // \tself.changeZoomLevel(self.currentZoomLevel);\r\n //}\r\n //set the min zoomlevel\r\n if (self.options.minZoomLevel) {\r\n self.minZoomLevel = self.options.minZoomLevel;\r\n }\r\n else {\r\n self.minZoomLevel = self.options.scrollZoomIncrement * 2;\r\n }\r\n\r\n if (self.options.scrollZoom) {\r\n self.zoomContainer.add(self.$elem).bind('wheel DOMMouseScroll MozMousePixelScroll', function (e) {\r\n // in IE there is issue with firing of mouseleave - So check whether still scrolling\r\n // and on mouseleave check if scrolllock\r\n self.scrollLock = true;\r\n clearTimeout($.data(this, 'timer'));\r\n $.data(this, 'timer', setTimeout(function () {\r\n self.scrollLock = false;\r\n //do something\r\n }, 250));\r\n\r\n var theEvent = e.originalEvent.deltaY || e.originalEvent.detail * -1;\r\n\r\n //this.scrollTop += ( delta < 0 ? 1 : -1 ) * 30;\r\n // e.preventDefault();\r\n\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (theEvent / 120 > 0) {\r\n //scrolling up\r\n if (self.currentZoomLevel >= self.minZoomLevel) {\r\n self.changeZoomLevel(self.currentZoomLevel - self.options.scrollZoomIncrement);\r\n }\r\n }\r\n else {\r\n //scrolling down\r\n\r\n //Check if it has to maintain original zoom window aspect ratio or not\r\n if ((!self.fullheight && !self.fullwidth) || !self.options.mantainZoomAspectRatio) {\r\n if (self.options.maxZoomLevel) {\r\n if (self.currentZoomLevel <= self.options.maxZoomLevel) {\r\n self.changeZoomLevel(parseFloat(self.currentZoomLevel) + self.options.scrollZoomIncrement);\r\n }\r\n }\r\n else {\r\n //andy\r\n self.changeZoomLevel(parseFloat(self.currentZoomLevel) + self.options.scrollZoomIncrement);\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n },\r\n setElements: function (type) {\r\n var self = this;\r\n if (!self.options.zoomEnabled) {\r\n return false;\r\n }\r\n if (type === 'show') {\r\n if (self.isWindowSet) {\r\n if (self.options.zoomType === 'inner') {\r\n self.showHideWindow('show');\r\n }\r\n if (self.options.zoomType === 'window') {\r\n self.showHideWindow('show');\r\n }\r\n if (self.options.showLens) {\r\n self.showHideLens('show');\r\n }\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.showHideTint('show');\r\n }\r\n }\r\n }\r\n\r\n if (type === 'hide') {\r\n if (self.options.zoomType === 'window') {\r\n self.showHideWindow('hide');\r\n }\r\n if (!self.options.tint) {\r\n self.showHideWindow('hide');\r\n }\r\n if (self.options.showLens) {\r\n self.showHideLens('hide');\r\n }\r\n if (self.options.tint) {\r\n self.showHideTint('hide');\r\n }\r\n }\r\n },\r\n setPosition: function (e) {\r\n\r\n var self = this;\r\n\r\n if (!self.options.zoomEnabled) {\r\n return false;\r\n }\r\n\r\n //recaclc offset each time in case the image moves\r\n //this can be caused by other on page elements\r\n self.nzHeight = self.$elem.height();\r\n self.nzWidth = self.$elem.width();\r\n self.nzOffset = self.$elem.offset();\r\n\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.zoomTint.css({\r\n top: 0,\r\n left: 0\r\n });\r\n }\r\n //set responsive\r\n //will checking if the image needs changing before running this code work faster?\r\n if (self.options.responsive && !self.options.scrollZoom) {\r\n if (self.options.showLens) {\r\n var lensHeight, lensWidth;\r\n if (self.nzHeight < self.options.zoomWindowWidth / self.widthRatio) {\r\n lensHeight = self.nzHeight;\r\n }\r\n else {\r\n lensHeight = String((self.options.zoomWindowHeight / self.heightRatio));\r\n }\r\n if (self.largeWidth < self.options.zoomWindowWidth) {\r\n lensWidth = self.nzWidth;\r\n }\r\n else {\r\n lensWidth = (self.options.zoomWindowWidth / self.widthRatio);\r\n }\r\n self.widthRatio = self.largeWidth / self.nzWidth;\r\n self.heightRatio = self.largeHeight / self.nzHeight;\r\n if (self.options.zoomType !== 'lens') {\r\n //possibly dont need to keep recalcalculating\r\n //if the lens is heigher than the image, then set lens size to image size\r\n if (self.nzHeight < self.options.zoomWindowWidth / self.widthRatio) {\r\n lensHeight = self.nzHeight;\r\n\r\n }\r\n else {\r\n lensHeight = String((self.options.zoomWindowHeight / self.heightRatio));\r\n }\r\n\r\n if (self.nzWidth < self.options.zoomWindowHeight / self.heightRatio) {\r\n lensWidth = self.nzWidth;\r\n }\r\n else {\r\n lensWidth = String((self.options.zoomWindowWidth / self.widthRatio));\r\n }\r\n\r\n self.zoomLens.css({\r\n 'width': lensWidth,\r\n 'height': lensHeight\r\n });\r\n\r\n if (self.options.tint) {\r\n self.zoomTintImage.css({\r\n 'width': self.nzWidth,\r\n 'height': self.nzHeight\r\n });\r\n }\r\n\r\n }\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css({\r\n width: String(self.options.lensSize) + 'px',\r\n height: String(self.options.lensSize) + 'px'\r\n });\r\n }\r\n //end responsive image change\r\n }\r\n }\r\n\r\n //container fix\r\n self.zoomContainer.css({\r\n top: self.nzOffset.top,\r\n left: self.nzOffset.left\r\n });\r\n self.mouseLeft = parseInt(e.pageX - self.nzOffset.left);\r\n self.mouseTop = parseInt(e.pageY - self.nzOffset.top);\r\n //calculate the Location of the Lens\r\n\r\n //calculate the bound regions - but only if zoom window\r\n if (self.options.zoomType === 'window') {\r\n var zoomLensHeight = self.zoomLens.height() / 2;\r\n var zoomLensWidth = self.zoomLens.width() / 2;\r\n self.Etoppos = (self.mouseTop < 0 + zoomLensHeight);\r\n self.Eboppos = (self.mouseTop > self.nzHeight - zoomLensHeight - (self.options.lensBorderSize * 2));\r\n self.Eloppos = (self.mouseLeft < 0 + zoomLensWidth);\r\n self.Eroppos = (self.mouseLeft > (self.nzWidth - zoomLensWidth - (self.options.lensBorderSize * 2)));\r\n }\r\n //calculate the bound regions - but only for inner zoom\r\n if (self.options.zoomType === 'inner') {\r\n self.Etoppos = (self.mouseTop < ((self.nzHeight / 2) / self.heightRatio));\r\n self.Eboppos = (self.mouseTop > (self.nzHeight - ((self.nzHeight / 2) / self.heightRatio)));\r\n self.Eloppos = (self.mouseLeft < 0 + (((self.nzWidth / 2) / self.widthRatio)));\r\n self.Eroppos = (self.mouseLeft > (self.nzWidth - (self.nzWidth / 2) / self.widthRatio - (self.options.lensBorderSize * 2)));\r\n }\r\n\r\n // if the mouse position of the slider is one of the outerbounds, then hide window and lens\r\n if (self.mouseLeft < 0 || self.mouseTop < 0 || self.mouseLeft > self.nzWidth || self.mouseTop > self.nzHeight) {\r\n self.setElements('hide');\r\n return;\r\n }\r\n //else continue with operations\r\n else {\r\n //lens options\r\n if (self.options.showLens) {\r\n //\t\tself.showHideLens('show');\r\n //set background position of lens\r\n self.lensLeftPos = String(Math.floor(self.mouseLeft - self.zoomLens.width() / 2));\r\n self.lensTopPos = String(Math.floor(self.mouseTop - self.zoomLens.height() / 2));\r\n }\r\n //adjust the background position if the mouse is in one of the outer regions\r\n\r\n //Top region\r\n if (self.Etoppos) {\r\n self.lensTopPos = 0;\r\n }\r\n //Left Region\r\n if (self.Eloppos) {\r\n self.windowLeftPos = 0;\r\n self.lensLeftPos = 0;\r\n self.tintpos = 0;\r\n }\r\n //Set bottom and right region for window mode\r\n if (self.options.zoomType === 'window') {\r\n if (self.Eboppos) {\r\n self.lensTopPos = Math.max((self.nzHeight) - self.zoomLens.height() - (self.options.lensBorderSize * 2), 0);\r\n }\r\n if (self.Eroppos) {\r\n self.lensLeftPos = (self.nzWidth - (self.zoomLens.width()) - (self.options.lensBorderSize * 2));\r\n }\r\n }\r\n //Set bottom and right region for inner mode\r\n if (self.options.zoomType === 'inner') {\r\n if (self.Eboppos) {\r\n self.lensTopPos = Math.max(((self.nzHeight) - (self.options.lensBorderSize * 2)), 0);\r\n }\r\n if (self.Eroppos) {\r\n self.lensLeftPos = (self.nzWidth - (self.nzWidth) - (self.options.lensBorderSize * 2));\r\n }\r\n }\r\n //if lens zoom\r\n if (self.options.zoomType === 'lens') {\r\n\r\n self.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomLens.width() / 2) * (-1));\r\n self.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomLens.height() / 2) * (-1));\r\n self.zoomLens.css('background-position', self.windowLeftPos + 'px ' + self.windowTopPos + 'px');\r\n\r\n if (self.changeBgSize) {\r\n if (self.nzHeight > self.nzWidth) {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n else {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n self.changeBgSize = false;\r\n }\r\n\r\n self.setWindowPosition(e);\r\n }\r\n //if tint zoom\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n self.setTintPosition(e);\r\n }\r\n //set the css background position\r\n if (self.options.zoomType === 'window') {\r\n self.setWindowPosition(e);\r\n }\r\n if (self.options.zoomType === 'inner') {\r\n self.setWindowPosition(e);\r\n }\r\n if (self.options.showLens) {\r\n if (self.fullwidth && self.options.zoomType !== 'lens') {\r\n self.lensLeftPos = 0;\r\n }\r\n self.zoomLens.css({\r\n left: self.lensLeftPos + 'px',\r\n top: self.lensTopPos + 'px'\r\n });\r\n }\r\n\r\n } //end else\r\n },\r\n showHideZoomContainer: function (change) {\r\n var self = this;\r\n if (change === 'show') {\r\n if (self.zoomContainer) {\r\n self.zoomContainer.show();\r\n }\r\n }\r\n if (change === 'hide') {\r\n if (self.zoomContainer) {\r\n self.zoomContainer.hide();\r\n }\r\n }\r\n },\r\n showHideWindow: function (change) {\r\n var self = this;\r\n if (change === 'show') {\r\n if (!self.isWindowActive && self.zoomWindow) {\r\n self.options.onShow(self);\r\n if (self.options.zoomWindowFadeIn) {\r\n self.zoomWindow.stop(true, true, false).fadeIn(self.options.zoomWindowFadeIn);\r\n }\r\n else {\r\n self.zoomWindow.show();\r\n }\r\n self.isWindowActive = true;\r\n }\r\n }\r\n if (change === 'hide') {\r\n if (self.isWindowActive) {\r\n if (self.options.zoomWindowFadeOut) {\r\n self.zoomWindow.stop(true, true).fadeOut(self.options.zoomWindowFadeOut, function () {\r\n if (self.loop) {\r\n //stop moving the zoom window when zoom window is faded out\r\n clearInterval(self.loop);\r\n self.loop = false;\r\n }\r\n });\r\n }\r\n else {\r\n self.zoomWindow.hide();\r\n }\r\n self.isWindowActive = false;\r\n }\r\n }\r\n },\r\n showHideLens: function (change) {\r\n var self = this;\r\n if (change === 'show') {\r\n if (!self.isLensActive) {\r\n if (self.options.lensFadeIn && self.zoomLens) {\r\n self.zoomLens.stop(true, true, false).fadeIn(self.options.lensFadeIn);\r\n }\r\n else {\r\n self.zoomLens.show();\r\n }\r\n self.isLensActive = true;\r\n }\r\n }\r\n if (change === 'hide') {\r\n if (self.isLensActive) {\r\n if (self.options.lensFadeOut) {\r\n self.zoomLens.stop(true, true).fadeOut(self.options.lensFadeOut);\r\n }\r\n else {\r\n self.zoomLens.hide();\r\n }\r\n self.isLensActive = false;\r\n }\r\n }\r\n },\r\n showHideTint: function (change) {\r\n var self = this;\r\n if (change === 'show') {\r\n if (!self.isTintActive && self.zoomTint) {\r\n\r\n if (self.options.zoomTintFadeIn) {\r\n self.zoomTint.css('opacity', self.options.tintOpacity).animate().stop(true, true).fadeIn('slow');\r\n }\r\n else {\r\n self.zoomTint.css('opacity', self.options.tintOpacity).animate();\r\n self.zoomTint.show();\r\n }\r\n self.isTintActive = true;\r\n }\r\n }\r\n if (change === 'hide') {\r\n if (self.isTintActive) {\r\n\r\n if (self.options.zoomTintFadeOut) {\r\n self.zoomTint.stop(true, true).fadeOut(self.options.zoomTintFadeOut);\r\n }\r\n else {\r\n self.zoomTint.hide();\r\n }\r\n self.isTintActive = false;\r\n }\r\n }\r\n },\r\n\r\n setLensPosition: function (e) {\r\n },\r\n\r\n setWindowPosition: function (e) {\r\n //return obj.slice( 0, count );\r\n var self = this;\r\n\r\n if (!isNaN(self.options.zoomWindowPosition)) {\r\n\r\n switch (self.options.zoomWindowPosition) {\r\n case 1: //done\r\n self.windowOffsetTop = (self.options.zoomWindowOffsetY);//DONE - 1\r\n self.windowOffsetLeft = (+self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n break;\r\n case 2:\r\n if (self.options.zoomWindowHeight > self.nzHeight) { //positive margin\r\n\r\n self.windowOffsetTop = ((self.options.zoomWindowHeight / 2) - (self.nzHeight / 2)) * (-1);\r\n self.windowOffsetLeft = (self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n }\r\n else { //negative margin\r\n $.noop();\r\n }\r\n break;\r\n case 3: //done\r\n self.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize * 2)); //DONE 3,9\r\n self.windowOffsetLeft = (self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n break;\r\n case 4: //done\r\n self.windowOffsetTop = (self.nzHeight); //DONE - 4,5,6,7,8\r\n self.windowOffsetLeft = (self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n break;\r\n case 5: //done\r\n self.windowOffsetTop = (self.nzHeight); //DONE - 4,5,6,7,8\r\n self.windowOffsetLeft = (self.nzWidth - self.zoomWindow.width() - (self.options.borderSize * 2)); //DONE - 5,15\r\n break;\r\n case 6:\r\n if (self.options.zoomWindowHeight > self.nzHeight) { //positive margin\r\n self.windowOffsetTop = (self.nzHeight); //DONE - 4,5,6,7,8\r\n\r\n self.windowOffsetLeft = ((self.options.zoomWindowWidth / 2) - (self.nzWidth / 2) + (self.options.borderSize * 2)) * (-1);\r\n }\r\n else { //negative margin\r\n $.noop();\r\n }\r\n\r\n break;\r\n case 7: //done\r\n self.windowOffsetTop = (self.nzHeight); //DONE - 4,5,6,7,8\r\n self.windowOffsetLeft = 0; //DONE 7, 13\r\n break;\r\n case 8: //done\r\n self.windowOffsetTop = (self.nzHeight); //DONE - 4,5,6,7,8\r\n self.windowOffsetLeft = (self.zoomWindow.width() + (self.options.borderSize * 2)) * (-1); //DONE 8,9,10,11,12\r\n break;\r\n case 9: //done\r\n self.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize * 2)); //DONE 3,9\r\n self.windowOffsetLeft = (self.zoomWindow.width() + (self.options.borderSize * 2)) * (-1); //DONE 8,9,10,11,12\r\n break;\r\n case 10:\r\n if (self.options.zoomWindowHeight > self.nzHeight) { //positive margin\r\n\r\n self.windowOffsetTop = ((self.options.zoomWindowHeight / 2) - (self.nzHeight / 2)) * (-1);\r\n self.windowOffsetLeft = (self.zoomWindow.width() + (self.options.borderSize * 2)) * (-1); //DONE 8,9,10,11,12\r\n }\r\n else { //negative margin\r\n $.noop();\r\n }\r\n break;\r\n case 11:\r\n self.windowOffsetTop = (self.options.zoomWindowOffsetY);\r\n self.windowOffsetLeft = (self.zoomWindow.width() + (self.options.borderSize * 2)) * (-1); //DONE 8,9,10,11,12\r\n break;\r\n case 12: //done\r\n self.windowOffsetTop = (self.zoomWindow.height() + (self.options.borderSize * 2)) * (-1); //DONE 12,13,14,15,16\r\n self.windowOffsetLeft = (self.zoomWindow.width() + (self.options.borderSize * 2)) * (-1); //DONE 8,9,10,11,12\r\n break;\r\n case 13: //done\r\n self.windowOffsetTop = (self.zoomWindow.height() + (self.options.borderSize * 2)) * (-1); //DONE 12,13,14,15,16\r\n self.windowOffsetLeft = (0); //DONE 7, 13\r\n break;\r\n case 14:\r\n if (self.options.zoomWindowHeight > self.nzHeight) { //positive margin\r\n self.windowOffsetTop = (self.zoomWindow.height() + (self.options.borderSize * 2)) * (-1); //DONE 12,13,14,15,16\r\n\r\n self.windowOffsetLeft = ((self.options.zoomWindowWidth / 2) - (self.nzWidth / 2) + (self.options.borderSize * 2)) * (-1);\r\n }\r\n else { //negative margin\r\n $.noop();\r\n }\r\n break;\r\n case 15://done\r\n self.windowOffsetTop = (self.zoomWindow.height() + (self.options.borderSize * 2)) * (-1); //DONE 12,13,14,15,16\r\n self.windowOffsetLeft = (self.nzWidth - self.zoomWindow.width() - (self.options.borderSize * 2)); //DONE - 5,15\r\n break;\r\n case 16: //done\r\n self.windowOffsetTop = (self.zoomWindow.height() + (self.options.borderSize * 2)) * (-1); //DONE 12,13,14,15,16\r\n self.windowOffsetLeft = (self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n break;\r\n default: //done\r\n self.windowOffsetTop = (self.options.zoomWindowOffsetY);//DONE - 1\r\n self.windowOffsetLeft = (self.nzWidth); //DONE 1, 2, 3, 4, 16\r\n }\r\n } //end isNAN\r\n else {\r\n //WE CAN POSITION IN A CLASS - ASSUME THAT ANY STRING PASSED IS\r\n self.externalContainer = $('#' + self.options.zoomWindowPosition);\r\n self.externalContainerWidth = self.externalContainer.width();\r\n self.externalContainerHeight = self.externalContainer.height();\r\n self.externalContainerOffset = self.externalContainer.offset();\r\n\r\n self.windowOffsetTop = self.externalContainerOffset.top;//DONE - 1\r\n self.windowOffsetLeft = self.externalContainerOffset.left; //DONE 1, 2, 3, 4, 16\r\n\r\n }\r\n self.isWindowSet = true;\r\n self.windowOffsetTop = self.windowOffsetTop + self.options.zoomWindowOffsetY;\r\n self.windowOffsetLeft = self.windowOffsetLeft + self.options.zoomWindowOffsetX;\r\n\r\n self.zoomWindow.css({\r\n top: self.windowOffsetTop,\r\n left: self.windowOffsetLeft\r\n });\r\n\r\n if (self.options.zoomType === 'inner') {\r\n self.zoomWindow.css({\r\n top: 0,\r\n left: 0\r\n });\r\n\r\n }\r\n\r\n self.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() / 2) * (-1));\r\n self.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() / 2) * (-1));\r\n if (self.Etoppos) {\r\n self.windowTopPos = 0;\r\n }\r\n if (self.Eloppos) {\r\n self.windowLeftPos = 0;\r\n }\r\n if (self.Eboppos) {\r\n self.windowTopPos = (self.largeHeight / self.currentZoomLevel - self.zoomWindow.height()) * (-1);\r\n }\r\n if (self.Eroppos) {\r\n self.windowLeftPos = ((self.largeWidth / self.currentZoomLevel - self.zoomWindow.width()) * (-1));\r\n }\r\n\r\n //stops micro movements\r\n if (self.fullheight) {\r\n self.windowTopPos = 0;\r\n }\r\n if (self.fullwidth) {\r\n self.windowLeftPos = 0;\r\n }\r\n\r\n //set the css background position\r\n if (self.options.zoomType === 'window' || self.options.zoomType === 'inner') {\r\n\r\n if (self.zoomLock === 1) {\r\n //overrides for images not zoomable\r\n if (self.widthRatio <= 1) {\r\n self.windowLeftPos = 0;\r\n }\r\n if (self.heightRatio <= 1) {\r\n self.windowTopPos = 0;\r\n }\r\n }\r\n // adjust images less than the window height\r\n\r\n if (self.options.zoomType === 'window') {\r\n if (self.largeHeight < self.options.zoomWindowHeight) {\r\n self.windowTopPos = 0;\r\n }\r\n if (self.largeWidth < self.options.zoomWindowWidth) {\r\n self.windowLeftPos = 0;\r\n }\r\n }\r\n //set the zoomwindow background position\r\n if (self.options.easing) {\r\n\r\n // if(self.changeZoom){\r\n // clearInterval(self.loop);\r\n // self.changeZoom = false;\r\n // self.loop = false;\r\n\r\n // }\r\n //set the pos to 0 if not set\r\n if (!self.xp) {\r\n self.xp = 0;\r\n }\r\n if (!self.yp) {\r\n self.yp = 0;\r\n }\r\n //if loop not already started, then run it\r\n if (!self.loop) {\r\n self.loop = setInterval(function () {\r\n //using zeno's paradox\r\n\r\n self.xp += (self.windowLeftPos - self.xp) / self.options.easingAmount;\r\n self.yp += (self.windowTopPos - self.yp) / self.options.easingAmount;\r\n if (self.scrollingLock) {\r\n\r\n clearInterval(self.loop);\r\n self.xp = self.windowLeftPos;\r\n self.yp = self.windowTopPos;\r\n\r\n self.xp = ((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() / 2) * (-1);\r\n self.yp = (((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() / 2) * (-1));\r\n\r\n if (self.changeBgSize) {\r\n if (self.nzHeight > self.nzWidth) {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n else {\r\n if (self.options.zoomType !== 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n\r\n /*\r\n if(!self.bgxp){self.bgxp = self.largeWidth/self.newvalue;}\r\n if(!self.bgyp){self.bgyp = self.largeHeight/self.newvalue ;}\r\n if (!self.bgloop){\r\n self.bgloop = setInterval(function(){\r\n\r\n self.bgxp += (self.largeWidth/self.newvalue - self.bgxp) / self.options.easingAmount;\r\n self.bgyp += (self.largeHeight/self.newvalue - self.bgyp) / self.options.easingAmount;\r\n\r\n self.zoomWindow.css('background-size', self.bgxp + 'px ' + self.bgyp + 'px' );\r\n\r\n\r\n }, 16);\r\n\r\n }\r\n */\r\n self.changeBgSize = false;\r\n }\r\n\r\n self.zoomWindow.css('background-position', self.windowLeftPos + 'px ' + self.windowTopPos + 'px');\r\n self.scrollingLock = false;\r\n self.loop = false;\r\n\r\n }\r\n else if (Math.round(Math.abs(self.xp - self.windowLeftPos) + Math.abs(self.yp - self.windowTopPos)) < 1) {\r\n //stops micro movements\r\n clearInterval(self.loop);\r\n self.zoomWindow.css('background-position', self.windowLeftPos + 'px ' + self.windowTopPos + 'px');\r\n self.loop = false;\r\n }\r\n else {\r\n if (self.changeBgSize) {\r\n if (self.nzHeight > self.nzWidth) {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n else {\r\n if (self.options.zoomType !== 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n self.changeBgSize = false;\r\n }\r\n\r\n self.zoomWindow.css('background-position', self.xp + 'px ' + self.yp + 'px');\r\n }\r\n }, 16);\r\n }\r\n }\r\n else {\r\n if (self.changeBgSize) {\r\n if (self.nzHeight > self.nzWidth) {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n else {\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n if ((self.largeHeight / self.newvaluewidth) < self.options.zoomWindowHeight) {\r\n\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvaluewidth + 'px ' +\r\n self.largeHeight / self.newvaluewidth + 'px');\r\n }\r\n else {\r\n\r\n self.zoomWindow.css('background-size',\r\n self.largeWidth / self.newvalueheight + 'px ' +\r\n self.largeHeight / self.newvalueheight + 'px');\r\n }\r\n\r\n }\r\n self.changeBgSize = false;\r\n }\r\n\r\n self.zoomWindow.css('background-position',\r\n self.windowLeftPos + 'px ' +\r\n self.windowTopPos + 'px');\r\n }\r\n }\r\n },\r\n\r\n setTintPosition: function (e) {\r\n var self = this;\r\n var zoomLensWidth = self.zoomLens.width();\r\n var zoomLensHeight = self.zoomLens.height();\r\n self.nzOffset = self.$elem.offset();\r\n self.tintpos = String(((e.pageX - self.nzOffset.left) - (zoomLensWidth / 2)) * (-1));\r\n self.tintposy = String(((e.pageY - self.nzOffset.top) - zoomLensHeight / 2) * (-1));\r\n if (self.Etoppos) {\r\n self.tintposy = 0;\r\n }\r\n if (self.Eloppos) {\r\n self.tintpos = 0;\r\n }\r\n if (self.Eboppos) {\r\n self.tintposy = (self.nzHeight - zoomLensHeight - (self.options.lensBorderSize * 2)) * (-1);\r\n }\r\n if (self.Eroppos) {\r\n self.tintpos = ((self.nzWidth - zoomLensWidth - (self.options.lensBorderSize * 2)) * (-1));\r\n }\r\n if (self.options.tint) {\r\n //stops micro movements\r\n if (self.fullheight) {\r\n self.tintposy = 0;\r\n\r\n }\r\n if (self.fullwidth) {\r\n self.tintpos = 0;\r\n\r\n }\r\n self.zoomTintImage.css({\r\n 'left': self.tintpos + 'px',\r\n 'top': self.tintposy + 'px'\r\n });\r\n }\r\n },\r\n\r\n swaptheimage: function (smallimage, largeimage) {\r\n var self = this;\r\n var newImg = new Image();\r\n\r\n if (self.options.loadingIcon) {\r\n self.spinner = $('
');\r\n self.$elem.after(self.spinner);\r\n }\r\n\r\n self.options.onImageSwap(self.$elem);\r\n\r\n newImg.onload = function () {\r\n self.largeWidth = newImg.width;\r\n self.largeHeight = newImg.height;\r\n self.zoomImage = largeimage;\r\n self.zoomWindow.css('background-size', self.largeWidth + 'px ' + self.largeHeight + 'px');\r\n\r\n self.swapAction(smallimage, largeimage);\r\n return;\r\n };\r\n self.setImageSource(newImg, largeimage); // this must be done AFTER setting onload\r\n },\r\n\r\n swapAction: function (smallimage, largeimage) {\r\n var self = this;\r\n var elemWidth = self.$elem.width();\r\n var elemHeight = self.$elem.height();\r\n var newImg2 = new Image();\r\n newImg2.onload = function () {\r\n //re-calculate values\r\n self.nzHeight = newImg2.height;\r\n self.nzWidth = newImg2.width;\r\n self.options.onImageSwapComplete(self.$elem);\r\n\r\n self.doneCallback();\r\n return;\r\n };\r\n self.setImageSource(newImg2, smallimage);\r\n\r\n //reset the zoomlevel to that initially set in options\r\n self.currentZoomLevel = self.options.zoomLevel;\r\n self.options.maxZoomLevel = false;\r\n\r\n //swaps the main image\r\n //self.$elem.attr('src',smallimage);\r\n //swaps the zoom image\r\n if (self.options.zoomType === 'lens') {\r\n self.zoomLens.css('background-image', 'url(\"' + largeimage + '\")');\r\n }\r\n if (self.options.zoomType === 'window') {\r\n self.zoomWindow.css('background-image', 'url(\"' + largeimage + '\")');\r\n }\r\n if (self.options.zoomType === 'inner') {\r\n self.zoomWindow.css('background-image', 'url(\"' + largeimage + '\")');\r\n }\r\n\r\n self.currentImage = largeimage;\r\n\r\n if (self.options.imageCrossfade) {\r\n var oldImg = self.$elem;\r\n var newImg = oldImg.clone();\r\n self.$elem.attr('src', smallimage);\r\n self.$elem.after(newImg);\r\n newImg.stop(true).fadeOut(self.options.imageCrossfade, function () {\r\n $(this).remove();\r\n });\r\n\r\n // if(self.options.zoomType === 'inner'){\r\n //remove any attributes on the cloned image so we can resize later\r\n self.$elem.width('auto').removeAttr('width');\r\n self.$elem.height('auto').removeAttr('height');\r\n // }\r\n\r\n oldImg.fadeIn(self.options.imageCrossfade);\r\n\r\n if (self.options.tint && self.options.zoomType !== 'inner') {\r\n\r\n var oldImgTint = self.zoomTintImage;\r\n var newImgTint = oldImgTint.clone();\r\n self.zoomTintImage.attr('src', largeimage);\r\n self.zoomTintImage.after(newImgTint);\r\n newImgTint.stop(true).fadeOut(self.options.imageCrossfade, function () {\r\n $(this).remove();\r\n });\r\n\r\n oldImgTint.fadeIn(self.options.imageCrossfade);\r\n\r\n //self.zoomTintImage.attr('width',elem.data('image'));\r\n\r\n //resize the tint window\r\n self.zoomTint.css({\r\n height: elemHeight,\r\n width: elemWidth\r\n });\r\n }\r\n\r\n self.zoomContainer.css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n\r\n if (self.options.zoomType === 'inner') {\r\n if (!self.options.constrainType) {\r\n self.zoomWrap.parent().css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n\r\n self.zoomWindow.css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n }\r\n }\r\n\r\n if (self.options.imageCrossfade) {\r\n self.zoomWrap.css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n }\r\n }\r\n else {\r\n self.$elem.attr('src', smallimage);\r\n if (self.options.tint) {\r\n self.zoomTintImage.attr('src', largeimage);\r\n //self.zoomTintImage.attr('width',elem.data('image'));\r\n self.zoomTintImage.attr('height', elemHeight);\r\n //self.zoomTintImage.attr('src') = elem.data('image');\r\n self.zoomTintImage.css('height', elemHeight);\r\n self.zoomTint.css('height', elemHeight);\r\n\r\n }\r\n self.zoomContainer.css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n\r\n if (self.options.imageCrossfade) {\r\n self.zoomWrap.css({\r\n 'height': elemHeight,\r\n 'width': elemWidth\r\n });\r\n }\r\n }\r\n if (self.options.constrainType) {\r\n\r\n //This will contrain the image proportions\r\n if (self.options.constrainType === 'height') {\r\n\r\n var autoWDimension = {\r\n 'height': self.options.constrainSize,\r\n 'width': 'auto'\r\n };\r\n self.zoomContainer.css(autoWDimension);\r\n\r\n if (self.options.imageCrossfade) {\r\n self.zoomWrap.css(autoWDimension);\r\n self.constwidth = self.zoomWrap.width();\r\n }\r\n else {\r\n self.$elem.css(autoWDimension);\r\n self.constwidth = elemWidth;\r\n }\r\n\r\n var constWDim = {\r\n 'height': self.options.constrainSize,\r\n 'width': self.constwidth\r\n };\r\n if (self.options.zoomType === 'inner') {\r\n\r\n self.zoomWrap.parent().css(constWDim);\r\n self.zoomWindow.css(constWDim);\r\n }\r\n if (self.options.tint) {\r\n self.tintContainer.css(constWDim);\r\n self.zoomTint.css(constWDim);\r\n self.zoomTintImage.css(constWDim);\r\n }\r\n\r\n }\r\n if (self.options.constrainType === 'width') {\r\n var autoHDimension = {\r\n 'height': 'auto',\r\n 'width': self.options.constrainSize\r\n };\r\n self.zoomContainer.css(autoHDimension);\r\n\r\n if (self.options.imageCrossfade) {\r\n self.zoomWrap.css(autoHDimension);\r\n self.constheight = self.zoomWrap.height();\r\n }\r\n else {\r\n self.$elem.css(autoHDimension);\r\n self.constheight = elemHeight;\r\n }\r\n\r\n var constHDim = {\r\n 'height': self.constheight,\r\n 'width': self.options.constrainSize\r\n };\r\n if (self.options.zoomType === 'inner') {\r\n self.zoomWrap.parent().css(constHDim);\r\n self.zoomWindow.css(constHDim);\r\n }\r\n if (self.options.tint) {\r\n self.tintContainer.css(constHDim);\r\n self.zoomTint.css(constHDim);\r\n self.zoomTintImage.css(constHDim);\r\n }\r\n }\r\n }\r\n },\r\n\r\n doneCallback: function () {\r\n var self = this;\r\n if (self.options.loadingIcon) {\r\n self.spinner.hide();\r\n }\r\n\r\n self.nzOffset = self.$elem.offset();\r\n self.nzWidth = self.$elem.width();\r\n self.nzHeight = self.$elem.height();\r\n\r\n // reset the zoomlevel back to default\r\n self.currentZoomLevel = self.options.zoomLevel;\r\n\r\n //ratio of the large to small image\r\n self.widthRatio = self.largeWidth / self.nzWidth;\r\n self.heightRatio = self.largeHeight / self.nzHeight;\r\n\r\n //NEED TO ADD THE LENS SIZE FOR ROUND\r\n // adjust images less than the window height\r\n if (self.options.zoomType === 'window') {\r\n var lensHeight, lensWidth;\r\n\r\n if (self.nzHeight < self.options.zoomWindowHeight / self.heightRatio) {\r\n lensHeight = self.nzHeight;\r\n\r\n }\r\n else {\r\n lensHeight = String((self.options.zoomWindowHeight / self.heightRatio));\r\n }\r\n\r\n if (self.nzWidth < self.options.zoomWindowWidth) {\r\n lensWidth = self.nzWidth;\r\n }\r\n else {\r\n lensWidth = (self.options.zoomWindowWidth / self.widthRatio);\r\n }\r\n\r\n if (self.zoomLens) {\r\n self.zoomLens.css({\r\n 'width': lensWidth,\r\n 'height': lensHeight\r\n });\r\n }\r\n }\r\n },\r\n\r\n getCurrentImage: function () {\r\n var self = this;\r\n return self.zoomImage;\r\n },\r\n\r\n getGalleryList: function () {\r\n var self = this;\r\n //loop through the gallery options and set them in list for fancybox\r\n self.gallerylist = [];\r\n if (self.options.gallery) {\r\n $('#' + self.options.gallery + ' a').each(function () {\r\n\r\n var imgSrc = '';\r\n if ($(this).data('zoom-image')) {\r\n imgSrc = $(this).data('zoom-image');\r\n }\r\n else if ($(this).data('image')) {\r\n imgSrc = $(this).data('image');\r\n }\r\n //put the current image at the start\r\n if (imgSrc === self.zoomImage) {\r\n self.gallerylist.unshift({\r\n href: '' + imgSrc + '',\r\n title: $(this).find('img').attr('title')\r\n });\r\n }\r\n else {\r\n self.gallerylist.push({\r\n href: '' + imgSrc + '',\r\n title: $(this).find('img').attr('title')\r\n });\r\n }\r\n });\r\n }\r\n //if no gallery - return current image\r\n else {\r\n self.gallerylist.push({\r\n href: '' + self.zoomImage + '',\r\n title: $(this).find('img').attr('title')\r\n });\r\n }\r\n return self.gallerylist;\r\n },\r\n\r\n changeZoomLevel: function (value) {\r\n var self = this;\r\n\r\n //flag a zoom, so can adjust the easing during setPosition\r\n self.scrollingLock = true;\r\n\r\n //round to two decimal places\r\n self.newvalue = parseFloat(value).toFixed(2);\r\n var newvalue = self.newvalue;\r\n\r\n //maxwidth & Maxheight of the image\r\n var maxheightnewvalue = self.largeHeight / ((self.options.zoomWindowHeight / self.nzHeight) * self.nzHeight);\r\n var maxwidthtnewvalue = self.largeWidth / ((self.options.zoomWindowWidth / self.nzWidth) * self.nzWidth);\r\n\r\n //calculate new heightratio\r\n if (self.options.zoomType !== 'inner') {\r\n if (maxheightnewvalue <= newvalue) {\r\n self.heightRatio = (self.largeHeight / maxheightnewvalue) / self.nzHeight;\r\n self.newvalueheight = maxheightnewvalue;\r\n self.fullheight = true;\r\n }\r\n else {\r\n self.heightRatio = (self.largeHeight / newvalue) / self.nzHeight;\r\n self.newvalueheight = newvalue;\r\n self.fullheight = false;\r\n }\r\n\r\n // calculate new width ratio\r\n\r\n if (maxwidthtnewvalue <= newvalue) {\r\n self.widthRatio = (self.largeWidth / maxwidthtnewvalue) / self.nzWidth;\r\n self.newvaluewidth = maxwidthtnewvalue;\r\n self.fullwidth = true;\r\n }\r\n else {\r\n self.widthRatio = (self.largeWidth / newvalue) / self.nzWidth;\r\n self.newvaluewidth = newvalue;\r\n self.fullwidth = false;\r\n }\r\n if (self.options.zoomType === 'lens') {\r\n if (maxheightnewvalue <= newvalue) {\r\n self.fullwidth = true;\r\n self.newvaluewidth = maxheightnewvalue;\r\n } else {\r\n self.widthRatio = (self.largeWidth / newvalue) / self.nzWidth;\r\n self.newvaluewidth = newvalue;\r\n\r\n self.fullwidth = false;\r\n }\r\n }\r\n }\r\n\r\n if (self.options.zoomType === 'inner') {\r\n maxheightnewvalue = parseFloat(self.largeHeight / self.nzHeight).toFixed(2);\r\n maxwidthtnewvalue = parseFloat(self.largeWidth / self.nzWidth).toFixed(2);\r\n if (newvalue > maxheightnewvalue) {\r\n newvalue = maxheightnewvalue;\r\n }\r\n if (newvalue > maxwidthtnewvalue) {\r\n newvalue = maxwidthtnewvalue;\r\n }\r\n\r\n if (maxheightnewvalue <= newvalue) {\r\n self.heightRatio = (self.largeHeight / newvalue) / self.nzHeight;\r\n if (newvalue > maxheightnewvalue) {\r\n self.newvalueheight = maxheightnewvalue;\r\n } else {\r\n self.newvalueheight = newvalue;\r\n }\r\n self.fullheight = true;\r\n }\r\n else {\r\n self.heightRatio = (self.largeHeight / newvalue) / self.nzHeight;\r\n\r\n if (newvalue > maxheightnewvalue) {\r\n\r\n self.newvalueheight = maxheightnewvalue;\r\n } else {\r\n self.newvalueheight = newvalue;\r\n }\r\n self.fullheight = false;\r\n }\r\n\r\n if (maxwidthtnewvalue <= newvalue) {\r\n\r\n self.widthRatio = (self.largeWidth / newvalue) / self.nzWidth;\r\n if (newvalue > maxwidthtnewvalue) {\r\n\r\n self.newvaluewidth = maxwidthtnewvalue;\r\n } else {\r\n self.newvaluewidth = newvalue;\r\n }\r\n\r\n self.fullwidth = true;\r\n }\r\n else {\r\n self.widthRatio = (self.largeWidth / newvalue) / self.nzWidth;\r\n self.newvaluewidth = newvalue;\r\n self.fullwidth = false;\r\n }\r\n } //end inner\r\n var scrcontinue = false;\r\n\r\n if (self.options.zoomType === 'inner') {\r\n if (self.nzWidth >= self.nzHeight) {\r\n if (self.newvaluewidth <= maxwidthtnewvalue) {\r\n scrcontinue = true;\r\n }\r\n else {\r\n scrcontinue = false;\r\n self.fullheight = true;\r\n self.fullwidth = true;\r\n }\r\n }\r\n if (self.nzHeight > self.nzWidth) {\r\n if (self.newvaluewidth <= maxwidthtnewvalue) {\r\n scrcontinue = true;\r\n }\r\n else {\r\n scrcontinue = false;\r\n self.fullheight = true;\r\n self.fullwidth = true;\r\n }\r\n }\r\n }\r\n\r\n if (self.options.zoomType !== 'inner') {\r\n scrcontinue = true;\r\n }\r\n\r\n if (scrcontinue) {\r\n self.zoomLock = 0;\r\n self.changeZoom = true;\r\n\r\n //if lens height is less than image height\r\n if (((self.options.zoomWindowHeight) / self.heightRatio) <= self.nzHeight) {\r\n self.currentZoomLevel = self.newvalueheight;\r\n if (self.options.zoomType !== 'lens' && self.options.zoomType !== 'inner') {\r\n self.changeBgSize = true;\r\n self.zoomLens.css('height', String(self.options.zoomWindowHeight / self.heightRatio) + 'px');\r\n }\r\n if (self.options.zoomType === 'lens' || self.options.zoomType === 'inner') {\r\n self.changeBgSize = true;\r\n }\r\n }\r\n\r\n if ((self.options.zoomWindowWidth / self.widthRatio) <= self.nzWidth) {\r\n if (self.options.zoomType !== 'inner') {\r\n if (self.newvaluewidth > self.newvalueheight) {\r\n self.currentZoomLevel = self.newvaluewidth;\r\n }\r\n }\r\n\r\n if (self.options.zoomType !== 'lens' && self.options.zoomType !== 'inner') {\r\n self.changeBgSize = true;\r\n\r\n self.zoomLens.css('width', String(self.options.zoomWindowWidth / self.widthRatio) + 'px');\r\n }\r\n if (self.options.zoomType === 'lens' || self.options.zoomType === 'inner') {\r\n self.changeBgSize = true;\r\n }\r\n\r\n }\r\n if (self.options.zoomType === 'inner') {\r\n self.changeBgSize = true;\r\n\r\n if (self.nzWidth > self.nzHeight) {\r\n self.currentZoomLevel = self.newvaluewidth;\r\n }\r\n if (self.nzHeight > self.nzWidth) {\r\n self.currentZoomLevel = self.newvaluewidth;\r\n }\r\n }\r\n } //under\r\n\r\n //sets the boundry change, called in setWindowPos\r\n self.setPosition(self.currentLoc);\r\n //\r\n },\r\n\r\n closeAll: function () {\r\n var self = this;\r\n if (self.zoomWindow) {\r\n self.zoomWindow.hide();\r\n }\r\n if (self.zoomLens) {\r\n self.zoomLens.hide();\r\n }\r\n if (self.zoomTint) {\r\n self.zoomTint.hide();\r\n }\r\n },\r\n\r\n changeState: function (value) {\r\n var self = this;\r\n if (value === 'enable') {\r\n self.options.zoomEnabled = true;\r\n }\r\n if (value === 'disable') {\r\n self.options.zoomEnabled = false;\r\n }\r\n },\r\n\r\n responsiveConfig: function (options) {\r\n if (options.respond && options.respond.length > 0) {\r\n return $.extend({}, options, this.configByScreenWidth(options));\r\n }\r\n return options;\r\n },\r\n\r\n configByScreenWidth: function (options) {\r\n var screenWidth = $(window).width();\r\n\r\n var config = $.grep(options.respond, function (item) {\r\n var range = item.range.split('-');\r\n return (screenWidth >= range[0]) && (screenWidth <= range[1]);\r\n });\r\n\r\n if (config.length > 0) {\r\n return config[0];\r\n } else {\r\n return options;\r\n }\r\n }\r\n };\r\n\r\n $.fn.ezPlus = function (options) {\r\n return this.each(function () {\r\n var elevate = Object.create(EZP);\r\n\r\n elevate.init(options, this);\r\n\r\n $.data(this, 'ezPlus', elevate);\r\n\r\n });\r\n };\r\n\r\n $.fn.ezPlus.options = {\r\n borderColour: '#888',\r\n borderSize: 4,\r\n constrainSize: false, //in pixels the dimensions you want to constrain on\r\n constrainType: false, //width or height\r\n containLensZoom: false,\r\n cursor: 'inherit', // user should set to what they want the cursor as, if they have set a click function\r\n debug: false,\r\n easing: false,\r\n easingAmount: 12,\r\n enabled: true,\r\n\r\n gallery: false,\r\n galleryActiveClass: 'zoomGalleryActive',\r\n gallerySelector: false,\r\n galleryItem: 'a',\r\n\r\n imageCrossfade: false,\r\n\r\n lensBorderColour: '#000',\r\n lensBorderSize: 1,\r\n lensColour: 'white', //colour of the lens background\r\n lensFadeIn: false,\r\n lensFadeOut: false,\r\n lensOpacity: 0.4, //opacity of the lens\r\n lensShape: 'square', //can be 'round'\r\n lensSize: 200,\r\n lenszoom: false,\r\n\r\n loadingIcon: false, //http://www.example.com/spinner.gif\r\n\r\n // This change will allow to decide if you want to decrease\r\n // zoom of one of the dimensions once the other reached it's top value,\r\n // or keep the aspect ratio, default behaviour still being as always,\r\n // allow to continue zooming out, so it keeps retrocompatibility.\r\n mantainZoomAspectRatio: false,\r\n maxZoomLevel: false,\r\n minZoomLevel: false,\r\n\r\n onComplete: $.noop,\r\n onDestroy: $.noop,\r\n onImageClick: $.noop,\r\n onImageSwap: $.noop,\r\n onImageSwapComplete: $.noop,\r\n onShow: $.noop,\r\n onZoomedImageLoaded: $.noop,\r\n\r\n preloading: 1, //by default, load all the images, if 0, then only load images after activated (PLACEHOLDER FOR NEXT VERSION)\r\n respond: [],\r\n responsive: true,\r\n scrollZoom: false, //allow zoom on mousewheel, true to activate\r\n scrollZoomIncrement: 0.1, //steps of the scrollzoom\r\n showLens: true,\r\n tint: false, //enable the tinting\r\n tintColour: '#333', //default tint color, can be anything, red, #ccc, rgb(0,0,0)\r\n tintOpacity: 0.4, //opacity of the tint\r\n touchEnabled: true,\r\n\r\n zoomActivation: 'hover', // Can also be click (PLACEHOLDER FOR NEXT VERSION)\r\n zoomContainerAppendTo: 'body', //zoom container parent selector\r\n zoomLevel: 1, //default zoom level of image\r\n zoomTintFadeIn: false,\r\n zoomTintFadeOut: false,\r\n zoomType: 'window', //window is default, also 'lens' available -\r\n zoomWindowAlwaysShow: false,\r\n zoomWindowBgColour: '#fff',\r\n zoomWindowFadeIn: false,\r\n zoomWindowFadeOut: false,\r\n zoomWindowHeight: 400,\r\n zoomWindowOffsetX: 0,\r\n zoomWindowOffsetY: 0,\r\n zoomWindowPosition: 1,\r\n zoomWindowWidth: 400,\r\n zoomEnabled: true, //false disables zoomwindow from showing\r\n zIndex: 999\r\n };\r\n\r\n})(jQuery, window, document);\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.Sweetalert2=e()}(this,function(){\"use strict\";function r(t){return(r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){for(var n=0;n \\n').replace(/(^|\\n)\\s*/g,\"\"),ft=function(t){if(!function(){var t=y();t&&(t.parentNode.removeChild(t),ut([document.documentElement,document.body],[z[\"no-backdrop\"],z[\"toast-shown\"],z[\"has-column\"]]))}(),ot())h(\"SweetAlert2 requires document to initialize\");else{var e=document.createElement(\"div\");e.className=z.container,e.innerHTML=pt;var n=function(t){return\"string\"==typeof t?document.querySelector(t):t}(t.target);n.appendChild(e),function(t){var e=C();e.setAttribute(\"role\",t.toast?\"alert\":\"dialog\"),e.setAttribute(\"aria-live\",t.toast?\"polite\":\"assertive\"),t.toast||e.setAttribute(\"aria-modal\",\"true\")}(t),function(t){\"rtl\"===window.getComputedStyle(t).direction&&st(y(),z.rtl)}(n),function(){var t=A(),e=lt(t,z.input),n=lt(t,z.file),o=t.querySelector(\".\".concat(z.range,\" input\")),i=t.querySelector(\".\".concat(z.range,\" output\")),r=lt(t,z.select),a=t.querySelector(\".\".concat(z.checkbox,\" input\")),c=lt(t,z.textarea);e.oninput=it,n.onchange=it,r.onchange=it,a.onchange=it,c.oninput=it,o.oninput=function(t){it(t),i.value=o.value},o.onchange=function(t){it(t),o.nextSibling.value=o.value}}()}},mt=function(t,e){if(t.innerHTML=\"\",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},ht=function(){if(ot())return!1;var t=document.createElement(\"div\"),e={WebkitAnimation:\"webkitAnimationEnd\",OAnimation:\"oAnimationEnd oanimationend\",animation:\"animationend\"};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&void 0!==t.style[n])return e[n];return!1}();function gt(t,e,n){tt(t,n[\"show\".concat(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}(e),\"Button\")],\"inline-block\"),t.innerHTML=n[\"\".concat(e,\"ButtonText\")],t.setAttribute(\"aria-label\",n[\"\".concat(e,\"ButtonAriaLabel\")]),t.className=z[e],R(t,n,\"\".concat(e,\"Button\")),st(t,n[\"\".concat(e,\"ButtonClass\")])}function vt(t,e){var n=y();if(n){!function(t,e){\"string\"==typeof e?t.style.background=e:e||st([document.documentElement,document.body],z[\"no-backdrop\"])}(n,e.backdrop),!e.backdrop&&e.allowOutsideClick&&D('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`'),function(t,e){e in z?st(t,z[e]):(D('The \"position\" parameter is not valid, defaulting to \"center\"'),st(t,z.center))}(n,e.position),function(t,e){if(e&&\"string\"==typeof e){var n=\"grow-\".concat(e);n in z&&st(t,z[n])}}(n,e.grow),R(n,e,\"container\");var o=document.body.getAttribute(\"data-swal2-queue-step\");o&&(n.setAttribute(\"data-queue-step\",o),document.body.removeAttribute(\"data-swal2-queue-step\"))}}function bt(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}var yt={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},wt=[\"input\",\"file\",\"range\",\"select\",\"radio\",\"checkbox\",\"textarea\"],Ct=function(t){if(!Pt[t.input])return h('Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"'.concat(t.input,'\"'));var e=At(t.input),n=Pt[t.input](e,t);X(n),setTimeout(function(){Q(n)})},kt=function(t,e){var n=Z(A(),t);if(n)for(var o in!function(t){for(var e=0;e
=i.progressSteps.length&&D(\"Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)\"),i.progressSteps.forEach(function(t,e){var n=function(t){var e=document.createElement(\"li\");return st(e,z[\"progress-step\"]),e.innerHTML=t,e}(t);if(r.appendChild(n),e===a&&st(n,z[\"active-progress-step\"]),e!==i.progressSteps.length-1){var o=function(t){var e=document.createElement(\"li\");return st(e,z[\"progress-step-line\"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e}(t);r.appendChild(o)}})}function Tt(t,e){var n=O();R(n,e,\"header\"),St(0,e),function(t,e){var n=yt.innerParams.get(t);if(n&&e.icon===n.icon&&k())R(k(),e,\"icon\");else if(Mt(),e.icon)if(-1!==Object.keys(W).indexOf(e.icon)){var o=w(\".\".concat(z.icon,\".\").concat(W[e.icon]));X(o),jt(o,e),Ht(),R(o,e,\"icon\"),st(o,e.showClass.icon)}else h('Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"'.concat(e.icon,'\"'))}(t,e),function(t,e){var n=P();if(!e.imageUrl)return G(n);X(n),n.setAttribute(\"src\",e.imageUrl),n.setAttribute(\"alt\",e.imageAlt),J(n,\"width\",e.imageWidth),J(n,\"height\",e.imageHeight),n.className=z.image,R(n,e,\"image\")}(0,e),function(t,e){var n=x();tt(n,e.title||e.titleText),e.title&&rt(e.title,n),e.titleText&&(n.innerText=e.titleText),R(n,e,\"title\")}(0,e),function(t,e){var n=j();n.innerHTML=e.closeButtonHtml,R(n,e,\"closeButton\"),tt(n,e.showCloseButton),n.setAttribute(\"aria-label\",e.closeButtonAriaLabel)}(0,e)}function Lt(t,e){!function(t,e){var n=C();J(n,\"width\",e.width),J(n,\"padding\",e.padding),e.background&&(n.style.background=e.background),qt(n,e)}(0,e),vt(0,e),Tt(t,e),Bt(t,e),at(0,e),function(t,e){var n=M();tt(n,e.footer),e.footer&&rt(e.footer,n),R(n,e,\"footer\")}(0,e),\"function\"==typeof e.onRender&&e.onRender(C())}function Ot(){return S()&&S().click()}var Mt=function(){for(var t=n(),e=0;e \\n
\\n
\\n
\\n ';else if(\"error\"===e.icon)t.innerHTML='\\n
\\n \\n \\n \\n ';else{t.innerHTML=Vt({question:\"?\",warning:\"!\",info:\"i\"}[e.icon])}},Vt=function(t){return'
').concat(t,\"
\")},It=[],qt=function(t,e){t.className=\"\".concat(z.popup,\" \").concat(dt(t)?e.showClass.popup:\"\"),e.toast?(st([document.documentElement,document.body],z[\"toast-shown\"]),st(t,z.toast)):st(t,z.modal),R(t,e,\"popup\"),\"string\"==typeof e.customClass&&st(t,e.customClass),e.icon&&st(t,z[\"icon-\".concat(e.icon)])};function Rt(){var t=C();t||Je.fire(),t=C();var e=L(),n=S();X(e),X(n,\"inline-block\"),st([t,e],z.loading),n.disabled=!0,t.setAttribute(\"data-loading\",!0),t.setAttribute(\"aria-busy\",!0),t.focus()}function Nt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;zt.restoreFocusTimeout=setTimeout(function(){zt.previousActiveElement&&zt.previousActiveElement.focus?(zt.previousActiveElement.focus(),zt.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Dt(){if(zt.timeout)return function(){var t=H(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty(\"transition\"),t.style.width=\"100%\";var n=parseInt(window.getComputedStyle(t).width),o=parseInt(e/n*100);t.style.removeProperty(\"transition\"),t.style.width=\"\".concat(o,\"%\")}(),zt.timeout.stop()}function Ut(){if(zt.timeout){var t=zt.timeout.start();return nt(t),t}}function Ft(t){return Object.prototype.hasOwnProperty.call(Wt,t)}function _t(t){return Yt[t]}var zt={},Wt={title:\"\",titleText:\"\",text:\"\",html:\"\",footer:\"\",icon:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:\"swal2-show\",backdrop:\"swal2-backdrop-show\",icon:\"swal2-icon-show\"},hideClass:{popup:\"swal2-hide\",backdrop:\"swal2-backdrop-hide\",icon:\"swal2-icon-hide\"},customClass:void 0,target:\"body\",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showCancelButton:!1,preConfirm:void 0,confirmButtonText:\"OK\",confirmButtonAriaLabel:\"\",confirmButtonColor:void 0,cancelButtonText:\"Cancel\",cancelButtonAriaLabel:\"\",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusCancel:!1,showCloseButton:!1,closeButtonHtml:\"×\",closeButtonAriaLabel:\"Close this dialog\",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:\"\",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:\"\",inputValue:\"\",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,validationMessage:void 0,grow:!1,position:\"center\",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,onRender:void 0,onClose:void 0,onAfterClose:void 0,scrollbarPadding:!0},Kt=[\"title\",\"titleText\",\"text\",\"html\",\"icon\",\"customClass\",\"showConfirmButton\",\"showCancelButton\",\"confirmButtonText\",\"confirmButtonAriaLabel\",\"confirmButtonColor\",\"cancelButtonText\",\"cancelButtonAriaLabel\",\"cancelButtonColor\",\"buttonsStyling\",\"reverseButtons\",\"imageUrl\",\"imageWidth\",\"imageHeight\",\"imageAlt\",\"progressSteps\",\"currentProgressStep\"],Yt={animation:'showClass\" and \"hideClass'},Zt=[\"allowOutsideClick\",\"allowEnterKey\",\"backdrop\",\"focusConfirm\",\"focusCancel\",\"heightAuto\",\"keydownListenerCapture\"],Qt=Object.freeze({isValidParameter:Ft,isUpdatableParameter:function(t){return-1!==Kt.indexOf(t)},isDeprecatedParameter:_t,argsToParams:function(o){var i={};return\"object\"!==r(o[0])||b(o[0])?[\"title\",\"html\",\"icon\"].forEach(function(t,e){var n=o[e];\"string\"==typeof n||b(n)?i[t]=n:void 0!==n&&h(\"Unexpected type of \".concat(t,'! Expected \"string\" or \"Element\", got ').concat(r(n)))}):c(i,o[0]),i},isVisible:function(){return dt(C())},clickConfirm:Ot,clickCancel:function(){return T()&&T().click()},getContainer:y,getPopup:C,getTitle:x,getContent:A,getHtmlContainer:function(){return e(z[\"html-container\"])},getImage:P,getIcon:k,getIcons:n,getCloseButton:j,getActions:L,getConfirmButton:S,getCancelButton:T,getHeader:O,getFooter:M,getFocusableElements:V,getValidationMessage:E,isLoading:function(){return C().hasAttribute(\"data-loading\")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n
window.innerHeight&&(Y.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue(\"padding-right\")),document.body.style.paddingRight=\"\".concat(Y.previousBodyPadding+function(){var t=document.createElement(\"div\");t.className=z[\"scrollbar-measure\"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),\"px\"))}function Xt(){return!!window.MSInputMethodContext&&!!document.documentMode}function Gt(){var t=y(),e=C();t.style.removeProperty(\"align-items\"),e.offsetTop<0&&(t.style.alignItems=\"flex-start\")}var te=function(){var e,n=y();n.ontouchstart=function(t){e=t.target===n||!function(t){return!!(t.scrollHeight>t.clientHeight)}(n)&&\"INPUT\"!==t.target.tagName},n.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},ee={swalPromiseResolve:new WeakMap};function ne(t,e,n,o){n?ae(t,o):(Nt().then(function(){return ae(t,o)}),zt.keydownTarget.removeEventListener(\"keydown\",zt.keydownHandler,{capture:zt.keydownListenerCapture}),zt.keydownHandlerAdded=!1),e.parentNode&&e.parentNode.removeChild(e),I()&&(null!==Y.previousBodyPadding&&(document.body.style.paddingRight=\"\".concat(Y.previousBodyPadding,\"px\"),Y.previousBodyPadding=null),function(){if(q(document.body,z.iosfix)){var t=parseInt(document.body.style.top,10);ut(document.body,z.iosfix),document.body.style.top=\"\",document.body.scrollTop=-1*t}}(),\"undefined\"!=typeof window&&Xt()&&window.removeEventListener(\"resize\",Gt),m(document.body.children).forEach(function(t){t.hasAttribute(\"data-previous-aria-hidden\")?(t.setAttribute(\"aria-hidden\",t.getAttribute(\"data-previous-aria-hidden\")),t.removeAttribute(\"data-previous-aria-hidden\")):t.removeAttribute(\"aria-hidden\")})),ut([document.documentElement,document.body],[z.shown,z[\"height-auto\"],z[\"no-backdrop\"],z[\"toast-shown\"],z[\"toast-column\"]])}function oe(t){var e=C();if(e){var n=yt.innerParams.get(this);if(n&&!q(e,n.hideClass.popup)){var o=ee.swalPromiseResolve.get(this);ut(e,n.showClass.popup),st(e,n.hideClass.popup);var i=y();ut(i,n.showClass.backdrop),st(i,n.hideClass.backdrop),function(t,e,n){var o=y(),i=ht&&et(e),r=n.onClose,a=n.onAfterClose;if(r!==null&&typeof r===\"function\"){r(e)}if(i){re(t,e,o,a)}else{ne(t,o,K(),a)}}(this,e,n),o(t||{})}}}function ie(t){for(var e in t)t[e]=new WeakMap}var re=function(t,e,n,o){zt.swalCloseEventFinishedCallback=ne.bind(null,t,n,K(),o),e.addEventListener(ht,function(t){t.target===e&&(zt.swalCloseEventFinishedCallback(),delete zt.swalCloseEventFinishedCallback)})},ae=function(t,e){setTimeout(function(){null!==e&&\"function\"==typeof e&&e(),C()||function(t){delete t.params,delete zt.keydownHandler,delete zt.keydownTarget,ie(yt),ie(ee)}(t)})};function ce(t,e,n){var o=yt.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function se(t,e){if(!t)return!1;if(\"radio\"===t.type)for(var n=t.parentNode.parentNode.querySelectorAll(\"input\"),o=0;o \")),ft(t)}function pe(t,e){t.removeEventListener(ht,pe),e.style.overflowY=\"auto\"}function fe(t){var e=y(),n=C();\"function\"==typeof t.onBeforeOpen&&t.onBeforeOpen(n),xe(e,n,t),Ce(e,n),I()&&ke(e,t.scrollbarPadding),K()||zt.previousActiveElement||(zt.previousActiveElement=document.activeElement),\"function\"==typeof t.onOpen&&setTimeout(function(){return t.onOpen(n)})}function me(t,e){\"select\"===e.input||\"radio\"===e.input?Ee(t,e):-1!==[\"text\",\"email\",\"number\",\"tel\",\"textarea\"].indexOf(e.input)&&v(e.inputValue)&&Se(t,e)}function he(t,e){t.disableButtons(),e.input?Oe(t,e):Me(t,e,!0)}function ge(t,e){t.disableButtons(),e(_.cancel)}function ve(t,e){t.closePopup({value:e})}function be(e,t,n,o){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener(\"keydown\",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1),n.toast||(t.keydownHandler=function(t){return Ve(e,t,n,o)},t.keydownTarget=n.keydownListenerCapture?window:C(),t.keydownListenerCapture=n.keydownListenerCapture,t.keydownTarget.addEventListener(\"keydown\",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}function ye(t,e,n){for(var o=V(),i=0;i:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-self:stretch;-webkit-box-pack:center;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-content:center;-webkit-box-pack:center;justify-content:center}.swal2-container.swal2-grow-column{-webkit-box-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{-webkit-box-align:center;align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{-webkit-box-align:start;align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{-webkit-box-align:end;align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:-webkit-box!important;display:flex!important;-webkit-box-flex:1;flex:1;align-content:center;-webkit-box-pack:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:-webkit-box;display:flex;z-index:1;flex-wrap:wrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.1)),to(rgba(0,0,0,.1)));background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.2)),to(rgba(0,0,0,.2)));background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\\\"\\\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{-webkit-box-pack:center;justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar{position:absolute;bottom:0;left:0;width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;-webkit-box-pack:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;-webkit-transition:color .1s ease-out;transition:color .1s ease-out;border:none;border-radius:0;outline:initial;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{-webkit-transform:none;transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;-webkit-box-pack:center;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;-webkit-transition:border-color .3s,box-shadow .3s;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-webkit-input-placeholder,.swal2-input::-webkit-input-placeholder,.swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\\\"!\\\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;-webkit-box-pack:center;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;-webkit-box-flex:1;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:3.75em 3.75em;transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 3.75em;transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.875em;width:1.5625em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{-webkit-box-align:center;align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{-webkit-transition:none;transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg)}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg)}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg)}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{-webkit-transform:translateY(-.625em) rotateZ(2deg);transform:translateY(-.625em) rotateZ(2deg)}33%{-webkit-transform:translateY(0) rotateZ(-2deg);transform:translateY(0) rotateZ(-2deg)}66%{-webkit-transform:translateY(.3125em) rotateZ(2deg);transform:translateY(.3125em) rotateZ(2deg)}100%{-webkit-transform:translateY(0) rotateZ(0);transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{-webkit-transform:rotateZ(1deg);transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes swal2-show{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.875em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}100%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}50%{margin-top:1.625em;-webkit-transform:scale(.4);transform:scale(.4);opacity:0}80%{margin-top:-.375em;-webkit-transform:scale(1.15);transform:scale(1.15)}100%{margin-top:0;-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateY(-50%);transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:stretch;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{-webkit-box-flex:1;flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{-webkit-box-pack:center;justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}\");","// ==================================================\r\n// fancyBox v3.5.7\r\n//\r\n// Licensed GPLv3 for open source use\r\n// or fancyBox Commercial License for commercial use\r\n//\r\n// http://fancyapps.com/fancybox/\r\n// Copyright 2019 fancyApps\r\n//\r\n// ==================================================\r\n!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:'',preload:!0,css:{},attr:{scrolling:\"auto\"}},video:{tpl:' Sorry, your browser doesn\\'t support embedded videos, download and watch with your favorite video player! ',format:\"\",autoStart:!0},defaultType:\"image\",animationEffect:\"zoom\",animationDuration:366,zoomOpacity:\"auto\",transitionEffect:\"fade\",transitionDuration:366,slideClass:\"\",baseClass:\"\",baseTpl:'',spinnerTpl:'
',errorTpl:'',btnTpl:{download:' ',zoom:' ',close:' ',arrowLeft:' ',arrowRight:' ',smallBtn:' '},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. 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. 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('\"),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.index0)&&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('
').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),ap&&(s=i.top*c-(e*c-e),s>0&&(s=0),se-.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=t1.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('
').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=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('
').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(\"\").hide().insertAfter(e),e.css(\"display\",\"inline-block\")):t.hasError||(\"string\"===n.type(e)&&(e=n(\"
\").append(n.trim(e)).contents()),t.opts.filter&&(e=n(\"
\").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(\"
\"),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(\"
\").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('
').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,\r\n\"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
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;ee.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&&i0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e1&&(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),rs.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:' '},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('
').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex '},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:' '},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;i1));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('
').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('').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||\"image\"!==n.type||(t=n.src),s.push('
\")}),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()+(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:' '},share:{url:function(t,e){return!t.currentHash&&\"inline\"!==e.type&&\"html\"!==e.type&&(e.origSrc||e.src)||window.location},\r\ntpl:''}}),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})},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);","// ==========================================================================\r\n//\r\n// Media\r\n// Adds additional media type support\r\n//\r\n// ==========================================================================\r\n;(function ($) {\r\n\r\n\t'use strict';\r\n\r\n\t// Formats matching url to final form\r\n\r\n\tvar format = function (url, rez, params) {\r\n\t\tif ( !url ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tparams = params || '';\r\n\r\n\t\tif ( $.type(params) === \"object\" ) {\r\n\t\t\tparams = $.param(params, true);\r\n\t\t}\r\n\r\n\t\t$.each(rez, function (key, value) {\r\n\t\t\turl = url.replace('$' + key, value || '');\r\n\t\t});\r\n\r\n\t\tif (params.length) {\r\n\t\t\turl += (url.indexOf('?') > 0 ? '&' : '?') + params;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t};\r\n\r\n\t// Object containing properties for each media type\r\n\r\n\tvar media = {\r\n\t\tyoutube: {\r\n\t\t\tmatcher: /(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,\r\n\t\t\tparams: {\r\n\t\t\t\tautoplay: 1,\r\n\t\t\t\tautohide: 1,\r\n\t\t\t\tfs: 1,\r\n\t\t\t\trel: 0,\r\n\t\t\t\thd: 1,\r\n\t\t\t\twmode: 'transparent',\r\n\t\t\t\tenablejsapi: 1,\r\n\t\t\t\thtml5: 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 8,\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: '//www.youtube.com/embed/$4',\r\n\t\t\tthumb: '//img.youtube.com/vi/$4/hqdefault.jpg'\r\n\t\t},\r\n\r\n\t\tvimeo: {\r\n\t\t\tmatcher: /^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,\r\n\t\t\tparams: {\r\n\t\t\t\tautoplay: 1,\r\n\t\t\t\thd: 1,\r\n\t\t\t\tshow_title: 1,\r\n\t\t\t\tshow_byline: 1,\r\n\t\t\t\tshow_portrait: 0,\r\n\t\t\t\tfullscreen: 1,\r\n\t\t\t\tapi: 1\r\n\t\t\t},\r\n\t\t\tparamPlace : 3,\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: '//player.vimeo.com/video/$2'\r\n\t\t},\r\n\r\n\t\tmetacafe: {\r\n\t\t\tmatcher: /metacafe.com\\/watch\\/(\\d+)\\/(.*)?/,\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: '//www.metacafe.com/embed/$1/?ap=1'\r\n\t\t},\r\n\r\n\t\tdailymotion: {\r\n\t\t\tmatcher: /dailymotion.com\\/video\\/(.*)\\/?(.*)/,\r\n\t\t\tparams: {\r\n\t\t\t\tadditionalInfos: 0,\r\n\t\t\t\tautoStart: 1\r\n\t\t\t},\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: '//www.dailymotion.com/embed/video/$1'\r\n\t\t},\r\n\r\n\t\tvine: {\r\n\t\t\tmatcher: /vine.co\\/v\\/([a-zA-Z0-9\\?\\=\\-]+)/,\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: '//vine.co/v/$1/embed/simple'\r\n\t\t},\r\n\r\n\t\tinstagram: {\r\n\t\t\tmatcher: /(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,\r\n\t\t\ttype: 'image',\r\n\t\t\turl: '//$1/p/$2/media/?size=l'\r\n\t\t},\r\n\r\n\t\t// Examples:\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16\r\n\t\t// https://www.google.lv/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572\r\n\t\tgoogle_maps: {\r\n\t\t\tmatcher: /(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,\r\n\t\t\ttype: 'iframe',\r\n\t\t\turl: function (rez) {\r\n\t\t\t\treturn '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\\//, \"&\") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t$(document).on('onInit.fb', function (e, instance) {\r\n\r\n\t\t$.each(instance.group, function( i, item ) {\r\n\r\n\t\t\tvar url\t = item.src || '',\r\n\t\t\t\ttype = false,\r\n\t\t\t\tthumb,\r\n\t\t\t\trez,\r\n\t\t\t\tparams,\r\n\t\t\t\turlParams,\r\n\t\t\t\to,\r\n\t\t\t\tprovider;\r\n\r\n\t\t\t// Skip items that already have content type\r\n\t\t\tif ( item.type ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Look for any matching media type\r\n\r\n\t\t\t$.each(media, function ( n, el ) {\r\n\t\t\t\trez = url.match(el.matcher);\r\n\t\t\t\to = {};\r\n\t\t\t\tprovider = n;\r\n\r\n\t\t\t\tif (!rez) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttype = el.type;\r\n\r\n\t\t\t\tif ( el.paramPlace && rez[ el.paramPlace ] ) {\r\n\t\t\t\t\turlParams = rez[ el.paramPlace ];\r\n\r\n\t\t\t\t\tif ( urlParams[ 0 ] == '?' ) {\r\n\t\t\t\t\t\turlParams = urlParams.substring(1);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\turlParams = urlParams.split('&');\r\n\r\n\t\t\t\t\tfor ( var m = 0; m < urlParams.length; ++m ) {\r\n\t\t\t\t\t\tvar p = urlParams[ m ].split('=', 2);\r\n\r\n\t\t\t\t\t\tif ( p.length == 2 ) {\r\n\t\t\t\t\t\t\to[ p[0] ] = decodeURIComponent( p[1].replace(/\\+/g, \" \") );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tparams = $.extend( true, {}, el.params, item.opts[ n ], o );\r\n\r\n\t\t\t\turl = $.type(el.url) === \"function\" ? el.url.call(this, rez, params, item) : format(el.url, rez, params);\r\n\t\t\t\tthumb = $.type(el.thumb) === \"function\" ? el.thumb.call(this, rez, params, item) : format(el.thumb, rez);\r\n\r\n\t\t\t\tif ( provider === 'vimeo' ) {\r\n\t\t\t\t\turl = url.replace('&%23', '#');\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\t// If it is found, then change content type and update the url\r\n\r\n\t\t\tif ( type ) {\r\n\t\t\t\titem.src = url;\r\n\t\t\t\titem.type = type;\r\n\r\n\t\t\t\tif ( !item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length ) ) {\r\n\t\t\t\t\titem.opts.thumb = thumb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( type === 'iframe' ) {\r\n\t\t\t\t\t$.extend(true, item.opts, {\r\n\t\t\t\t\t\tiframe : {\r\n\t\t\t\t\t\t\tpreload : false,\r\n\t\t\t\t\t\t\tscrolling : \"no\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsmallBtn : false,\r\n\t\t\t\t\t\tcloseBtn : true,\r\n\t\t\t\t\t\tfullScreen : false,\r\n\t\t\t\t\t\tslideShow : false\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\titem.opts.slideClass += ' fancybox-slide--video';\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// If no content type is found, then set it to `iframe` as fallback\r\n\t\t\t\titem.type = 'iframe';\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t});\r\n\r\n}(window.jQuery));\r\n","/**\r\n * jQuery gMap - Google Maps API V3\r\n *\r\n * @license MIT License; http://www.opensource.org/licenses/mit-license.php\r\n * @url http://github.com/marioestrada/jQuery-gMap\r\n * @author Mario Estrada based on original plugin by Cedric Kastner \r\n * @version 2.1.5\r\n */\r\n/* global google */\r\n(function($)\r\n{\r\n // Main plugin function\r\n $.fn.gMap = function(options, methods_options)\r\n {\r\n // Optional methods\r\n switch(options)\r\n {\r\n case 'addMarker':\r\n return $(this).trigger(\r\n 'gMap.addMarker',\r\n [methods_options.latitude, methods_options.longitude, methods_options.content, methods_options.icon, methods_options.popup]\r\n );\r\n case 'centerAt':\r\n return $(this).trigger('gMap.centerAt', [methods_options.latitude, methods_options.longitude, methods_options.zoom]);\r\n case 'clearMarkers':\r\n return $(this).trigger('gMap.clearMarkers');\r\n }\r\n\r\n // Build main options before element iteration\r\n var opts = $.extend({}, $.fn.gMap.defaults, options);\r\n\r\n // Iterate through each element\r\n return this.each(function()\r\n {\r\n // Create map and set initial options\r\n var $gmap = new google.maps.Map(this);\r\n\r\n $(this).data('gMap.reference', $gmap);\r\n\r\n // Create new object to geocode addresses\r\n var $geocoder = new google.maps.Geocoder();\r\n\r\n // Check for address to center on\r\n if (opts.address)\r\n {\r\n // Get coordinates for given address and center the map\r\n $geocoder.geocode(\r\n {\r\n address: opts.address\r\n }, function(gresult, status)\r\n {\r\n if(gresult && gresult.length) {\r\n $gmap.setCenter(gresult[0].geometry.location);\r\n }\r\n }\r\n );\r\n }else{\r\n // Check for coordinates to center on\r\n if (opts.latitude && opts.longitude)\r\n {\r\n // Center map to coordinates given by option\r\n $gmap.setCenter(new google.maps.LatLng(opts.latitude, opts.longitude));\r\n }\r\n else\r\n {\r\n // Check for a marker to center on (if no coordinates given)\r\n if ($.isArray(opts.markers) && opts.markers.length > 0)\r\n {\r\n // Check if the marker has an address\r\n if (opts.markers[0].address)\r\n {\r\n // Get the coordinates for given marker address and center\r\n $geocoder.geocode(\r\n {\r\n address: opts.markers[0].address\r\n }, function(gresult, status)\r\n {\r\n if(gresult && gresult.length > 0) {\r\n $gmap.setCenter(gresult[0].geometry.location);\r\n }\r\n }\r\n );\r\n }else{\r\n // Center the map to coordinates given by marker\r\n $gmap.setCenter(new google.maps.LatLng(opts.markers[0].latitude, opts.markers[0].longitude));\r\n }\r\n }else{\r\n // Revert back to world view\r\n $gmap.setCenter(new google.maps.LatLng(34.885931, 9.84375));\r\n }\r\n }\r\n }\r\n $gmap.setZoom(opts.zoom);\r\n\r\n // Set the preferred map type\r\n $gmap.setMapTypeId(google.maps.MapTypeId[opts.maptype]);\r\n\r\n // Set scrollwheel option\r\n var map_options = { scrollwheel: opts.scrollwheel, disableDoubleClickZoom: !opts.doubleclickzoom };\r\n // Check for map controls\r\n if(opts.controls === false){\r\n $.extend(map_options, { disableDefaultUI: true });\r\n }else if (opts.controls.length !== 0){\r\n $.extend(map_options, opts.controls, { disableDefaultUI: true });\r\n }\r\n\r\n $gmap.setOptions(map_options);\r\n\r\n // Create new icon\r\n var gicon = new google.maps.Marker();\r\n var marker_icon;\r\n var marker_shadow;\r\n\r\n // Set icon properties from global options\r\n marker_icon = new google.maps.MarkerImage(opts.icon.image);\r\n marker_icon.size = new google.maps.Size(opts.icon.iconsize[0], opts.icon.iconsize[1]);\r\n marker_icon.anchor = new google.maps.Point(opts.icon.iconanchor[0], opts.icon.iconanchor[1]);\r\n gicon.setIcon(marker_icon);\r\n\r\n if(opts.icon.shadow)\r\n {\r\n marker_shadow = new google.maps.MarkerImage(opts.icon.shadow);\r\n marker_shadow.size = new google.maps.Size(opts.icon.shadowsize[0], opts.icon.shadowsize[1]);\r\n marker_shadow.anchor = new google.maps.Point(opts.icon.shadowanchor[0], opts.icon.shadowanchor[1]);\r\n gicon.setShadow(marker_shadow);\r\n }\r\n\r\n // Bind actions\r\n $(this).bind('gMap.centerAt', function(e, latitude, longitude, zoom)\r\n {\r\n if(zoom) {\r\n $gmap.setZoom(zoom);\r\n }\r\n\r\n $gmap.panTo(new google.maps.LatLng(parseFloat(latitude), parseFloat(longitude)));\r\n });\r\n\r\n // Clear Markers\r\n var overlays = [];\r\n $(this).bind('gMap.clearMarkers', function()\r\n {\r\n while(overlays[0]){\r\n overlays.pop().setMap(null);\r\n }\r\n });\r\n\r\n var last_infowindow;\r\n $(this).bind('gMap.addMarker', function(e, latitude, longitude, content, icon, popup)\r\n {\r\n var marker_icon;\r\n var marker_shadow;\r\n var glatlng = new google.maps.LatLng(parseFloat(latitude), parseFloat(longitude));\r\n\r\n var gmarker = new google.maps.Marker({\r\n position: glatlng\r\n });\r\n\r\n if(icon)\r\n {\r\n marker_icon = new google.maps.MarkerImage(icon.image);\r\n marker_icon.size = new google.maps.Size(icon.iconsize[0], icon.iconsize[1]);\r\n marker_icon.anchor = new google.maps.Point(icon.iconanchor[0], icon.iconanchor[1]);\r\n gmarker.setIcon(marker_icon);\r\n\r\n if(icon.shadow)\r\n {\r\n marker_shadow = new google.maps.MarkerImage(icon.shadow);\r\n marker_shadow.size = new google.maps.Size(icon.shadowsize[0], icon.shadowsize[1]);\r\n marker_shadow.anchor = new google.maps.Point(icon.shadowanchor[0], icon.shadowanchor[1]);\r\n gicon.setShadow(marker_shadow);\r\n }\r\n }else{\r\n gmarker.setIcon(gicon.getIcon());\r\n gmarker.setShadow(gicon.getShadow());\r\n }\r\n\r\n if(content)\r\n {\r\n if(content === '_latlng') {\r\n content = latitude + ', ' + longitude;\r\n }\r\n\r\n var infowindow = new google.maps.InfoWindow({\r\n content: opts.html_prepend + content + opts.html_append\r\n });\r\n\r\n google.maps.event.addListener(gmarker, 'click', function()\r\n {\r\n if (last_infowindow) {\r\n last_infowindow.close();\r\n }\r\n infowindow.open($gmap, gmarker);\r\n last_infowindow = infowindow;\r\n });\r\n\r\n if(popup)\r\n {\r\n google.maps.event.addListenerOnce($gmap, 'tilesloaded', function()\r\n {\r\n infowindow.open($gmap, gmarker);\r\n });\r\n }\r\n }\r\n gmarker.setMap($gmap);\r\n overlays.push(gmarker);\r\n });\r\n\r\n var marker;\r\n var self = this;\r\n var geocode_callback = function(marker) {\r\n return function(gresult, status) {\r\n // Create marker\r\n if(gresult && gresult.length > 0)\r\n {\r\n $(self).trigger(\r\n 'gMap.addMarker',\r\n [gresult[0].geometry.location.lat(), gresult[0].geometry.location.lng(), marker.html, marker.icon, marker.popup]\r\n );\r\n }\r\n };\r\n };\r\n\r\n // Loop through marker array\r\n for (var j = 0; j < opts.markers.length; j++)\r\n {\r\n // Get the options from current marker\r\n marker = opts.markers[j];\r\n\r\n // Check if address is available\r\n if (marker.address)\r\n {\r\n // Check for reference to the marker's address\r\n if (marker.html === '_address') {\r\n marker.html = marker.address;\r\n }\r\n\r\n // Get the point for given address\r\n $geocoder.geocode({\r\n address: marker.address\r\n }, geocode_callback(marker));\r\n }else{\r\n $(this).trigger('gMap.addMarker', [marker.latitude, marker.longitude, marker.html, marker.icon, marker.popup]);\r\n }\r\n }\r\n });\r\n\r\n };\r\n\r\n // Default settings\r\n $.fn.gMap.defaults = {\r\n address: '',\r\n latitude: 0,\r\n longitude: 0,\r\n zoom: 1,\r\n markers: [],\r\n controls: [],\r\n scrollwheel: false,\r\n doubleclickzoom: true,\r\n maptype: 'ROADMAP',\r\n html_prepend: '',\r\n html_append: '
',\r\n icon: {\r\n image: \"http://www.google.com/mapfiles/marker.png\",\r\n shadow: \"http://www.google.com/mapfiles/shadow50.png\",\r\n iconsize: [20, 34],\r\n shadowsize: [37, 34],\r\n iconanchor: [9, 34],\r\n shadowanchor: [6, 34]\r\n }\r\n };\r\n\r\n})(jQuery);\r\n","function TextBanner() {\r\n $PrevSelectedDesktop = $(\"#AnoncementArea ul.desktopSlide li.selectedBannerDesktop\")\r\n $PrevSelectedDesktop.removeClass(\"selectedBannerDesktop\")\r\n\r\n if ($(\"#AnoncementArea ul.desktopSlide li\").length != $PrevSelectedDesktop.index() + 1) {\r\n $PrevSelectedDesktop.next().addClass(\"selectedBannerDesktop\");\r\n } else {\r\n $(\"#AnoncementArea ul.desktopSlide li\").first().addClass(\"selectedBannerDesktop\");\r\n }\r\n\r\n $PrevSelectedMobile = $(\"#AnoncementArea ul.mobileSlide li.selectedBannerMobile\")\r\n $PrevSelectedMobile.removeClass(\"selectedBannerMobile\")\r\n\r\n if ($(\"#AnoncementArea ul.mobileSlide li\").length != $PrevSelectedMobile.index() + 1) {\r\n $PrevSelectedMobile.next().addClass(\"selectedBannerMobile\");\r\n } else {\r\n $(\"#AnoncementArea ul.mobileSlide li\").first().addClass(\"selectedBannerMobile\");\r\n }\r\n}\r\n\r\nfunction settingTextBanner() {\r\n setInterval(TextBanner, 7000);\r\n}\r\n\r\n\r\nfunction IsFollowCategory() {\r\n if ($(\".BannerProductList .Product .QuickLookLikeBtn\").length <= 0) {\r\n return;\r\n }\r\n $.ajax({\r\n type: 'get',\r\n url: getRequestRoute() + \"/p/ProductDetails/IsFollowAll\",\r\n dataType: 'json',\r\n async: true,\r\n success: function (dt) {\r\n updateList(dt);\r\n }\r\n });\r\n\r\n var updateList = function (dt) {\r\n $(\".BannerProductList .Product .QuickLookLikeBtn\").removeClass(\"active\");\r\n\r\n for (var i in dt) {\r\n var item = dt[i];\r\n\r\n var followlar = $(\".BannerProductList .Product .QuickLookLikeBtn\").filter(function (index) {\r\n return $(this).attr(\"data-id\") == item[\"ProductID\"] && $(this).attr(\"data-colorid\") == item[\"ColorID\"];\r\n });\r\n\r\n if (followlar.length > 0) {\r\n var followItem = $(followlar[0]);\r\n followItem.addClass(\"active\");\r\n followItem.find(\".sorsfont\").removeClass(\"sorsfont-Star\").addClass(\"sorsfont-Star-fill\");\r\n\r\n //if (followItem.hasClass(\"active\")) {\r\n // followItem.children(\"img\").attr(\"src\", \"/Images/OXNW/like_full.svg\");\r\n //}\r\n followItem.children(\"img\").attr(\"src\", \"/Images/OS/Heart_black.svg\");\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction FollowProperties() {\r\n $(document).on(\"click\", \".BannerProductList .QuickLookLikeBtn:not(.active)\", function () {\r\n\r\n var ProductID = $($(this)).attr(\"data-id\");\r\n var ColorID = $($(this)).attr(\"data-colorid\");\r\n button = $(this);\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"show\");\r\n\r\n AddToFavorite(ColorID, ProductID, function (result, msg) {\r\n if (result == true) {\r\n button.addClass(\"active\");\r\n button.find(\".sorsfont\").removeClass(\"sorsfont-Star\").addClass(\"sorsfont-Star-fill\");\r\n\r\n //favorilere eklenince kalp siyah\r\n button.find(\".heart-icon\").attr(\"src\", \"/images/OS/Heart_black.svg\");\r\n }\r\n else {\r\n var loginLink = getRequestRoute() + \"/p/User/Login\";\r\n\r\n SwalGenerate(\"warning\", msg, \"Favorilere Eklenemedi\", \"\" + getStandartMessages(\"GirisYap\") + \" \");\r\n }\r\n\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"hide\");\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \".BannerProductList .QuickLookLikeBtn.active\", function () {\r\n var ProductID = $($(this)).attr(\"data-id\");\r\n button = $(this);\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"show\");\r\n\r\n removeFavorite(ProductID, function (result) {\r\n if (result == true) {\r\n button.removeClass(\"active\");\r\n button.find(\".sorsfont\").removeClass(\"sorsfont-Star-fill\").addClass(\"sorsfont-Star\");\r\n\r\n //favorilerden çıkarınca kalp ilk haline dönüyor\r\n button.find(\".heart-icon\").attr(\"src\", \"/images/OS/Heart.svg\");\r\n }\r\n else {\r\n SwalGenerate(\"error\", getStandartMessages(\"BirHataOlustu\"), getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"Kapat\"));\r\n }\r\n\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"hide\");\r\n });\r\n });\r\n}\r\n\r\nfunction GetLayoutTextBanners() {\r\n $.ajax({\r\n type: 'get',\r\n async: true,\r\n cache: false,\r\n url: getRequestRoute() + \"/p/Home/GetTextBannerList\",\r\n success: function (dt) {\r\n if (dt.length > 0) {\r\n var desktopCounter = 0;\r\n var mobileCounter = 0;\r\n for (var i = 0; i < dt.length; i++) {\r\n if (dt[i].Area == 12) {\r\n if (desktopCounter == 0) {\r\n $(\"#AnoncementArea ul.desktopSlide\").append(\"\" + dt[i].Content + \" \");\r\n desktopCounter++;\r\n } else {\r\n $(\"#AnoncementArea ul.desktopSlide\").append(\"\" + dt[i].Content + \" \");\r\n desktopCounter++;\r\n }\r\n } else {\r\n if (mobileCounter == 0) {\r\n $(\"#AnoncementArea ul.mobileSlide\").append(\"\" + dt[i].Content + \" \");\r\n mobileCounter++;\r\n } else {\r\n $(\"#AnoncementArea ul.mobileSlide\").append(\"\" + dt[i].Content + \" \");\r\n mobileCounter++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n settingTextBanner();\r\n }\r\n });\r\n}\r\n\r\nfunction Instagram() {\r\n if ($(\".InstagramContainer .InstagramBody .InstagramItem\").length > 0) {\r\n $(document).on(\"click\", \".InstagramContainer .InstagramBody .InstagramItem > a\", function () {\r\n var MediaID = $(this).attr(\"data-media\");\r\n\r\n if (MediaID != null && MediaID != \"\" && MediaID != undefined) {\r\n CurrentLink = $(this);\r\n GenerateLocalLoading(CurrentLink.find(\".ImageArea\"), \"show\");\r\n\r\n GetMediaDetail(MediaID, function (dt) {\r\n if (dt != null && dt != false) {\r\n\r\n InstagramModal = $(\"#InstagramModal\");\r\n InstagramModal.find(\".modal-body article .LeftArea .ImageArea img\").attr(\"src\", dt.MediaURL);\r\n InstagramModal.find(\".modal-body article .RightArea .description\").html(dt.Caption);\r\n InstagramModal.find(\".modal-body article .RightArea .TimeStamp\").html(dt.FormatDate);\r\n\r\n InstagramModal.modal(\"show\");\r\n }\r\n\r\n GenerateLocalLoading(CurrentLink.find(\".ImageArea\"), \"hide\");\r\n });\r\n }\r\n\r\n });\r\n }\r\n\r\n function GetMediaDetail(MediaID, callback) {\r\n $.ajax({\r\n type: 'GET',\r\n url: getRequestRoute() + \"/p/Home/GetInstagramMediaDetail?MediaID=\" + MediaID,\r\n cache: false,\r\n contentType: 'application/json; charset=utf-8',\r\n success: function (dt) {\r\n callback(dt);\r\n },\r\n error: function () {\r\n callback(false);\r\n }\r\n });\r\n }\r\n}\r\n\r\n$(document).ready(function () {\r\n FollowProperties();\r\n settingTextBanner();\r\n GetLayoutTextBanners();\r\n Instagram();\r\n if (!isMobileResolution()) {\r\n $(\"#HomeBannerSection .SBanner\").each(function (index) {\r\n if ($(this).find(\".mobile-section\").length > 0) {\r\n caruselInner = $(this).find(\".mobile-section\").closest(\".carousel-inner\");\r\n\r\n //$(this).find(\".mobile-section\").closest(\".carousel-item\").remove();\r\n caruselInner.find(\".carousel-item\").first().addClass(\"active\");\r\n }\r\n\r\n //if ($(this).find(\".carousel-inner .carousel-item\").length <= 1) {\r\n // $(this).find(\"> a\").remove();\r\n //}\r\n });\r\n }\r\n else {\r\n $(\"#HomeBannerSection .SBanner\").each(function (index) {\r\n if ($(this).find(\".desktop-section\").length > 0) {\r\n caruselInner = $(this).find(\".desktop-section\").closest(\".carousel-inner\");\r\n\r\n //$(this).find(\".desktop-section\").closest(\".carousel-item\").remove();\r\n caruselInner.find(\".carousel-item\").first().addClass(\"active\");\r\n }\r\n\r\n //if ($(this).find(\".carousel-inner .carousel-item\").length <= 1) {\r\n // $(this).find(\"> a\").remove();\r\n //}\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"#Anasayfa1 .ScrollDown i\", function () {\r\n var height = $(\"#HomeBannerSection #Anasayfa1\").height();\r\n\r\n $(\"html, body\").animate({ scrollTop: height }, 500, 'swing');\r\n });\r\n\r\n if ($(\"body.home .HomeProducts .ProductList .Prd\").length > 0) {\r\n $(\"body.home .ProductList .Prd img.PImage\").Lazy();\r\n }\r\n \r\n if ($('#RegisterCampaignModal').length > 0 && $('body').hasClass(\"home\")) {\r\n $('#RegisterCampaignModal').modal(\"show\"); \r\n }\r\n \r\n $(document).on(\"click\", \"#whatsapInfo .closeIcon .sorsfont-close\", function () {\r\n document.getElementById(\"whatsapInfo\").style.display = \"none\";\r\n });\r\n $(document).on(\"click\", \".SellWithUs #Phone2\", function () {\r\n if ($(\".SellWithUs #Phone2\").val().length < 1) {\r\n $('.SellWithUs #Phone2').val('0');\r\n }\r\n \r\n \r\n $(\".SellWithUs #Phone2\").mask(\"Z99 999 99 99\", {\r\n translation: {\r\n 'Z': {\r\n pattern: /[1-9]/, //optional: true\r\n }\r\n }\r\n });\r\n \r\n //$(this).val(phone);\r\n });\r\n});\r\n","$(document).ready(function () {\r\n\r\n $(document).on(\"click\", \".langswitch .LangSection #LangSwitchButton\", function () {\r\n GenerateLocalLoading($(\"body\"), \"show\");\r\n\r\n var countryCode = $(\".LangSection #CountryList\").val();\r\n var LangID = $(\".LangSection #LangList\").val();\r\n\r\n if (countryCode == null || countryCode == undefined || countryCode == \"\") {\r\n SwalGenerate(\"error\", getStandartMessages(\"LutfenUlkeSeçin\"), getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"TekrarDene\"));\r\n GenerateLocalLoading($(\"body\"), \"hide\");\r\n }\r\n else if (LangID == null || LangID == undefined || LangID == \"\") {\r\n SwalGenerate(\"error\", getStandartMessages(\"LutfenBirDilSecin\"), getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"TekrarDene\"));\r\n GenerateLocalLoading($(\"body\"), \"hide\");\r\n }\r\n else {\r\n $.ajax({\r\n type: 'POST',\r\n url: \"/LangSwitch/SetSelectedCountry?CountryCode=\" + countryCode,\r\n cache: false,\r\n success: function (dt) {\r\n\r\n if (dt == \"False\") {\r\n GenerateLocalLoading($(\"body\"), \"hide\");\r\n SwalGenerate(\"error\", errorMsg, getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"TekrarDene\"));\r\n }\r\n else {\r\n //changeSiteLanguage(LangID, \"\");\r\n\r\n $.ajax({\r\n type: 'get',\r\n url: '/Home/ChangePageLang',\r\n data: \"&AName=\" + $(\"#AName\").val() + \"&CName=\" + $(\"#CName\").val() + \"&langID=\" + LangID + \"&Cats=0\",\r\n success: function (dt) {\r\n window.parent.location.href = dt;\r\n }\r\n });\r\n }\r\n },\r\n error: function (dt) {\r\n GenerateLocalLoading($(\"body\"), \"hide\");\r\n SwalGenerate(\"error\", errorMsg, getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"TekrarDene\"));\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n});","//#region Lang And Currency\r\nfunction changeSiteLanguage(langID, langCode) {\r\n\r\n var url = \"/\";\r\n var Catalogs = $(\"#PgCatalogs\").val().split(\"/\");\r\n var ctlgs = \"\";\r\n\r\n for (var i = 0; i < Catalogs.length; i++) {\r\n if (Catalogs[i].length > 0) {\r\n ctlgs += \"&Cats=\" + Catalogs[i];\r\n }\r\n }\r\n\r\n $.ajax({\r\n type: 'get',\r\n url: '/Home/ChangePageLang',\r\n data: 'PID=' + $(\"#PID\").val() + \"&PgType=\" + $(\"#PgType\").val() + \"&AName=\" + $(\"#AName\").val() + \"&CName=\" + $(\"#CName\").val() + \"&langID=\" + langID + ctlgs + \"&langCode=\" + langCode,\r\n success: function (dt) {\r\n window.parent.location.href = dt;\r\n }\r\n });\r\n\r\n}\r\n\r\nfunction ShowLangAreaForChange() {\r\n var userLang = navigator.language || navigator.userLanguage;\r\n\r\n if (userLang != null && userLang != undefined && userLang.length > 2) {\r\n userLang = userLang.substr(0, 2).toLowerCase();\r\n }\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: getRequestRoute() + \"/p/Home/ShowLangSwitch\",\r\n success: function (data) {\r\n\r\n if ($(\".LangSelectionArea\").length <= 0) {\r\n\r\n if (document.URL.indexOf(\"localhost\") >= 0) {\r\n\r\n $(\".FixedHeader > .container:first\").prepend(data);\r\n }\r\n }\r\n else if ($(\".LangSelectionArea\").hasClass(\"gizle\")) {\r\n\r\n if (document.URL.indexOf(\"localhost\") >= 0) {\r\n\r\n $(\".LangSelectionArea\").show();\r\n }\r\n }\r\n else {\r\n $(\".LangSelectionArea\").hide();\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction ShowCurrencyForChange() {\r\n $.ajax({\r\n type: \"GET\",\r\n url: getRequestRoute() + \"/p/Home/ShowCurrencySwitch\",\r\n success: function (data) {\r\n\r\n if ($(\".CurrrencySelectionArea\").length <= 0) {\r\n\r\n if ($(\".AllowCurrencyChange\").length > 0) {\r\n\r\n $(\".FixedHeader > .container:first\").prepend(data);\r\n }\r\n\r\n } else if ($(\".CurrrencySelectionArea\").hasClass(\"gizle\")) {\r\n\r\n if ($(\".AllowCurrencyChange\").length > 0) {\r\n\r\n $(\".CurrencySelectionArea\").show();\r\n }\r\n\r\n\r\n } else {\r\n\r\n $(\".CurrrencySelectionArea\").hide();\r\n }\r\n\r\n }\r\n });\r\n\r\n}\r\n\r\nfunction CountryControlForModal() {\r\n if ($(\"#AnotherCountry\").length > 0 && $(\"#AnotherCountry\").val() != \"False\") {\r\n\r\n $(\"#AnotherCountryModal\").modal({\r\n keyboard: false,\r\n handleUpdate: false,\r\n backdrop: 'static'\r\n });\r\n }\r\n\r\n $(document).on(\"click\", \"#AnotherCountryModal .confirmButton\", function () {\r\n $(\"#AnotherCountryModal\").modal(\"hide\");\r\n });\r\n\r\n $('#AnotherCountryModal').on('hidden.bs.modal', function (e) {\r\n $(\"#AnotherCountryModal\").remove();\r\n });\r\n}\r\n//#endregion Lang And Currency\r\n\r\nfunction TopLink() {\r\n $('.top_link').hide();\r\n $('.top_link').click(function () {\r\n $('html, body').animate({ scrollTop: 0 }, 'slow');\r\n });\r\n\r\n var showTopLink = 100;\r\n $(window).scroll(function () {\r\n if ($('.top_link').length > 0) {\r\n\r\n if ($(window).scrollTop() > showTopLink) {\r\n $('.top_link').fadeIn('slow');\r\n } else {\r\n $('.top_link').fadeOut('slow');\r\n }\r\n }\r\n });\r\n\r\n $(document).on(\"click\", \".BrandContent .brand-filter > a\", function () {\r\n var target = $(this).attr(\"data-href\");\r\n\r\n var targetdiv = document.getElementById(target);\r\n\r\n if (targetdiv != null && targetdiv != undefined) {\r\n $('html, body').animate({ scrollTop: (targetdiv.offsetTop) }, 'slow');\r\n }\r\n });\r\n}\r\n\r\nfunction ContentPageSetteing() {\r\n if ($(\"body\").hasClass(\"contentpg\") && $(\"#contentCollapse\").length > 0) {\r\n var urlParams = new URLSearchParams(window.location.search);\r\n var myParam = urlParams.get('param');\r\n\r\n if (myParam == \"iade\") {\r\n $(\"#contentCollapse .card.iade .card-header button\").trigger(\"click\");\r\n\r\n var iadeDivTop = window.scrollY + document.querySelector('.card.iade').getBoundingClientRect().top;\r\n\r\n if (iadeDivTop != null && iadeDivTop != undefined && iadeDivTop != \"\") {\r\n GenerateLocalLoading($(\"body\"), \"show\");\r\n\r\n setTimeout(function () {\r\n $('html, body').animate({\r\n scrollTop: (iadeDivTop - 200)\r\n }, 0);\r\n\r\n GenerateLocalLoading($(\"body\"), \"hide\");\r\n }, 1000);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction GetInsiderObjectForHome() {\r\n var cName = $(\"#CName\").val();\r\n\r\n if (cName == \"Home\") {\r\n $.ajax({\r\n type: 'get',\r\n url: getRequestRoute() + \"/p/Home/GetInsiderObjectForHome\",\r\n data: \"Cname=\" + cName,\r\n dataType: 'json',\r\n async: true,\r\n success: function (dt) {\r\n window.insider_object = jQuery.parseJSON(dt);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction CalculateTopForWhatsapInfoSection() {\r\n var footerHeigh = parseInt($(\"header\").css(\"height\").split(\"px\")[0]);\r\n var banner1Height = parseInt($(\"#Anasayfa1\").css(\"height\").split(\"px\")[0]);\r\n document.getElementById(\"whatsapInfo\").style.display = \"inline\";\r\n\r\n document.getElementById(\"whatsapInfo\").style.top = (((footerHeigh + banner1Height) / 100) * 90.3) + \"px\";\r\n}\r\n\r\nfunction LoginRegisterModalEvents() {\r\n $('#LoginRegisterModal').on('hide.bs.modal', function () {\r\n $(\"#LoginRegisterModal .LoginForm\").trigger(\"reset\");\r\n $(\"#LoginRegisterModal .RegisterForm\").trigger(\"reset\");\r\n $(\"#LoginRegisterModal .ForgettenForm\").trigger(\"reset\");\r\n });\r\n\r\n $(document).on(\"click\", \".OrderContentDetails .RegisterForCoupon .LoginRegister\", function (e) {\r\n var event = $(this).attr(\"data-event\");\r\n\r\n if (event == \"login\") {\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .LoginPanel\").show();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n }\r\n else if (event == \"register\") {\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .LoginPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").show();\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $(document).on(\"click\", \"#LoginRegisterModal .NowRegister, #LoginRegisterModal .OpenLoginPanel, #LoginRegisterModal .ForgetPass, #LoginRegisterModal .CancelForgettenPass\", function (e) {\r\n var event = $(this).attr(\"data-event\");\r\n if ($(this).hasClass(\"NowRegister\")) {\r\n $(\"#LoginRegisterModal .RegisterPanel\").show();\r\n $(\"#LoginRegisterModal .LoginPanel\").hide();\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"block\")\r\n\r\n }\r\n else if ($(this).hasClass(\"OpenLoginPanel\") || $(this).hasClass(\"CancelForgettenPass\")) {\r\n $(\"#LoginRegisterModal .LoginPanel\").show();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"block\")\r\n $(\"#LoginRegisterModal .modal-title\").css(\"display\", \"block\")\r\n $(\"#LoginRegisterModal .modal-title-forgotpass\").css(\"display\", \"none\")\r\n }\r\n else {\r\n $(\"#LoginRegisterModal .LoginPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").show();\r\n $(\"#LoginRegisterModal .modal-title\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .modal-title-forgotpass\").css(\"display\", \"block\")\r\n }\r\n\r\n return false;\r\n });\r\n\r\n $(document).on(\"click\", \"#LoginRegisterModal .ContinueWithoutMember\", function (e) {\r\n SetMemberless();\r\n });\r\n\r\n $(document).on(\"click\", \"#LoginRegisterModal .close\", function (e) {\r\n $(\"#LoginRegisterModal\").modal('hide');\r\n });\r\n\r\n $(document).on(\"submit\", \"#LoginRegisterModal form.LoginForm, #LoginRegisterModal form.RegisterForm\", function () { /*#LoginRegisterModal form.ForgettenForm*/\r\n LoginRegisterFormSubmit($(this));\r\n return false;\r\n });\r\n\r\n $(document).on(\"click\", \"#userlogin, #UserMenus #UserAndBasket #AccountLink .login\", function () {\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n $(\"#LoginRegisterModal .LoginPanel\").show();\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"none\");\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"block\");\r\n });\r\n\r\n $(document).on(\"click\", \"#UserMenus #UserAndBasket #AccountLink .register\", function () {\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .LoginPanel\").hide();\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").show();\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"none\");\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"block\");\r\n });\r\n\r\n $(document).on(\"click\", \".Mobilmenu .MobileMenuFooter .login\", function () {\r\n\r\n $(\"body > .Mobilmenu > ul\").removeClass(\"open\");\r\n $(\"body > .Mobilmenu > ul > li\").removeClass(\"open\");\r\n $(\"body > .Mobilmenu > ul > li > ul\").removeClass(\"open\");\r\n\r\n toggleMenusOperation(\"all\");\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n $(\"#LoginRegisterModal .LoginPanel\").show();\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"block\")\r\n });\r\n $(document).on(\"click\", \".Mobilmenu .MobileMenuFooter .register\", function () {\r\n\r\n $(\"body > .Mobilmenu > ul\").removeClass(\"open\");\r\n $(\"body > .Mobilmenu > ul > li\").removeClass(\"open\");\r\n $(\"body > .Mobilmenu > ul > li > ul\").removeClass(\"open\");\r\n\r\n toggleMenusOperation(\"all\");\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .LoginPanel\").hide();\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").show();\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"block\")\r\n });\r\n\r\n $(document).on(\"click\", \".swal2-confirm .loginbtn\", function () {\r\n $(\".swal2-container\").hide();\r\n $(\"#LoginRegisterModal\").modal('show');\r\n $(\"#LoginRegisterModal .ForgettenPassPanel\").hide();\r\n $(\"#LoginRegisterModal .RegisterPanel\").hide();\r\n $(\"#LoginRegisterModal .LoginPanel\").show();\r\n $(\"#LoginRegisterModal .modal-header .register-tittle\").css(\"display\", \"none\")\r\n $(\"#LoginRegisterModal .modal-header .login-tittle\").css(\"display\", \"block\")\r\n });\r\n}\r\n\r\nfunction footerToggleClass() {\r\n if (isMobileResolution) {\r\n $(\".FooterNav .footerMenu\").live(\"click\", function () {\r\n $(\".FooterNav .footerMenu\").not($(this)).removeClass(\"toggle-minus\");\r\n $(this).toggleClass(\"toggle-minus\");\r\n });\r\n }\r\n}\r\n\r\nfunction BrandCalculateScroll() {\r\n var NativeQueryFilter = window.location.href.slice(window.location.href.indexOf('#') + 1); // QueryString okunur\r\n var targetdiv = document.getElementById(NativeQueryFilter);\r\n\r\n if (targetdiv != null && targetdiv != undefined) {\r\n $('html, body').animate({ scrollTop: (targetdiv.offsetTop) }, 'slow');\r\n }\r\n}\r\n\r\n$(document).ready(function () {\r\n\r\n if (isMobileResolution()) {\r\n SlickSlider(\"banner3lu\");\r\n }\r\n\r\n SlickSlider(\"banner\");\r\n //SlickSlider(\"lastaddedprd\");\r\n\r\n $(document).on(\"click\", \".Mainmenu .Brands > a\", function () {\r\n var target = $(this).attr(\"href\").split('#');\r\n var targetdiv = document.getElementById(target[1]);\r\n\r\n if (targetdiv != null && targetdiv != undefined) {\r\n $('html, body').animate({ scrollTop: (targetdiv.offsetTop) }, 'slow');\r\n }\r\n });\r\n\r\n BrandCalculateScroll();\r\n TopLink();\r\n CountryControlForModal();\r\n ContentPageSetteing();\r\n LoginRegisterModalEvents();\r\n\r\n //GetInsiderObjectForHome();\r\n\r\n footerToggleClass();\r\n $(\"body .backdrop\").on(\"click\", function (e) {\r\n toggleMenusOperation(\"all\");\r\n });\r\n\r\n $(window).resize(function () {\r\n setContentHeight();\r\n });\r\n\r\n $(document).on(\"submit\", \"footer .NewsletterFormArea form\", function () {\r\n form = $(this);\r\n GenerateLocalLoading($(\" > div\", form), \"show\");\r\n\r\n UserForms(form, function (dt) {\r\n if (dt.Sonuc == true) {\r\n GenerateLocalLoading(form, \"hide\");\r\n SwalGenerate(\"success\", dt.IslemSonucAciklama, getStandartMessages(\"IslemBasarili\"), getStandartMessages(\"Kapat\"));\r\n }\r\n else {\r\n var errorMsg = dt.IslemSonucAciklama;\r\n\r\n if (errorMsg == \"\" || errorMsg == null) {\r\n errorMsg = dt;\r\n }\r\n\r\n SwalGenerate(\"error\", errorMsg, getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"Kapat\"));\r\n GenerateLocalLoading($(\" > div\", form), \"hide\");\r\n }\r\n });\r\n\r\n return false;\r\n });\r\n\r\n $(document).on(\"click\", \".errorContainer .SearchArea .input-group-append\", function () {\r\n $(\".SearchArea form\").trigger(\"submit\");\r\n });\r\n\r\n if (isMobileResolution()) {\r\n $(document).on(\"click\", \"footer .FooterNav .footerMenu.mobile-accordion\", function () {\r\n $(\"footer .FooterNav .footerMenu.mobile-accordion ul\").not($(this).find(\"ul\")).slideUp();\r\n\r\n $(this).find(\"ul\").slideToggle();\r\n });\r\n }\r\n\r\n $(\"#brand-Bottom a\").on(\"click\", function (e) {\r\n\r\n var href = $(this).attr('data-href');\r\n\r\n // alert(\"href: \" + href);\r\n\r\n if (href == 'alpthabet-DİĞER') {\r\n $(\"#alpthabet-DİĞER\").show();\r\n }\r\n else {\r\n $(\"#alpthabet-DİĞER\").hide();\r\n }\r\n });\r\n\r\n if (window.location.href.indexOf(\"#alpthabet\") > -1) {\r\n $(\"#alpthabet-DİĞER\").hide();\r\n }\r\n else {\r\n $(\"#alpthabet-DİĞER\").show();\r\n }\r\n});\r\n\r\n//$(\"#Anasayfa1 .SBannerImg\").load(function () {\r\n// CalculateHeightForLeftInfoBar(false);\r\n//});\r\n\r\n//function CalculateHeightForLeftInfoBar(activeNewsArea) {\r\n// if (!isMobileResolution() && $(\"body\").hasClass(\"home\")) {\r\n// var banner1Height = $(\"#Anasayfa1\").height();\r\n// var headerHeight = $(\"header\").height();\r\n\r\n// document.getElementById(\"LeftInfoBar\").style.height = (banner1Height + headerHeight) + \"px\";\r\n// document.getElementById(\"LeftInfoBar\").style.visibility = \"visible\";\r\n\r\n// if (activeNewsArea) {\r\n// document.getElementById(\"LeftInfoBar\").style.top = $(\"header .News\").height() + \"px\";\r\n// }\r\n\r\n// //CalculateTopForWhatsapInfoSection();\r\n// }\r\n//}","/* \r\n * 21.02.2018\r\n * NewCatController ile birlikte CategoryAndFilters.js yerine kullanılır\r\n * Infinity Scroll yerine Paging yapısına uygundur\r\n * $(document).ready 'nin üstünde bulunan fonksiyonlar açılışta çağrılır\r\n * $(document).ready 'nin altında bulunan fonksiyonlar event'lara bağlıdır, $(document).ready 'deki click olaylarıyla tetiklenir\r\n */\r\n\r\nvar date = new Date();\r\ndate.setTime(date.getTime() + (5 * 60 * 1000));\r\n\r\nfunction ToggleLeftBar() {\r\n if (!isMobileResolution()) {\r\n $(\".FilterForm .filterLink\").live(\"click\", function () {\r\n $(\".FilterForm .filterLink\").not($(this)).removeClass(\"toggle-minus\");\r\n $(\".FilterForm .FilterBoxes\").not($(this).parent().find(\".FilterBoxes\")).slideUp();\r\n\r\n $(this).toggleClass(\"toggle-minus\");\r\n $(this).parent().find(\".FilterBoxes\").slideToggle();\r\n });\r\n }\r\n else {\r\n $(\".FilterForm .filterLink\").live(\"click\", function () {\r\n $(\".FilterForm .filterLink\").not($(this)).removeClass(\"toggle-minus\");\r\n $(\".FilterForm .FilterBoxes\").not($(this).parent().find(\".FilterBoxes\")).removeClass(\"active\");\r\n $(this).toggleClass(\"toggle-minus\");\r\n $(this).parent().find(\".FilterBoxes\").toggleClass(\"active\");\r\n\r\n });\r\n }\r\n}\r\nfunction isMobileResolutions() {\r\n if ($(window).width() <= 991) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n\r\nfunction SetPriceSlider() {\r\n\r\n if ($(\".CategoryLeftBar\").length > 0 && ($(\"#PgType\").val() == \"Cat\" || $(\"#PgType\").val() == \"Search\")) {\r\n\r\n var slider = document.getElementById('PriceSlider');\r\n\r\n if (slider != null) {\r\n var min = $(\"#MinPrice\").val();\r\n var max = $(\"#MaxPrice\").val();\r\n var currencySymbol = $(\"#CurrencySymbol\").val();\r\n\r\n noUiSlider.create(slider, {\r\n start: [min, max],\r\n connect: true,\r\n step: 1,\r\n range: {\r\n 'min': parseInt(min),\r\n 'max': parseInt(max)\r\n }\r\n });\r\n\r\n slider.noUiSlider.on('change', function () {\r\n var values = slider.noUiSlider.get();\r\n $(\"#MinPrice\").val(Math.round(values[0]));\r\n $(\"#MaxPrice\").val(Math.round(values[1]));\r\n $(\"#SliderValue\").val(Math.round(values[0]) + \"-\" + Math.round(values[1]));\r\n\r\n if (!isMobileResolution()) {\r\n //$(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n }\r\n });\r\n\r\n slider.noUiSlider.on('update', function () {\r\n var values = slider.noUiSlider.get();\r\n $(\"#MinPrice\").val(Math.round(values[0]));\r\n $(\"#MaxPrice\").val(Math.round(values[1]));\r\n $(\".priceView\").html(\"\").html(Math.round(values[0]) + \" \" + currencySymbol + \" \" + Math.round(values[1]) + \" \" + currencySymbol);\r\n });\r\n }\r\n else {\r\n var currencySymbol = $(\"#CurrencySymbol\").val();\r\n var min = $(\"#MinPrice\").val();\r\n var max = $(\"#MaxPrice\").val();\r\n $OldPriceValue = $(\"#SliderValue\").val();\r\n\r\n $('#minPrc, #maxPrc').mask('00000', {\r\n translation: {\r\n 'Z': {\r\n pattern: /[0-9]/, optional: false\r\n }\r\n }\r\n });\r\n\r\n $(document).on(\"keyup\", \"#minPrc, #maxPrc\", function () {\r\n var minPrc = $(\"#minPrc\").val();\r\n var maxPrc = $(\"#maxPrc\").val();\r\n\r\n //if (!minPrc) {\r\n // minPrc = $(\"#MinPrice\").val();\r\n // $(\"#minPrc\").val(minPrc);\r\n //}\r\n\r\n //if (!maxPrc) {\r\n // maxPrc = $(\"#MaxPrice\").val();\r\n // $(\"#maxPrc\").val(maxPrc);\r\n //}\r\n\r\n var sliderValue = minPrc + \"-\" + maxPrc;\r\n $(\"#SliderValue\").val(sliderValue);\r\n\r\n setTimeout(function () {\r\n var newSliderValue = $(\"#SliderValue\").val();\r\n\r\n if ($OldPriceValue != newSliderValue) {\r\n //$(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n $OldPriceValue = newSliderValue;\r\n }\r\n\r\n }, 1000);\r\n\r\n });\r\n\r\n }\r\n }\r\n}\r\n\r\nfunction LazyLoad() {\r\n $(\".ProductList .Prd img.PImage, .ProductList .Prd .ProductListColor img\").Lazy();\r\n}\r\n\r\n// Cookie Değerine Göre Açılış Grid'ini Ayarlama Fonksiyonu\r\nfunction SetGridByCookie() {\r\n var cookieGrid = $.cookie(\"OSgridCookie\");\r\n if (cookieGrid == \"\" || cookieGrid == null || cookieGrid == undefined) {\r\n cookieGrid = \"4\";\r\n $.cookie(\"OSgridCookie\", \"4\", { path: '/' }, { expires: 7 });\r\n }\r\n if (!isMobileResolution()) { // Desktop grid ayarlama\r\n DesktopGridSet(cookieGrid);\r\n }\r\n else { // Mobile grid ayarlama \r\n MobileGridSet(cookieGrid);\r\n }\r\n}\r\n\r\n// Açılışta QueryString'deki Filtreleme Seçeneklerini Kontrol Eder\r\nfunction QueryStringControlForFilter() {\r\n\r\n var vars = [], hash;\r\n var selectedSize = \"\";\r\n var selectedColor = \"\";\r\n var selectedCatalog = \"\";\r\n var selectedDepartment = \"\";\r\n var selectedSeason = \"\";\r\n var selectedPrice = \"\";\r\n var selectedSoldOut = \"\";\r\n var selectedSort = \"\";\r\n var selectedPropertie = \"\";\r\n var selectedCloth = \"\";\r\n var selectedBrand = \"\";\r\n var NativeQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1); // QueryString okunur\r\n var getQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); // QueryString okunur ve Split eder\r\n\r\n if (NativeQueryFilter.indexOf(\"=\") != \"-1\") {\r\n\r\n for (var i = 0; i < getQueryFilter.length; i++) {\r\n hash = getQueryFilter[i].split('=');\r\n vars.push(hash[0]);\r\n vars[hash[0]] = hash[1];\r\n\r\n if (hash[0] == \"s\") {\r\n selectedSize = hash[1]; // Size değerleri alınır\r\n }\r\n else if (hash[0] == \"c\") {\r\n selectedColor = hash[1]; // Color değerleri alınır\r\n }\r\n else if (hash[0] == \"ct\") {\r\n selectedCatalog = hash[1]; // katalog değerleri alınır\r\n }\r\n else if (hash[0] == \"dp\") {\r\n selectedDepartment = hash[1]; // Departman değerleri alınır\r\n }\r\n else if (hash[0] == \"sea\") {\r\n selectedSeason = hash[1]; // Departman değerleri alınır\r\n }\r\n else if (hash[0] == \"b\") {\r\n selectedBrand = hash[1]; // Marka değerini alınır\r\n }\r\n else if (hash[0] == \"prc\") {\r\n selectedPrice = hash[1]; // Price değerini alınır\r\n }\r\n else if (hash[0] == \"so\") {\r\n selectedSoldOut = hash[1]; // Tükenenleri Gizle seçeneğini alır\r\n }\r\n else if (hash[0] == \"o\") {\r\n selectedSort = hash[1]; // Sıralama seçeneği alınır\r\n }\r\n else if (hash[0] == \"prp\") {\r\n selectedPropertie = hash[1]; // Sıralama seçeneği alınır\r\n }\r\n else if (hash[0] == \"clh\") {\r\n selectedCloth = hash[1]; // Sıralama seçeneği alınır\r\n }\r\n }\r\n\r\n // Seçili Size'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedSize != null && selectedSize != \"\" && selectedSize != undefined) {\r\n var selectedSizes = selectedSize.split(',');\r\n\r\n $.each(selectedSizes, function (key, value) {\r\n $li = $(\"#Sizes li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Size'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Color'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedColor != null && selectedColor != \"\" && selectedColor != undefined) {\r\n var selectedColors = selectedColor.split(',');\r\n\r\n $.each(selectedColors, function (key, value) {\r\n $li = $(\"#Colors li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Color'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Katalog'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedCatalog != null && selectedCatalog != \"\" && selectedCatalog != undefined) {\r\n var selectedCatalogs = selectedCatalog.split(',');\r\n\r\n $.each(selectedCatalogs, function (key, value) {\r\n $li = $(\"#ProductGroup li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Katalog'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Departman'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedDepartment != null && selectedDepartment != \"\" && selectedDepartment != undefined) {\r\n var selectedDepartments = selectedDepartment.split(',');\r\n\r\n $.each(selectedDepartments, function (key, value) {\r\n $li = $(\"#Departments li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Departman'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Markaların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedBrand != null && selectedBrand != \"\" && selectedBrand != undefined) {\r\n var selectedBrands = selectedBrand.split(',');\r\n\r\n $.each(selectedBrands, function (key, value) {\r\n $li = $(\"#Brands li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Markaların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Sezon'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedSeason != null && selectedSeason != \"\" && selectedSeason != undefined) {\r\n var selectedSeasons = selectedSeason.split(',');\r\n\r\n $.each(selectedSeasons, function (key, value) {\r\n $li = $(\"#Seasons li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Sezon'ların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Özelliklerin li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedPropertie != null && selectedPropertie != \"\" && selectedPropertie != undefined) {\r\n var selectedProperties = selectedPropertie.split(',');\r\n\r\n $.each(selectedProperties, function (key, value) {\r\n $li = $(\"#Properties li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Özelliklerin li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Kumaşların li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n if (selectedCloth != null && selectedCloth != \"\" && selectedCloth != undefined) {\r\n var selectedCloths = selectedCloth.split(',');\r\n\r\n $.each(selectedCloths, function (key, value) {\r\n $li = $(\"#Cloth li input[value='\" + value + \"']\").prop(\"checked\", true);\r\n });\r\n }\r\n // Seçili Özelliklerin li'lerini FilterItemSelect fonksiyonuna göndererek işaretlenmesini sağlar\r\n\r\n // Seçili Price değer aralığını ayarlar\r\n if (selectedPrice != null && selectedPrice != \"\" && selectedPrice != undefined) {\r\n\r\n $(\"#SliderValue\").val(selectedPrice);\r\n var SelectedPrices = selectedPrice.split('-');\r\n\r\n var slider = document.getElementById('PriceSlider');\r\n if (slider != null) {\r\n\r\n slider.noUiSlider.set([SelectedPrices[0], SelectedPrices[1]]);\r\n }\r\n else {\r\n $('#minPrc').val(SelectedPrices[0]);\r\n $('#maxPrc').val(SelectedPrices[1]);\r\n }\r\n\r\n }\r\n // Seçili Price değer aralığını ayarlar\r\n\r\n // Seçiliyse tükenenleri gizle seçeneğini işaretler\r\n if (selectedSoldOut != null && selectedSoldOut != \"\" && selectedSoldOut != undefined && selectedSoldOut == \"1\") {\r\n $li = $(\"#SoldOutOp li.gr\");\r\n $li.find(\"input\").attr(\"checked\", \"checked\");\r\n $li.find(\"input\").val(\"1\");\r\n $li.find(\"label\").addClass(\"checked2\");\r\n }\r\n // Seçiliyse tükenenleri gizle seçeneğini işaretler\r\n\r\n // Sıralama varsa dropdown'dan seçeneği işaretler\r\n if (selectedSort != null && selectedSort != \"\" && selectedSort != undefined) {\r\n\r\n $li = $(\"#PrdSort input[value='\" + selectedSort + \"']\").parent(\"li\");\r\n\r\n if (isMobileResolution()) {\r\n $li = $(\"#PrdSortMobile input[value='\" + selectedSort + \"']\").parent(\"li\");\r\n }\r\n\r\n $li.find(\"label\").addClass(\"checked\");\r\n $li.find(\"label\").addClass(\"c_on\");\r\n\r\n $(\".fLinkSortNo\").html($li.find(\"label .checkText\").html()); // Seçili sıralama seçeneğini gösterir \r\n }\r\n // Sıralama varsa dropdown'dan seçeneği işaretler\r\n\r\n $(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n }\r\n\r\n GetSelectedFilter(); // Gelen filtreleri Seçili Filtreler alanına ekler\r\n}\r\n\r\n// Seçimleriniz alanını footer'da gizler\r\nfunction HideChoices() {\r\n $(window).scroll(function (event) {\r\n var y = $(this).scrollTop();\r\n var height = 0;\r\n\r\n $(\".FilterForm .col-md-24\").not(\".AppylArea\").each(function () {\r\n height += $(this).height();\r\n });\r\n\r\n height = height - 700;\r\n\r\n if (y >= height) {\r\n $(\".AppylArea\").removeClass(\"AppylAreaFixed\");\r\n\r\n } else {\r\n $(\".AppylArea\").addClass(\"AppylAreaFixed\");\r\n }\r\n });\r\n}\r\n\r\n// Detaydan Listeleme Sayfasına Geri Dönmede Scroll Position'ı Ayarlar\r\nfunction BackButtonLastScroll() {\r\n var ios = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n var browserName = navigator.userAgent;\r\n if (browserName.indexOf(\"Chrome\")) {\r\n browserName = \"Chrome\";\r\n }\r\n\r\n var pgType = $(\"#PgType\").val();\r\n var lastScrollTop = $.cookie(\"lastScroll\");\r\n var CatID = $(\"#PID\").val();\r\n var lastScrollTopFirst = $.cookie(\"getLastScrollFirst\");\r\n\r\n var NativeQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1); // QueryString okunur\r\n\r\n if (pgType == \"Cat\") {\r\n\r\n if (CatID != $.cookie(\"lastCatalogID\")) {\r\n lastScrollTopFirst = 0;\r\n $.cookie(\"lastCatalogID\", CatID, { path: '/', expires: date });\r\n }\r\n\r\n if (NativeQueryFilter.indexOf(\"=\") != \"-1\") { // kataloğun ilk sayfası ise lastScroll'u dikkate almasın\r\n if (lastScrollTop != null && lastScrollTop != \"\" && lastScrollTop != undefined && lastScrollTop > 0) {\r\n\r\n var listHeight = $(\".ProductList\").height();\r\n lastScrollTop = lastScrollTop - (listHeight /** (currentPage - 1)*/);\r\n\r\n if (lastScrollTop > 0) {\r\n $('html, body').animate({\r\n scrollTop: lastScrollTop\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n //if (NativeQueryFilter.indexOf(\"=\") != \"-1\") { // kataloğun ilk sayfası ise lastScroll'u dikkate almasın\r\n // if (lastScrollTop != null && lastScrollTop != \"\" && lastScrollTop != undefined && lastScrollTop > 0) {\r\n // setTimeout(function () {\r\n // $('html, body').animate({\r\n // scrollTop: lastScrollTop\r\n // }, 0);\r\n // }, 1000);\r\n // }\r\n //}\r\n //else {\r\n\r\n // if (lastScrollTopFirst != null && lastScrollTopFirst != \"\" && lastScrollTopFirst != undefined && lastScrollTopFirst > 0) {\r\n // setTimeout(function () {\r\n // $('html, body').animate({\r\n // scrollTop: lastScrollTopFirst\r\n // }, 0);\r\n // }, 1000);\r\n // }\r\n //}\r\n\r\n $.cookie(\"getLastScrollFirst\", \"0\", { path: '/', expires: date });\r\n $.cookie(\"lastScroll\", \"0\", { path: '/', expires: date });\r\n }\r\n}\r\n\r\nfunction getPenPath() {\r\n var vars = [], hash;\r\n var NativeQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1); // QueryString okunur\r\n var getQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); // QueryString okunur ve Split eder\r\n var currentPage = 1;\r\n\r\n if (NativeQueryFilter.indexOf(\"=\") != \"-1\") {\r\n for (var i = 0; i < getQueryFilter.length; i++) {\r\n hash = getQueryFilter[i].split('=');\r\n vars.push(hash[0]);\r\n vars[hash[0]] = hash[1];\r\n\r\n if (hash[0] == \"p\") {\r\n currentPage = hash[1];\r\n }\r\n }\r\n }\r\n\r\n var params = GenerateParams(\"paging\", (parseInt(currentPage) + 1) /*this.loadCount + 2*/); // Sayfalama için istek parametresi üretir\r\n if (params) {\r\n //return \"/\" + $(\"#SmallLangCode\").val() + \"/p/Home/GetProductList?\" + params;\r\n return \"?\" + params;\r\n }\r\n}\r\n\r\nfunction InfinityScroll() {\r\n var $container = $('.ProductList').infiniteScroll({\r\n path: getPenPath,\r\n append: '.Prd',\r\n scrollThreshold: 500,\r\n checkLastPage: \".pageEnd\"\r\n });\r\n var infScroll = $container.data('infiniteScroll');\r\n\r\n $container.on('load.infiniteScroll', function () {\r\n setTimeout(function () {\r\n LazyLoad();\r\n\r\n var cookieGrid = $.cookie(\"OSgridCookie\");\r\n if (isMobileResolution()) {\r\n MobileGridSet(cookieGrid);\r\n }\r\n else {\r\n DesktopGridSet(cookieGrid);\r\n }\r\n }, 2000);\r\n });\r\n}\r\n\r\nfunction IsFollowCategory() {\r\n if ($(\".ProductList .Prd .QuickLookLikeBtn\").length <= 0) {\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: 'get',\r\n url: getRequestRoute() + \"/p/ProductDetails/IsFollowAll\",\r\n dataType: 'json',\r\n async: true,\r\n success: function (dt) {\r\n updateList(dt);\r\n }\r\n });\r\n\r\n var updateList = function (dt) {\r\n $(\".ProductList .Prd .QuickLookLikeBtn\").removeClass(\"active\");\r\n\r\n for (var i in dt) {\r\n var item = dt[i];\r\n\r\n var followlar = $(\".ProductList .Prd .QuickLookLikeBtn\").filter(function (index) {\r\n return $(this).attr(\"data-id\") == item[\"ProductID\"] && $(this).attr(\"data-colorid\") == item[\"ColorID\"];\r\n });\r\n\r\n if (followlar.length > 0) {\r\n var followItem = $(followlar[0]);\r\n followItem.addClass(\"active\");\r\n followItem.find(\".sorsfont\").removeClass(\"sorsfont-Star\").addClass(\"sorsfont-Star-fill\");\r\n\r\n //if (followItem.hasClass(\"active\")) {\r\n // followItem.children(\"img\").attr(\"src\", \"/Images/OXNW/like_full.svg\");\r\n //}\r\n followItem.children(\"img\").attr(\"src\", \"/Images/OS/Heart_black.svg\");\r\n }\r\n }\r\n };\r\n}\r\n\r\nfunction FollowProperty() {\r\n $(document).on(\"click\", \".QuickLookLikeBtn:not(.active)\", function () {\r\n var ProductID = $($(this)).attr(\"data-id\");\r\n var ColorID = $($(this)).attr(\"data-colorid\");\r\n button = $(this);\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"show\");\r\n console.log(ProductID);\r\n console.log(ColorID);\r\n AddToFavorite(ColorID, ProductID, function (result, msg) {\r\n if (result == true) {\r\n button.addClass(\"active\");\r\n button.find(\".sorsfont\").removeClass(\"sorsfont-Star\").addClass(\"sorsfont-Star-fill\");\r\n\r\n button.find(\".heart-icon\").attr(\"src\", \"/images/OS/Heart_black.svg\");\r\n }\r\n else {\r\n //SwalGenerate(\"error\", msg, getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"Kapat\"));\r\n\r\n var loginLink = getRequestRoute() + \"/p/User/Login\";\r\n\r\n SwalGenerate(\"warning\", msg, \"Favorilere Eklenemedi\", \"\" + getStandartMessages(\"GirisYap\") + \" \");\r\n }\r\n\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"hide\");\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \".QuickLookLikeBtn.active\", function () {\r\n var ProductID = $($(this)).attr(\"data-id\");\r\n button = $(this);\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"show\");\r\n\r\n removeFavorite(ProductID, function (result) {\r\n if (result == true) {\r\n button.removeClass(\"active\");\r\n button.find(\".sorsfont\").removeClass(\"sorsfont-Star-fill\").addClass(\"sorsfont-Star\");\r\n\r\n button.find(\".heart-icon\").attr(\"src\", \"/images/OS/Heart.svg\");\r\n }\r\n else {\r\n SwalGenerate(\"error\", getStandartMessages(\"BirHataOlustu\"), getStandartMessages(\"IslemBasarisiz\"), getStandartMessages(\"Kapat\"));\r\n }\r\n\r\n GenerateLocalLoading(button.closest(\".Prd\"), \"hide\");\r\n });\r\n });\r\n}\r\n\r\n//ürün listesi açılır açılmaz datalayera push yapacak script (view_item_list)\r\nfunction ScrollAllGetProduct() {\r\n var productList = $(\".contentTopSpace .ProductColumn .PrdContainer .Products .ProductList\");\r\n if (productList.length > 0) {\r\n var products = productList.find(\".PrdItemBox\");\r\n var productListAll = [];\r\n\r\n products.each(function (index, element) {\r\n var ProductCode = $(this).attr(\"data-productcode\");\r\n var ProductName = $(this).attr(\"data-productname\");\r\n var ColorName = $(this).attr(\"data-colorname\");\r\n var price = parseFloat($(this).attr(\"data-amount\"));\r\n var priceOld = parseFloat($(this).attr(\"data-amountPsf\"));\r\n var discount = $(this).attr(\"data-discount\");\r\n var dataProductListPosition = $(this).attr(\"data-listposition\");\r\n var category1 = $(this).attr('data-category1');\r\n var category2 = $(this).attr('data-category2');\r\n var category3 = $(this).attr('data-category3');\r\n var catID = $(this).attr('data-catID');\r\n var itemListName = $(this).attr('data-itemListName');\r\n\r\n\r\n discount = priceOld - price;\r\n if (price == priceOld) {\r\n discount = 0;\r\n }\r\n\r\n var amount = price;\r\n if (amount == 0) {\r\n amount = priceOld;\r\n }\r\n\r\n var value = parseFloat(amount);\r\n\r\n\r\n var viewItem = {\r\n item_id: ProductCode,\r\n item_name: ProductName,\r\n affiliation: category1,\r\n coupon: \"\",\r\n currency: 'TRY',\r\n discount: discount,\r\n index: parseInt(dataProductListPosition),\r\n item_brand: 'OS',\r\n item_category: category1,\r\n item_category2: category2,\r\n item_category3: category3,\r\n item_list_id: parseInt(catID),\r\n item_list_name: itemListName,\r\n item_variant: ColorName,\r\n location_id: 'İST',\r\n price: priceOld,\r\n quantity: 1\r\n };\r\n\r\n productListAll.push(viewItem);\r\n });\r\n\r\n // Mevcut catID'yi kaydet\r\n if (productListAll.length > 0) {\r\n var currentCatID = productListAll[0].item_list_id;\r\n localStorage.setItem('lastViewedCatID', currentCatID);\r\n var currentItemListName = productListAll[0].item_list_name;\r\n localStorage.setItem('lastViewedItemListName', currentItemListName);\r\n }\r\n\r\n // Tüm ürünleri aktarır\r\n dataLayer.push({\r\n event: \"view_item_list\",\r\n ecommerce: {\r\n items: productListAll\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n$(document).ready(function () {\r\n var PageType = $(\"#PgType\").val();\r\n\r\n if (PageType == \"Cat\" || PageType == \"Combine\" || PageType == \"Search\" || PageType == \"Brand\") {\r\n\r\n var InfinityScroll = $(\"#IsInfinity\").val();\r\n\r\n if (InfinityScroll == \"True\") {\r\n $container = $('.ProductList').infiniteScroll({\r\n path: getPenPath,\r\n append: '.Prd',\r\n scrollThreshold: 500,\r\n checkLastPage: \".pageEnd\"\r\n });\r\n var infScroll = $container.data('infiniteScroll');\r\n\r\n $container.on('load.infiniteScroll', function () {\r\n setTimeout(function () {\r\n LazyLoad();\r\n\r\n var cookieGrid = $.cookie(\"OSgridCookie\");\r\n if (isMobileResolution()) {\r\n MobileGridSet(cookieGrid);\r\n }\r\n else {\r\n DesktopGridSet(cookieGrid);\r\n }\r\n }, 1000);\r\n });\r\n\r\n BackButtonLastScroll();\r\n }\r\n else {\r\n BackButtonLastScroll(); // Detaydan Listeleme Sayfasına Geri Dönmede Scroll Position'ı Ayarlar\r\n }\r\n\r\n // Left/Filter Bar\r\n ToggleLeftBar();\r\n SetPriceSlider();\r\n ScrollAllGetProduct();\r\n LazyLoad(); // Lazy Load \r\n SetGridByCookie(); // Cookie Değerine Göre Grid Ayarlama\r\n ClearAllFilter(\"false\");\r\n QueryStringControlForFilter(); // QueryString'deki filtreleri kontrol eder\r\n\r\n if (!isMobileResolution()) {\r\n filterPriceTrigger();\r\n }\r\n\r\n if (!isMobileResolution()) {\r\n $(document).on(\"click\", \"#LeftWrapper .FilterBoxes:not(.Sorts) li > label\", function () {\r\n //$(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n });\r\n\r\n var FilterAreaHeight = $(window).height() - $(\"header\").height() - 20;\r\n $(\"#LeftWrapper\").css(\"height\", FilterAreaHeight + \"px\");\r\n\r\n $(window).resize(function () {\r\n setTimeout(function () {\r\n var FilterAreaHeight = $(window).height() - $(\"header\").height() - 20;\r\n $(\"#LeftWrapper\").css(\"height\", FilterAreaHeight + \"px\");\r\n }, 500);\r\n });\r\n }\r\n else {\r\n $(document).on(\"click\", \"#LeftWrapper .FilterArea .mobilFilterArea .MobilFilterHeader .close-filter\", function () {\r\n toggleMenusOperation(\"all\");\r\n });\r\n\r\n // Mobil filtre geri kaydırma\r\n $(document).on(\"click\", \".FilterForm .FilterBoxes .MobileFilterHeader a\", function () {\r\n $(this).parents(\".FilterOption\").removeClass(\"active\");\r\n $(this).parents(\".col-md-24\").children(\".filterLink\").addClass(\"toggle-minus\");\r\n });\r\n }\r\n\r\n BrowserBackAndPrevButtonControl(); // Browser iler/geri tuşları tetiklenince çalışır\r\n IsFollowCategory();\r\n FollowProperty();\r\n\r\n if ($(\".ProductList.NotFoundContainer .NotFound\").length > 0) {\r\n var LastVisitedPrds = GetLastVisitedData();\r\n\r\n if (LastVisitedPrds != undefined && LastVisitedPrds.length > 0) {\r\n GetLastVisitedPrdView(LastVisitedPrds, function (dt) {\r\n if (dt != \"\") {\r\n $(\".ProductList.NotFoundContainer .SuggestedProductsContainer .AutoGetLastVisited\").append(dt);\r\n //SlickSlider(\"suggested\");\r\n LazyLoad();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Ürünler\r\n $(document).on(\"click\", \".ProductList .Prd .AddToCartArea button.AddToCart\", function () {\r\n $basketButton = $(this);\r\n var SizeID = $basketButton.attr(\"data-sizeid\");\r\n var ColorID = $basketButton.attr(\"data-colorid\");\r\n var ProductID = $basketButton.attr(\"data-productid\");\r\n var LangID = $(\"#SmallLangCode\").val();\r\n\r\n if (!$basketButton.hasClass(\"passive\")) {\r\n if (SizeID != undefined && ColorID != undefined && ProductID != undefined && SizeID != \"\" && ColorID != \"\" && ProductID != \"\" && SizeID != \"0\" && ColorID != \"0\" && ProductID != \"0\") {\r\n var param = 'sizeID=' + SizeID + \"&colorID=\" + ColorID + \"&productID=\" + ProductID + \"&adet=\" + 1 + \"&langID=\" + LangID;\r\n\r\n GenerateLocalLoading($basketButton.parents(\".Prd\"), \"show\");\r\n AddToCard(param, function (dt) {\r\n\r\n if (dt.Sonuc == true) {\r\n GetSepetIcerik(function (dt) {\r\n setTimeout(function () {\r\n $basketButton.closest(\"div.AddToCartArea\").children(\".TransformContainer\").removeClass(\"select-size\");\r\n }, 500);\r\n\r\n $(\"#UserAndBasket\").html(dt);\r\n $(\".SepetProducts .BasketContainer .CartTitle .basket-text\").html(getAddBasketMessage($(\".SepetProducts .BasketContainer .Center .BasketCenterContent .SepetRow\").length));\r\n if ($(window).width() > 991) {\r\n toggleMenusOperation(\"basket\");\r\n }\r\n\r\n generateToolTip();\r\n\r\n GenerateLocalLoading($basketButton.parents(\".Prd\"), \"hide\");\r\n });\r\n }\r\n else {\r\n SwalGenerate(\"error\", dt.IslemSonucAciklama, \"İşlemin Başarısız\", \"Kapat\");\r\n GenerateLocalLoading($basketButton.parents(\".Prd\"), \"hide\");\r\n }\r\n });\r\n }\r\n else if (SizeID === \"0\" && $basketButton.closest(\"div.AddToCartArea\").find(\"div.ProductListSizeContainer.plSize\").html() === \"\") {\r\n var params = \"ColorID=\" + ColorID + \"&ProductID=\" + ProductID;\r\n GetSizeOfColor(params);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n\r\n $('.ProductListSizeContainer div.ProductListSize:not(.passive)').live(\"click\", function () {\r\n var $currentColor = $(this);\r\n var sizeID = $(this).attr(\"data-size\");\r\n\r\n $currentColor.closest(\".Prd\").find(\".AddToCart\").attr(\"data-sizeid\", sizeID);\r\n $currentColor.closest(\".ProductListSizeContainer\").find(\".ProductListSize\").removeClass(\"active\");\r\n $currentColor.addClass(\"active\");\r\n $currentColor.closest(\".Prd\").find(\".AddToCart\").click();\r\n });\r\n\r\n $(\".ProductList .Prd\").live({\r\n mouseleave:\r\n function () {\r\n $(this).find(\".AddToCartArea .TransformContainer\").removeClass(\"select-size\");\r\n //$(this).find(\".AddToCartArea .TransformContainer .button-container .AddToCart\").removeClass(\"passive\");\r\n $(this).find(\".AddToCartArea .ProductListSizeContainer\").html(\"\");\r\n }\r\n });\r\n\r\n $('.ProductListColorContainer div.ProductListColor:not(.passive)').live(\"click\", function () {\r\n var $currentColor = $(this);\r\n\r\n var productID = $(this).attr(\"data-color-product-id\");\r\n var colorID = $(this).attr(\"data-color\");\r\n var item_unique_id = $(this).attr(\"data-item-unique-id\");\r\n var sizeID = $(this).attr(\"data-size\");\r\n var params = \"ColorID=\" + colorID + \"&ProductID=\" + productID;\r\n\r\n if (typeof sizeID === \"undefined\") {\r\n sizeID = 0;\r\n\r\n $detailLinks = $(this).closest(\".Prd\").find(\"a\");\r\n $currentColor.closest(\".ProductListColorContainer\").find(\".ProductListColor\").removeClass(\"active\");\r\n $currentColor.addClass(\"active\");\r\n\r\n GetImageOfColors(params, item_unique_id, $currentColor);\r\n\r\n $currentColor.closest(\"div.AddToCartArea\").find(\"div.ProductListSizeContainer.plSize\").html(\"\");\r\n $currentColor.closest(\".AddToCartArea\").find(\".TransformContainer\").removeClass(\"select-size\");\r\n }\r\n });\r\n\r\n $('.ProductList .Prd').live(\"click\", function (e) {\r\n var ScrollContentID = \"LastScrollTop\" + $(\"#PID\").val();\r\n $.cookie(ScrollContentID, null, { expires: -1 });\r\n $.cookie(ScrollContentID, $(window).scrollTop(), { expires: 0.05 });\r\n });\r\n\r\n //if (isMobile(true)) {\r\n // if ($(\"div.row.Products\").length > 0) {\r\n // var ScrollSize = +70;\r\n // var offsetTop = 0;\r\n\r\n // ScrollSize = 50;\r\n // offsetTop = $(\".BreadCrumbArea:first\").offset().top;\r\n\r\n // $('html, body').animate({\r\n // scrollTop: offsetTop - ScrollSize\r\n // }, 500);\r\n // }\r\n //}\r\n // End Ürünler\r\n\r\n // Renk ve Beden Filteri\r\n $('#Colors > li > input, #Sizes > li > input, #Properties > li > input, #Cloth > li > input, #ProductGroup > li > input, #Departments > li > input, #Seasons > li > input, #Brands > li > input').live('change', function (event) {\r\n if (!isMobileResolution()) {\r\n $(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n }\r\n });\r\n\r\n // Seçili Filtreler Alanındaki Filteri Kaldırma\r\n $(\".SelectedFilterCancelIcon\").live(\"click\", function () {\r\n var selectedVal = $(this).attr(\"data-value\");\r\n var selectedType = $(this).attr(\"data-type\");\r\n\r\n ClearSelectedFilter(selectedVal, selectedType);\r\n });\r\n\r\n // Tüm Filtreleri Kaldırır\r\n $(\".SelectedFilter .ClearAllFilter\").live(\"click\", function () {\r\n ClearAllFilter(\"true\");\r\n });\r\n\r\n // Tükenenleri Gizle\r\n $('#SoldOutOp > li.gr input').click(function (event) {\r\n SoldOutFilter($(this));\r\n });\r\n\r\n // Sıralama\r\n //$('#PrdSort > li, #PrdSortMobile > li').click(function (event) {\r\n // ProductSort($(this));\r\n //});\r\n\r\n $(document).on(\"click\", \"#PrdSort > li, #PrdSortMobile > li\", function () {\r\n ProductSort($(this));\r\n });\r\n\r\n // Desktop Grid Seçimi\r\n $(\".mGridIcons-2, .mGridIcons-3, .mGridIcons-4\").click(function () {\r\n var gridID = $(this).attr(\"data-gridvalue\");\r\n if (gridID != null && gridID != undefined && gridID != \"\") {\r\n DesktopGridSet(gridID);\r\n }\r\n });\r\n\r\n // Mobile Grid Seçimi\r\n $(\".gridAyarla\").click(function () {\r\n if (isMobileResolution()) {\r\n var gridID = $(this).attr(\"data-grid\");\r\n cookieGrid = $.cookie(\"OSgridCookie\");\r\n\r\n if (gridID != null && gridID != undefined && gridID != \"\") {\r\n MobileGridSet(gridID);\r\n $.cookie(\"OSgridCookie\", gridID, { path: '/' });\r\n }\r\n }\r\n });\r\n\r\n // Yeni Açının Çağrılması\r\n $(document).on(\"slid.bs.carousel\", \".ProductList .Prd .PrdImgsBox .carousel\", function () {\r\n var ImageSrc = $(this).find(\".carousel-item.active\").find(\"img\").attr(\"src\");\r\n $nextOrPrevImage = $(this).find(\".carousel-item.active\").find(\"img\");\r\n\r\n if (ImageSrc != undefined && ImageSrc.indexOf(\"lazy_back_new.gif\") != -1) {\r\n $nextOrPrevImage.attr(\"src\", $nextOrPrevImage.attr(\"data-img\"));\r\n }\r\n });\r\n\r\n $(document).on(\"swiperight\", \".ProductList .Prd .PrdImgsBox .carousel\", function () {\r\n $(this).carousel('prev');\r\n });\r\n\r\n $(document).on(\"swipeleft\", \".ProductList .Prd .PrdImgsBox .carousel\", function () {\r\n $(this).carousel('next');\r\n });\r\n\r\n // Paging İsteği\r\n $(\".Pages a, #nextPage a\").live(\"click\", function () {\r\n var pageNo = $(this).attr(\"data-pgno\");\r\n if ($(this).parent().hasClass(\"sold\") == false) {\r\n $.cookie(\"lastScroll\", 0, { path: '/', expires: date });\r\n $.cookie(\"getLastScrollFirst\", 0, { path: '/', expires: date });\r\n\r\n if (pageNo != null && pageNo != undefined && pageNo != \"\") {\r\n\r\n if ($(this).parent().hasClass(\"first\")) {\r\n getPageByPageNo(1, \"true\");\r\n } else {\r\n getPageByPageNo(pageNo, \"false\");\r\n }\r\n }\r\n }\r\n\r\n });\r\n\r\n // Ürün'e Tıklandığında Scroll Position Alınır\r\n $(\".ProductList a img:not(.NextPageImg)\").live(\"click\", function () {\r\n var lastScroll = $(window).scrollTop();\r\n var NativeQueryFilter = window.location.href.slice(window.location.href.indexOf('?') + 1); // QueryString okunur\r\n\r\n if (NativeQueryFilter.indexOf(\"=\") != \"-1\") {\r\n $.cookie(\"lastScroll\", lastScroll, { path: '/', expires: date });\r\n }\r\n else {\r\n $.cookie(\"getLastScrollFirst\", lastScroll, { path: '/', expires: date });\r\n }\r\n });\r\n\r\n // Filtreleme İsteği\r\n $(\".AppylArea .FilterApplyButton\").live(\"click\", function () {\r\n GetPageByFilter();\r\n\r\n if (isMobileResolution) {\r\n toggleMenusOperation(\"all\");\r\n }\r\n\r\n });\r\n\r\n $(\".AppylArea .FilterClearButton\").live(\"click\", function () {\r\n ClearAllFilter(\"true\");\r\n });\r\n $(\".AppylArea .FilterCloseButton\").live(\"click\", function () {\r\n toggleMenusOperation(\"all\");\r\n });\r\n\r\n\r\n // Kategori Açıklama Yazısını Gösterir\r\n $('.CatShowMore, .CatShowLess').on('click', function (e, index) {\r\n var Clicked = $(this).attr(\"class\");\r\n CatDescShowOrHide(Clicked);\r\n });\r\n\r\n // Mobil İçin Filtre ve Sıralama Alanını Açar\r\n $(\".OpenFilterOrSortArea\").click(function () {\r\n var area = $(this).parent().hasClass(\"FilterDiv\"); // Tıklanan butonun filtre mi sıralama mı olduğuna mı bakılıyor\r\n\r\n if (area == true) {\r\n //MobilSortFilterAreaOpenOrClose(\".mobilFilterArea\");\r\n toggleMenusOperation(\"mobileFilter\");\r\n }\r\n else {\r\n //MobilSortFilterAreaOpenOrClose(\".MobilSortArea\");\r\n }\r\n });\r\n\r\n // Filter Search\r\n $(document).on(\"keyup\", \".SearchInList .SearchFilter\", function () {\r\n var input, filter, txtValue, li;\r\n input = $(this).val().toUpperCase();\r\n filter = input.toLocaleLowerCase();\r\n li = $(this).parents(\".First\").find(\".FilterOption > ul > li\");\r\n\r\n li.each(function (index) {\r\n txtValue = $(this).find(\"input[type='checkbox']\").first().attr(\"data-rel\");\r\n\r\n if (txtValue.toLocaleLowerCase().indexOf(filter) > -1) {\r\n $(this).css(\"display\", \"block\");\r\n } else {\r\n $(this).css(\"display\", \"none\");\r\n }\r\n });\r\n });\r\n});\r\n\r\n\r\n// Kategori Açıklama Yazısını Açıp/Kapatır\r\nfunction CatDescShowOrHide($event) {\r\n if ($event != null && $event != \"\" && $event != undefined) {\r\n if ($event == \"CatShowMore\") {\r\n $(\".CatShowMore\").hide();\r\n $('.CatShowLess').show();\r\n $('.CatSecondPart').show();\r\n $('.CatShortPart').hide();\r\n }\r\n else {\r\n $(\".CatShowLess\").hide();\r\n $('.CatShowMore').show();\r\n $('.CatSecondPart').hide();\r\n $('.CatShortPart').show();\r\n }\r\n }\r\n}\r\n\r\n\r\nfunction filterPriceTrigger() {\r\n $(document).on(\"click\", \".js-price-filter-button\", function () {\r\n $(\".AppylArea .FilterApplyButton\").trigger(\"click\");\r\n });\r\n}\r\n\r\n// Seçili Filtre Alanını Açıp/Kapatan Fonksiyon (Up/Down değeri alır)\r\nfunction OpenCloseSelectedFilterArea($event) {\r\n if ($event != null && $event != \"\" && $event != undefined) {\r\n if ($event == \"Up\") {\r\n $(\".SelectedFilterBody\").slideDown(\"slow\");\r\n $(\".SelectedFilter .SelectedFilterBody\").removeClass(\"closed\");\r\n $(\".SelectedFilter\").show();\r\n }\r\n else if ($event == \"Down\") {\r\n $(\".SelectedFilterBody\").slideUp(\"slow\");\r\n $(\".SelectedFilter .SelectedFilterBody\").addClass(\"closed\");\r\n $(\".SelectedFilter\").hide();\r\n }\r\n }\r\n}\r\n\r\n// Tükenenleri Gizle Seçeneğini Kontrol Eden Fonksiyon\r\nfunction SoldOutFilter($soldOut) {\r\n\r\n $li = $soldOut.parent();\r\n\r\n if ($li.find(\"input\").val() == \"0\") {\r\n $li.find(\"label\").addClass(\"checked2\");\r\n $li.find(\"input\").val(\"1\");\r\n //GetPageByFilter();\r\n }\r\n else {\r\n $li.find(\"label\").removeClass(\"checked2\");\r\n $li.find(\"input\").val(\"0\");\r\n\r\n var currentPage = $(\".Pages a.selected\").attr(\"data-pgno\");\r\n getPageByPageNo(currentPage, \"false\");\r\n }\r\n\r\n}\r\n\r\n// Sıralama Seçeneğini Kontrol Eden Fonksiyon\r\nfunction ProductSort(selectedSort) {\r\n var li = selectedSort;\r\n\r\n // Tüm seçenekleri kapatır\r\n $(\"#PrdSort input, #PrdSortMobile input\").removeAttr(\"checked\");\r\n $(\"#PrdSort label, #PrdSortMobile label\").removeClass(\"checked\");\r\n $(\"#PrdSort label, #PrdSortMobile label\").removeClass(\"c_on\");\r\n\r\n // Kullanıcının istediği seçeneği seçili yapar\r\n li.find(\"label\").addClass(\"checked\");\r\n li.find(\"label\").addClass(\"c_on\");\r\n\r\n // Sıralama ekranını kapatır\r\n $(\".fLinkSortNo\").removeClass(\"toggle-minus\");\r\n $(\"#PrdSort\").parent().hide();\r\n\r\n $(\".fLinkSortNo\").html(\" \" + li.find(\"label .checkText\").html()); // Seçili sıralama seçeneğini gösterir\r\n\r\n //if (!isMobileResolutions) {\r\n // alert(\"burası çokomelli\");\r\n //}\r\n\r\n\r\n\r\n var currentPage = \"1\";\r\n\r\n //if ($(\"#IsInfinity\").val() == \"False\") {\r\n // if ($(\".Pages a.selected\").length > 0) {\r\n // currentPage = $(\".Pages a.selected\").attr(\"data-pgno\"); // Kullanıcının bulunduğu sayfa alınır\r\n // }\r\n // else {\r\n // currentPage = 1;\r\n // }\r\n //}\r\n\r\n //getPageByPageNo(currentPage, \"false\");\r\n\r\n if (!isMobileResolution()) {\r\n getPageByPageNo(currentPage, \"false\");\r\n }\r\n\r\n //if (isMobileResolution()) {\r\n // MobilSortFilterAreaOpenOrClose(\".MobilSortArea\");\r\n //}\r\n}\r\n\r\n// Desktop Grid Seçim Fonksiyonu\r\nfunction DesktopGridSet($gridSize) {\r\n\r\n var removeClass = \"\";\r\n var addClass = \"\";\r\n var ActiveIcons = \"\";\r\n var PasiveIcons = \"\";\r\n var AddToCartAreaWidth = \"\";\r\n var gridValue = \"\";\r\n var selectedGridClass = \"\";\r\n var deSelectedGridClass = \"\";\r\n var PageType = $(\"#PgType\").val();\r\n\r\n if ($gridSize == \"4\") {\r\n removeClass = \"triple\";\r\n addClass = \"\";\r\n ActiveIcons = \"grid-color\";\r\n PasiveIcons = \"sorsfont-4-grid\";\r\n AddToCartAreaWidth = \"92%\";\r\n gridValue = \"4\";\r\n selectedGridClass = \".mGridIcons-\" + gridValue;\r\n deSelectedGridClass = \".mGridIcons-3\";\r\n deSelectedRemoveIcons = \"grid-color\";\r\n deSelectedAddIcons = \"sorsfont-3-grid\";\r\n }\r\n else {\r\n removeClass = \"\";\r\n addClass = \"triple\";\r\n ActiveIcons = \"grid-color\";\r\n PasiveIcons = \"sorsfont-3-grid\";\r\n AddToCartAreaWidth = \"96%\";\r\n gridValue = \"3\";\r\n selectedGridClass = \".mGridIcons-\" + gridValue;\r\n deSelectedGridClass = \".mGridIcons-4\";\r\n deSelectedRemoveIcons = \"grid-color\";\r\n deSelectedAddIcons = \"sorsfont-4-grid\";\r\n }\r\n\r\n\r\n if (PageType != null && PageType != \"\" && PageType != undefined && PageType != \"Combine\") {\r\n $(\".PrdContainer .ProductList\").removeClass(removeClass).addClass(addClass);\r\n\r\n $(selectedGridClass).find(\".sorsfont \").addClass(ActiveIcons).removeClass(PasiveIcons);\r\n $(deSelectedGridClass).find(\".sorsfont \").removeClass(deSelectedRemoveIcons).addClass(deSelectedAddIcons);\r\n }\r\n else if (PageType != \"Combine\") {\r\n //$(\".PrdContainer .ProductList .Prd\").addClass(\"col-lg-8 col-xl-8\");\r\n }\r\n\r\n $.cookie(\"OSgridCookie\", gridValue, { path: '/' });\r\n}\r\n\r\n// Mobile Grid Seçim Fonksiyonu\r\nfunction MobileGridSet($gridSize) {\r\n $(\".gridAyarla i\").removeClass(\"grid-color\");\r\n\r\n if ($gridSize == \"2\" || $gridSize == \"4\") {\r\n $(\".PrdContainer .ProductList\").removeClass(\"triple\");\r\n //$(\".PrdContainer .ProductList .Prd .carousel .carousel-indicators\").css(\"left\", \"75%\");\r\n $(\".gridAyarla.grid2 i\").addClass(\"grid-color\");\r\n }\r\n else {\r\n $(\".PrdContainer .ProductList\").addClass(\"triple\");\r\n //$(\".PrdContainer .ProductList .Prd .carousel .carousel-indicators\").css(\"left\", \"85%\");\r\n $(\".gridAyarla.grid1 i\").addClass(\"grid-color\");\r\n }\r\n}\r\n\r\n// Filtreleme Ve Sayfa Geçişlerinde Loader Gösterip Gizler\r\nfunction ShowOrHideBackDrop($event) {\r\n if ($event != null && $event != \"\" && $event != undefined) {\r\n if ($event == \"show\") {\r\n $(\".backdrop\").addClass(\"ShowBackdrop\");\r\n $(\".LoadingGif\").show();\r\n }\r\n else if ($event == \"hide\") {\r\n $(\".backdrop\").removeClass(\"ShowBackdrop\");\r\n $(\".LoadingGif\").hide();\r\n }\r\n }\r\n}\r\n\r\n// Paging İçin Ajax\r\nfunction getPageByPageNo($pageNo, $IsBack) {\r\n if ($pageNo != null && $pageNo != \"\" && $pageNo != undefined && $pageNo != \"0\") {\r\n\r\n if ($IsBack != null && $IsBack != \"\" && $IsBack != undefined && $IsBack == \"false\") {\r\n GenerateUrlHistoy(); // URL History oluşturur\r\n }\r\n\r\n ShowOrHideBackDrop(\"show\"); // Loader gösterilir\r\n\r\n var newScrollPosition = $(\".Products\").position(); // Filtreleme&Sayfalama işleminden sonra scroll'un gideceği position değeri\r\n if ($IsBack == \"false\") {\r\n $('html, body').animate({ // Listenin başına döndürür\r\n scrollTop: 0 //newScrollPosition.top\r\n }, 0);\r\n }\r\n\r\n var params = GenerateParams(\"paging\", $pageNo); // Sayfalama için istek parametresi üretir\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: getRequestRoute() + \"/p/Home/GetProductList\",\r\n data: params,\r\n cache: false,\r\n success: function (data) {\r\n\r\n ShowOrHideBackDrop(\"hide\"); // Loader kapatılır\r\n toggleMenusOperation(\"all\");\r\n SetUrl(params);\r\n if ($(\".ProductList .NotFound\").length <= 0) {\r\n var IsInfinity = $(\"#IsInfinity\").val();\r\n\r\n if (IsInfinity == \"True\") {\r\n $container.infiniteScroll('destroy');\r\n $(\".Products\").html(data);\r\n InfinityScroll();\r\n LazyLoad();\r\n }\r\n else {\r\n $(\".Products\").html(data);\r\n LazyLoad();\r\n }\r\n\r\n IsFollowCategory();\r\n }\r\n\r\n var cookieGrid = $.cookie(\"OSgridCookie\");\r\n if (isMobileResolution()) {\r\n MobileGridSet(cookieGrid);\r\n }\r\n else {\r\n DesktopGridSet(cookieGrid);\r\n }\r\n\r\n //#region InsiderObject\r\n var InsiderObjectBegin = data.indexOf(\"\") - \"-InsiderObject-->\".length;\r\n\r\n var InsiderObjectCode = data.substr(InsiderObjectBegin, InsiderObjectEnd).replace(\"-InsiderObject-->\", \"\").replace(\"\", \"\").replace(\"