(function($){$.fn.touchslider=function(el,_cfg){$.extend(this,$.fn.touchslider.methods);this.cfg=$.extend({},$.fn.touchslider.defaults,_cfg);this.items=el.find(this.cfg.itemsSelector);this.box=this.items.parent();this.boxSize=0;this.current=0;this.el=el;this.init();if(this.pos.length)this.fix(0);return this};$.fn.touchslider.defaults={itemsSelector:".item",paging:null,count:1,vertical:false,scroll:false,resize:false,asyncElSize:false,timer:0,touch:true,loop:false,animateName:"data-slider-animate"};$.fn.touchslider.methods={boxPos:function(){return this.cfg.vertical?this.box.position().top:this.box.position().left},fix:function(index){var self=this;index=index<0?0:index;index=index>=self.pos.length-1?self.pos.length-1:index;var r=self.pos[index];var pos=r.e-self.boxSize-r.me;if(pos<0)pos=0;self.isMoving=true;if(self.cfg.vertical)self.box.stop().animate({top:-1*pos},function(){self.isMoving=false});else self.box.stop().animate({left:-1*pos},function(){self.isMoving=false});self.current=index;if(self.cfg.paging){index=Math.floor(index/self.cfg.count);$(self.cfg.paging).removeClass("active").eq(index).addClass("active")}self.timer();self.animate(index)},pre:function(){var self=this;var cfg=self.cfg;var s=Math.abs(this.boxPos());v=s+this.boxSize;for(var i=self.pos.length-1;i>=0;i--){if(self.pos[i].ev){index=i+cfg.count-1;self.fix(index);return i}}if(cfg.loop)self.fix(0)},resize:function(){var self=this;var cfg=self.cfg;var el=self.el;self.pos=[];self.boxSize=cfg.vertical?el.height():el.width();var ot=this.box.offset();var items;if(ke.isString(cfg.itemsSelector))items=el.find(cfg.itemsSelector);else{items=cfg.itemsSelector}if(cfg.asyncElSize){items.css({width:self.el.width(),height:self.el.height()})}items.each(function(i,d){var cs=document.defaultView.getComputedStyle(d);var os,s,ms,me,v;if(!self.cfg.vertical){os=ot.left;s=$(d).offset().left;ms=parseFloat(cs["marginLeft"]);me=parseFloat(cs["marginRight"]);v=$(d).outerWidth(false)}else{os=ot.top;s=$(d).offset().top;ms=parseFloat(cs["marginTop"]);me=parseFloat(cs["marginBottom"]);v=$(d).outerHeight(false)}self.pos.push({s:s-os,e:s-os+v,size:v,ms:ms>0?ms:0,me:me>0?me:0})})},timer:function(){var self=this;if(self.cfg.timer){clearTimeout(self._timerEvent);if(self.current==self.pos.length-1)this._timerDirect=-1;else if(self.current==0)this._timerDirect=1;self._timerEvent=setTimeout(function(){if(self.box.offset().top<$(window).scrollTop()+document.body.clientHeight){if(self._timerDirect==-1)self.pre();else self.next()}},self.cfg.timer)}},init:function(){var self=this;var cfg=self.cfg;this.resize();if(cfg.touch){self.box.bind("touchstart",self,this._touchstart).bind("touchmove",self,this._touchmove).bind("touchend",self,this._touchend).bind("dragstart",self,this._touchstart).bind("drag",self,this._touchmove).bind("dragend",self,this._touchend)}if(cfg.scroll){document.addEventListener("mousewheel",function(e){e=e||window.event;e.preventDefault();if(!self.isMoving){var i=self.current;if(e.wheelDelta>0)i--;else i++;self.fix(i)}},{passive:false,useCapture:false})}if(cfg.resize){$(window).resize(function(){self.resize();self.fix(self.current)})}if(self.cfg.paging){$(self.cfg.paging).click(function(e){var i=parseInt($(this).index());i=(i+1)*self.cfg.count-1;self.fix(i)})}this.timer()},animate:function(index){var el=this.items.eq(index);var attrName=this.cfg.animateName;el.find("["+attrName+"]").each(function(i,dom){var cls="animate__animated "+$(dom).attr(attrName);$(dom).addClass(cls)})},_touchstart:function(e){if(e.type=="touchstart"&&e.originalEvent.touches.length<=1||e.type=="dragstart"){var touches=e.originalEvent.touches;this._startX=e.pageX||touches&&touches[0].pageX;this._startY=e.pageY||touches&&touches[0].pageY;this._startPos=e.data.boxPos();this._tv=0}},_touchmove:function(e){if(e.type=="touchmove"&&e.originalEvent.touches.length<=1||e.type=="drag"){var touches=e.originalEvent.touches;if(!e.data.cfg.vertical){this._tv=(e.pageX||touches&&touches[0].pageX)-this._startX;e.data.box.stop().css({left:this._startPos+this._tv})}else{this._tv=(e.pageY||touches&&touches[0].pageY)-this._startY;if(Math.abs(this._tv)>50)e.data.box.stop().css({top:this._startPos+this._tv})}}},_touchend:function(e){if(e.type=="touchend"&&e.originalEvent.touches.length<=1||e.type=="dragend"){var self=e.data;if(!this._tv||self.cfg.vertical&&Math.abs(this._tv)<50){self.fix(self.current);return}if(this._tv<0){var i=self.next();if(i<0)self.fix(self.pos.length-1);else self.fix(self.current)}else self.pre()}}}})(jQuery);