forked from piglovesyou/flickGal
/
jquery.flickgal.min.js
12 lines (9 loc) · 3.97 KB
/
jquery.flickgal.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*
jQuery flickGal 1.2.2
Copyright (c) 2011 Soichi Takamura (http://stakam.net/jquery/flickgal/demo)
Dual licensed under the MIT and GPL licenses:
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html
*//*
init variables about browsers environment
*/(function(){var e,t,n,r,i,s,o,u,a,f,l,c,h,p;e={WEBKIT:0,GECKO:1,MSIE:2,OPERA:3,OTHER:4},p=navigator.userAgent.toLowerCase(),a=p.indexOf("webkit")>=0?e.WEBKIT:p.indexOf("gecko")>=0?e.GECKO:p.indexOf("msie")>=0?e.MSIE:p.indexOf("opera")>=0?e.OPERA:e.OTHER,c=p.indexOf("iphone")>=0||p.indexOf("ipad")>=0,l=p.indexOf("android")>=0,h=c||l,t=function(){switch(a){case e.WEBKIT:return"-webkit-";case e.GECKO:return"-moz-";case e.MSIE:return"-ms-";case e.OPERA:return"-o-";case e.OTHER:return""}}(),i=t+"transition",n=t+"transform",r=t+"transform-origin",o=a===e.WEBKIT?"translate3d(":"translate(",u=a===e.WEBKIT?"px,0,0)":"px,0)",s={FG_FLICKSTART:"fg_flickstart",FG_FLICKEND:"fg_flickend",FG_CHANGE:"fg_change",START:h?"touchstart":"mousedown",END:h?"touchend":"mouseup",MOVE:h?"touchmove":"mousemove",TRANSITION_END:a===e.WEBKIT?"webkitTransitionEnd":a===e.OPERA?"oTransitionEnd":"transitionend",ORIENTATION_CHAGE:"orientationchange",CLICK:"click",RESIZE:"resize"},l&&(s.ORIENTATION_CHAGE=""+s.ORIENTATION_CHAGE+" "+s.RESIZE),f=function(e){return[o,e,u].join("")},window.jQuery.fn.flickGal=function(t){return t=$.extend({infinitCarousel:!1,lockScroll:!0},t),this.each(function(){var r,i,o,u,l,c,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W;return o=$(this),i=$(".container",o).css({overflow:"hidden"}),r=$(".containerInner",i).css({position:"relative",overflow:"hidden",top:0,left:0}),u=$(".item",r).css({"float":"left"}),L=u.length,A=u.outerWidth(!0),b=A*L,y=u.outerHeight(!0),M=0,O=(A*L-A)*-1,x=0,S=0,E=0,C=function(e){var t;try{return t=window.parseInt(/(,.+?){3} (.+?)px/.exec(e.css(n))[2]),window.isNaN(t)?0:t+S}catch(r){}return 0},k=function(){return a!==e.GECKO?r.offset().left:C(r)},H=function(e){return S=i.offset().left,E=(i.innerWidth()-A)/2,_(x)},l=$(".nav",o),c=l.find("a[href^=#]"),p=c.parent(),W=!!(l.length&&c.length&&p.length),v=$(".prev",o),d=$(".next",o),z=!!v.length&&!!d.length,z&&(P=function(){return x=x>0?x-1:t.infinitCarousel?L-1:x,_(x)},D=function(){return x=x<L-1?x+1:t.infinitCarousel?0:x,_(x)},T=function(){v.add(d).removeClass("off");if(x===0)return v.addClass("off");if(x===L-1)return d.addClass("off")}),F=0,N=0,j=0,B=0,m={IS_MOVING:1,IS_EDGE:2,IS_FIRST:4,IS_LAST:8},I=0,R=function(e){var i,u,a;a=h?e.touches[0]:e;switch(e.type){case s.MOVE:t.lockScroll&&e.preventDefault();if(I&m.IS_MOVING)return i=a.pageX-F,I&m.IS_EDGE&&(I&m.IS_FIRST&&i>0||I&m.IS_LAST&&i<0)&&(i/=2),r.css(n,f(E+B+i));break;case s.START:h||e.preventDefault(),I|=m.IS_MOVING,x===0&&(I|=m.IS_FIRST),x===L-1&&(I|=m.IS_LAST);if(I&m.IS_FIRST||I&m.IS_LAST)I|=m.IS_EDGE;j=(new Date).getTime(),F=h?a.pageX:e.clientX,B=k()-S-E,o.trigger(s.FG_FLICKSTART,[x]);if(r.hasClass("moving"))return r.removeClass("moving").css(n,f(E+B));break;case s.END:return B=0,I=0,N=h?e.changedTouches[0].pageX:e.clientX,u=w(),o.trigger(s.FG_FLICKEND,[u]),_(u)}},U=function(){return r.removeClass("moving")},w=function(){var e,t,n,r,i,s;return r=(new Date).getTime(),s=r-j,n=N-F,i=x,s<300&&Math.abs(n)>30?n>0?i--:i++:(e=k()-S,t=Math.abs(M+e-E-A/2),i=Math.floor(t/A)),Math.max(0,Math.min(i,L-1))},_=function(e){r.addClass("moving"),x!==e&&o.trigger(s.FG_CHANGE,[e]),x=e,r.css(n,f(E+A*x*-1)),W&&p.removeClass("selected").eq(x).addClass("selected");if(z)return T()},i.height(y).scroll(function(){return $(this).scrollLeft(0)}),r.height(y).width(b).css(n,f(k())),$(window).bind(h?s.ORIENTATION_CHAGE:s.RESIZE,H),H(),W&&(p.eq(0).addClass("selected"),c.bind(s.START,function(e){var t;return t=c.index(this),_(t),!1}).bind(s.CLICK,function(){return!1})),z&&(v.bind(s.START,P),d.bind(s.START,D),T()),q=[s.MOVE,s.START,s.END],h?(g=r[0],$.each(q,function(e,t){return g.addEventListener(t,R,!1)}),g.addEventListener(s.TRANSITION_END,U,!1)):r.bind(q.join(" "),R).bind(s.TRANSITION_END,U)})}}).call(this);