File "front-carousel.min.js"
Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/sneeit-framework/js/min/front-carousel.min.js
File size: 12.24 KB
MIME-type: text/plain
Charset: utf-8
(function($){function SneeitCarousel(ele,opt){this._=ele;this.wid=null;this.debug=false;this.oItemNum=null;this.items=null;this.outer=null;this.stage=null;this.dots=null;this.itemNum=null;this.x=0;this.xStart=0;this.xEnd=0;this.totalDots=0;this.epsilon=0;this.resetAB=0;this.prevColNum=-1;if(typeof(opt)!='object'){opt={};}
this.rtl=(this._.css('direction')=='rtl');this.opt=$.extend({},SneeitCarousel.Defaults,opt);this.colNum=this.opt.columnNumber;this.margin=this.opt.margin;this.wrapperClass='.'+this.opt.wrapperClass;this.outerClass='.'+this.opt.outerClass;this.stageClass='.'+this.opt.stageClass;this.itemClass='.'+this.opt.itemClass;this.dotsClass='.'+this.opt.dotsClass;this.dotClass='.'+this.opt.dotClass;this.navClass='.'+this.opt.navClass;this.nextClass='.'+this.opt.nextClass;this.prevClass='.'+this.opt.prevClass;this.activeClass='.'+this.opt.activeClass;if(isNaN(this.opt.displayDuration)){this.opt.displayDuration=SneeitCarousel.Defaults.displayDuration;}else{this.opt.displayDuration=Number(this.opt.displayDuration);}
if(isNaN(this.opt.animateDuration)){this.opt.animateDuration=SneeitCarousel.Defaults.animateDuration;}else{this.opt.animateDuration=Number(this.opt.animateDuration);}
this.left=this.rtl?'right':'left';this.xCSS=this.left;this.displaying=null;this.animating=false;this.hover=false;this.drag=false;this.dragging=false;this.init(false);}
SneeitCarousel.Defaults={columnNumber:1,minColumnWidth:150,margin:20,maxMargin:6.25,displayDuration:3000,animateDuration:500,dotsClass:'sneeit-carousel-dots',dotClass:'sneeit-carousel-dot',dotText:function(args){return'•'},navClass:'sneeit-carousel-nav',prevClass:'sneeit-carousel-prev',nextClass:'sneeit-carousel-next',prevText:function(args){return'⟨';},nextText:function(args){return'⟩';},wrapperClass:'sneeit-carousel',outerClass:'sneeit-carousel-outer',stageClass:'sneeit-carousel-stage',itemClass:'sneeit-carousel-item',activeClass:'active',};SneeitCarousel.prototype.animate=function(x,duration){if(this.colNum>=this.oItemNum){return;}
this.animating=x;if(typeof(x)=='undefined'){x=this.x-this.iWid;}
this.activeDot(x);this.activeNav(x);var animate_option={};animate_option[this.xCSS]=x+'%';if(typeof(duration)=='undefined'){duration=this.opt.animateDuration;}
var that=this;if(typeof(this.opt.animate)=='function'){this.opt.animate({this:that,x:x});}
if(this.debug){console.log('animate',x,duration,animate_option,this);}
this.stage.stop().animate(animate_option,duration,function(){that.x=x;that.animating=false;if(typeof(that.opt.animated)=='function'){that.opt.animated({this:that});}
that.display();});}
SneeitCarousel.prototype.getX=function(){if(this.debug){console.log('getX');}
var x=this.stage.css(this.xCSS);x=Number(x.replace('px',''));return x*100/this.wid;}
SneeitCarousel.prototype.resetX=function(){var reset=false;if(this.x<=this.xEnd){this.x+=this.resetAB;reset=true;}else if(this.x>=this.xStart){this.x-=this.resetAB;reset=true;}
if(reset){this.stage.css(this.xCSS,this.x+'%');}
if(this.debug){console.log('resetX',reset,this);}}
SneeitCarousel.prototype.activeItem=function(){var x=0;var xStart=this.x;var xEnd=this.x-this.colNum*this.iWid;for(var i=0;i<this.itemNum;i++){x=-(i*this.iWid+this.iWid/2);if(x<xStart&&x>xEnd){$(this.items[i]).addClass(this.opt.activeClass);}else{$(this.items[i]).removeClass(this.opt.activeClass);}}
if(this.debug){console.log('activeItem',x,xStart,xEnd,this);}}
SneeitCarousel.prototype.display=function(){this.resetX();var that=this;this.activeDot(this.x);this.activeNav(this.x);this.activeItem();if(this.debug){console.log('display',this);return;}
this.displaying=setTimeout(function(){clearTimeout(that.displaying);that.displaying=null;if(that.hover){return;}
that.animate();},this.opt.displayDuration);}
SneeitCarousel.prototype.stop=function(){if(this.debug){console.log('stop');}
this.stage.stop();if(this.displaying!=null){clearTimeout(this.displaying);this.displaying=null;}
this.x=this.getX();}
SneeitCarousel.prototype.init=function(reinit){if(reinit){this.stop();this.colNum=this.opt.columnNumber;this.margin=this.opt.margin;this.stage.css(this.xCSS,0);this.x=0;}
var items=null;if(!reinit){items=this._.find('>*');this.oItemNum=items.length;if(!this.oItemNum){return;}
if(!this.colNum){this.colNum=1;}
if(this.colNum>this.oItemNum){this.colNum=this.oItemNum;}}
this.wid=this._.width();this._.css('width',this.wid+'px');if(!this.wid){return;}
if(100*this.margin/this.wid>this.opt.maxMargin){this.margin=this.opt.maxMargin*this.wid/100;}
var marSum=(this.colNum-1)*this.margin;if(this.colNum<=1){marSum=0;}
var iWid=(this.wid-marSum)/this.colNum;for(;this.colNum>1&&iWid<this.opt.minColumnWidth;this.colNum--){marSum=(this.colNum-1)*this.margin;if(this.colNum<=1){marSum=0;}
iWid=this.wid/this.colNum;if(this.colNum<=1||iWid>=this.opt.minColumnWidth){break;}}
if(0==this.colNum){this.colNum=1;}
marSum=(this.colNum-1)*this.margin;iWid=(this.wid-marSum)/this.colNum;if(reinit&&this.colNum==this.prevColNum){return;}
this.prevColNum=this.colNum;if(!reinit){items.wrap('<div class="'+this.opt.itemClass+'"></div>');this._.wrapInner('<div class="'+this.opt.stageClass+'"></div>');this._.wrapInner('<div class="'+this.opt.outerClass+'"></div>');items=this._.find(this.itemClass);this.stage=this._.find(this.stageClass);this.outer=this._.find(this.outerClass);items.clone().prependTo(this.stage);items.clone().appendTo(this.stage);this.items=this._.find(this.itemClass);this.itemNum=this.items.length;}
var stageWidPx=this.itemNum*iWid+(this.itemNum-1)*this.margin;var iMarStage=this.margin*100/stageWidPx;this.iWid=(iWid*100/this.wid)+(this.margin*100/this.wid);this.epsilon=100/this.wid/10;this.resetAB=this.oItemNum*this.iWid;this.xStart=-(this.oItemNum-this.colNum-1)*this.iWid;this.xEnd=-(this.oItemNum*2+this.colNum-2)*this.iWid;this.totalDots=Math.ceil(this.oItemNum/this.colNum);this.outer.css({'overflow':'hidden','position':'relative'});this.stage.css({'position':'relative','width':(stageWidPx*100/this.wid)+'%','max-width':'none'});this.items.css({'width':(iWid*100/stageWidPx)+'%','float':this.left});if(iMarStage){this.items.css('margin-'+this.left,iMarStage+'%');}
$(this.items[0]).css('margin-'+this.left,0);if(this.debug){console.log('init',this);}
this.display();this.enableDots();if(!reinit){this.enableDrag();this.enableKeyboard();this.enableResponsive();this.enableNav();this.enableHover();this._.addClass(this.opt.wrapperClass);}}
SneeitCarousel.prototype.getPageX=function(e){if(this.debug){console.log('getPageX');}
if(typeof(e['pageX'])=='undefined'&&typeof(e['originalEvent']['touches'][0]['clientX'])!='undefined'){return e['originalEvent']['touches'][0]['clientX'];}
return e.pageX;}
SneeitCarousel.prototype.dragStart=function(){}
SneeitCarousel.prototype.dragMove=function(){}
SneeitCarousel.prototype.dragMove=function(){}
SneeitCarousel.prototype.enableDrag=function(){if(this.debug){console.log('enableDrag');}
var that=this;this.stage.on('mousedown touchstart',function(e){e.preventDefault();if(that.drag!==false){return false;}
e.pageX=that.getPageX(e);that.drag=e.pageX;that.stop();return false;});$(document).on('mousemove touchmove',function(e){if(that.drag===false){return;}
e.preventDefault();e.pageX=that.getPageX(e);if(that.rtl){that.x-=(e.pageX-that.drag)*100/that.wid;}else{that.x+=(e.pageX-that.drag)*100/that.wid;}
if(e.pageX<that.drag){that.dragging='left';}else if(e.pageX>that.drag){that.dragging='right';}
that.drag=e.pageX;that.stage.css(that.xCSS,that.x+'%');that.resetX();return false;});this.stage.find('a[href]').on('click',function(e){if(that.dragging){e.preventDefault();return false;}});$(document).on('mouseup touchend',function(e){if(that.drag===false){return;}
that.x=that.getX();var x=0;for(var i=0;i<that.itemNum-1;i++){x=-(i*that.iWid);if(that.x<x-that.epsilon&&that.x>x-that.iWid+that.epsilon){break;}}
if(i>=that.itemNum-1){that.drag=false;that.dragging=false;that.display();return;}
var x=-(i*that.iWid);if(that.dragging==that.left){x-=that.iWid;}
that.animate(x);setTimeout(function(){that.drag=false;that.dragging=false;},5);});}
SneeitCarousel.prototype.activeDot=function(x){if(this.debug){return;console.log('activeDot',x,this);}
if(!this.dots){return;}
var i=Math.round(Math.abs(x/this.iWid))%this.oItemNum;i=Math.floor(i/this.colNum);this.dots.removeClass(this.opt.activeClass);$(this.dots[i]).addClass(this.opt.activeClass);}
SneeitCarousel.prototype.enableDots=function(){if(this.debug){console.log('enableDots');}
if(!this.totalDots||!this.opt.dotsClass||!this.opt.dotClass){return;}
var dots='';var that=this;for(var i=0;i<this.totalDots;i++){var dot='';if(typeof(this.opt.dotText)=='function'){dot=this.opt.dotText({this:that,dotIndex:i,});}else{dot=this.opt.dotText;}
if(dot===false){return;}
dots+='<div class="'+this.opt.dotClass+'" data-index="'+i+'">'+dot+'</div>';}
if(this.dots!=null){this._.find(this.dotsClass).html(dots);}else{dots='<div class="'+this.opt.dotsClass+'">'+dots+'</div>';this._.append(dots);}
this.dots=this._.find(this.dotClass);$(this.dots[0]).addClass(this.opt.activeClass);this.dots.click(function(){var index=$(this).attr('data-index');if(typeof(index)=='undefined'||isNaN(index)){return;}
that.stop();index=Number(index);var x=-index*that.colNum*that.iWid;var AB=x-that.x;var maxMatchPos=that.itemNum/that.oItemNum;var stepMatch=that.resetAB;for(var i=1;i<maxMatchPos;i++){var _x=x-i*stepMatch;var _AB=_x-that.x;if(Math.abs(_AB)<Math.abs(AB)){AB=_AB;}}
x=AB+that.x;if(Math.abs(AB)<that.epsilon){that.display();return;}
that.animate(x);});}
SneeitCarousel.prototype.activeNav=function(x){if(this.debug){return;console.log('activeNav',x,this);}
var prevText='';var that=this;if(typeof(this.opt.prevText)=='function'){prevText=this.opt.prevText({this:that});}else{prevText=this.opt.prevText;}
if(prevText!==false&&this.opt.prevClass){this._.find(this.prevClass).html(prevText);}
var nextText='';if(typeof(this.opt.nextText)=='function'){nextText=this.opt.nextText({this:that});}else{nextText=this.opt.nextText;}
if(nextText!==false&&this.opt.nextClass){this._.find(this.nextClass).html(nextText);}}
SneeitCarousel.prototype.enableNav=function(){if(this.debug){console.log('enableNav');}
if(!this.opt.navClass){return;}
var arrowsContent='';var that=this;var prevText='';if(typeof(this.opt.prevText)=='function'){prevText=this.opt.prevText({this:that});}else{prevText=this.opt.prevText;}
if(prevText&&this.opt.prevClass){arrowsContent+='<div class="'+this.opt.prevClass+'">'+prevText+'</div>';}
var nextText='';if(typeof(this.opt.nextText)=='function'){nextText=this.opt.nextText({this:that});}else{nextText=this.opt.nextText;}
if(nextText&&this.opt.nextClass){arrowsContent+='<div class="'+this.opt.nextClass+'">'+nextText+'</div>';}
if(!arrowsContent){return;}
this._.append('<div class="'+this.opt.navClass+'">'+arrowsContent+'</div>');if(this.opt.prevClass){this._.find(this.prevClass).click(function(){that.prev();});}
if(this.opt.nextClass){this._.find(this.nextClass).click(function(){that.next();});}}
SneeitCarousel.prototype.prev=function(){if(this.debug){console.log('prev');}
this.stop();var i=Math.floor(this.x/this.iWid);var x=(i+1)*this.iWid;if(this.x-x>-this.iWid+this.epsilon){x+=this.iWid;}
if(x>this.xStart){this.x-=this.resetAB;x-=this.resetAB;this.stage.css(this.xCSS,this.x+'%');}
this.animate(x,90);}
SneeitCarousel.prototype.next=function(){if(this.debug){console.log('next');}
this.stop();var i=Math.floor(Math.abs(this.x/this.iWid));var x=-(i+1)*this.iWid;if(Math.abs(this.x)>i*this.iWid+this.epsilon){x-=this.iWid;}
if(x<this.xEnd){this.x+=this.resetAB;x+=this.resetAB;this.stage.css(this.xCSS,this.x+'%');}
this.animate(x,90);}
SneeitCarousel.prototype.enableKeyboard=function(){if(this.debug){console.log('enableKeyboard');}
var that=this;$(document).keydown(function(e){switch(e.which){case 37:that.prev();break;case 39:that.next();break;default:return;}
e.preventDefault();});}
SneeitCarousel.prototype.enableResponsive=function(){if(this.debug){console.log('enableResponsive');}
var that=this;$(window).resize(function(){that._.css('width','');that.init(true);});}
SneeitCarousel.prototype.enableHover=function(){if(this.debug){console.log('enableHover');}
var that=this;this._.on('mouseenter',function(){that.hover=true;});this._.on('mouseleave',function(){that.hover=false;if(!that.displaying&&that.animating===false){that.display();}});}
$.fn.sneeitCarousel=function(option){return this.each(function(){new SneeitCarousel($(this),option);});};})(jQuery);