/* * iosSlider - http://iosscripts.com/iosslider/ * * A jQuery Horizontal Slider for iPhone/iPad Safari * This plugin turns any wide element into a touch enabled horizontal slider. * * Copyright (c) 2012 Marc Whitbread * * Version: v1.1.36 (11/26/2012) * Minimum requirements: jQuery v1.4+ * * Advanced requirements: * 1) jQuery bind() click event override on slide requires jQuery v1.6+ * * Terms of use: * * 1) iosSlider is licensed under the Creative Commons – Attribution-NonCommercial 3.0 License. * 2) You may use iosSlider free for personal or non-profit purposes, without restriction. * Attribution is not required but always appreciated. For commercial projects, you * must purchase a license. You may download and play with the script before deciding to * fully implement it in your project. Making sure you are satisfied, and knowing iosSlider * is the right script for your project is paramount. * 3) You are not permitted to make the resources found on iosscripts.com available for * distribution elsewhere "as is" without prior consent. If you would like to feature * iosSlider on your site, please do not link directly to the resource zip files. Please * link to the appropriate page on iosscripts.com where users can find the download. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ (function(a){var ja=0,T=0,$=0,P=0,L="ontouchstart"in window,Aa="onorientationchange"in window,aa=!1,X=!1,Y=!1,ea="pointer",qa="pointer",ka=[],fa=[],ra=[],sa=[],ga=[],F=[],Z=[],x=[],f=[],n=[],ta=[],ba=[],e={showScrollbar:function(g,d){g.scrollbarHide&&a("."+d).css({opacity:g.scrollbarOpacity,filter:"alpha(opacity:"+100*g.scrollbarOpacity+")"})},hideScrollbar:function(a,d,b,D,c,m,f,n,s,v){if(a.scrollbar&&a.scrollbarHide)for(var x=b;x=-1*f[i]||0<=b){p=a(g).width();if(0<=b){t=-1*H[0];a(d).each(function(b){e.setSliderOffset(a(d)[b],t+w);bI&&(I=e.getSliderOffset(this,"x"),y=a)});q=f[i]-a(d[y]).outerWidth(!0);e.setSliderOffset(a(d)[y],q);u.splice(0,0,-1*q+w);u.splice(u.length-1,1);f[i]=-1*u[0]+w;n[i]=f[i]+p-m;x[i]--;F[i]++}}0>b&&(y=0,I=e.getSliderOffset(a(d[0]),"x"),a(d).each(function(a){e.getSliderOffset(this,"x")>I&&(I=e.getSliderOffset(this,"x"),y=a)}),q=f[i]-a(d[y]).outerWidth(!0),e.setSliderOffset(a(d)[y],q),u.splice(0,0,-1*q+ w),u.splice(u.length-1,1),f[i]=-1*u[0]+w,n[i]=f[i]+p-m,x[i]--)}}H=!1;m=e.calcActiveOffset(k,b,u,m,x[i],r,v,i);q=(m+x[i]+r)%r;k.infiniteSlider?q!=Z[i]&&(H=!0):m!=F[i]&&(H=!0);if(H&&(r=new e.args(k,g,a(g).children(":eq("+q+")"),q,l,!0),a(g).parent().data("args",r),""!=k.onSlideChange))k.onSlideChange(r);F[i]=m;Z[i]=q;b=Math.floor(b);e.setSliderOffset(g,b);k.scrollbar&&(P=Math.floor((-1*b-f[i])/(n[i]-f[i])*(N-J-c)),g=c-s,b>=-1*f[i]?(g=c-s- -1*P,e.setSliderOffset(a("."+D),0)):(b<=-1*n[i]+1&&(g=N-J-s- P),e.setSliderOffset(a("."+D),P)),a("."+D).css({width:g+"px"}))},slowScrollHorizontal:function(g,d,b,D,c,m,N,J,s,v,H,u,q,r,i,w,l,k,p,t){var m=[],j=e.getSliderOffset(g,"x"),B=0,y=25/1024*J;frictionCoefficient=t.frictionCoefficient;elasticFrictionCoefficient=t.elasticFrictionCoefficient;snapFrictionCoefficient=t.snapFrictionCoefficient;5c&&(t.snapToChildren&&!k)&&(B=-1);c<-1*y?c=-1*y:c>y&&(c=y);a(g)[0]!==a(l)[0]&&(B*=-1,c*=-2);l=x[r];if(t.infiniteSlider)var I=f[r],E= n[r];for(var k=[],y=[],h=0;hc;){c*=frictionCoefficient;j+=c;if((j>-1*f[r]||j<-1*n[r])&&!t.infiniteSlider)c*=elasticFrictionCoefficient,j+=c;if(t.infiniteSlider){if(j<=-1*E){for(var E=a(g).width(),K=0,L=y[0],h=0;h=-1*I){E=a(g).width();K=0;L=y[0];for(h=0;hL&&(L=y[h],K=h);h=I-a(d[K]).outerWidth(!0); y[K]=h;k.splice(0,0,-1*h+p);k.splice(k.length-1,1);I=-1*k[0]+p;E=I+E-J;l--}}m[m.length]=j}y=!1;c=e.calcActiveOffset(t,j,k,J,l,w,F[r],r);I=(c+l+w)%w;t.snapToChildren&&(t.infiniteSlider?I!=Z[r]&&(y=!0):c!=F[r]&&(y=!0),0>B&&!y?(c++,c>=q.length&&!t.infinteSlider&&(c=q.length-1)):0c&&!t.infinteSlider&&(c=0)));if(t.snapToChildren||(j>-1*f[r]||j<-1*n[r])&&!t.infiniteSlider){j=e.getSliderOffset(g,"x");for(m.splice(0,m.length);jk[c]+0.5;)j=(j-k[c])*snapFrictionCoefficient+k[c], m[m.length]=j;m[m.length]=k[c]}B=1;0!=m.length%2&&(B=0);for(j=0;j=m.length-2)I=m[j],b[b.length]=e.slowScrollHorizontalIntervalTimer(10*j,g,d,m[j],D,N,J,s,v,H,c,u,q,i,w,r,p,l,t);I=(c+x[r]+w)%w;""!=t.onSlideComplete&&(b[b.length]=e.onSlideCompleteTimer(10*(j+1),t,g,a(g).children(":eq("+I+")"),I,r));ga[r]=b;e.hideScrollbar(t,b,j,m,D,N,J,v,H,r)},onSlideComplete:function(g,d,b,D,c){var m=ka[c]!=D?!0: !1,b=new e.args(g,a(d),b,D,D,m);a(d).parent().data("args",b);if(""!=g.onSlideComplete)g.onSlideComplete(b);ka[c]=D},getSliderOffset:function(g,d){var b=0,d="x"==d?4:5;if(aa&&!X&&!Y){for(var b=["-webkit-transform","-moz-transform","transform"],e=0;e").css({webkitTransform:"matrix(1,1,1,1,1,1)", MozTransform:"matrix(1,1,1,1,1,1)",transform:"matrix(1,1,1,1,1,1)"});""==d.attr("style")?e=!1:void 0!=d.attr("style")&&(e=!0);return e},getSlideNumber:function(a,e,b){return(a-x[e]+b)%b},calcActiveOffset:function(a,e,b,D){for(var c=!1,a=[],m,f=0;fe-D&&(!c&&b[f]!=e&&(a[a.length]=b[f-1]),a[a.length]=b[f],c=!0);0==a.length&&(a[0]=b[b.length-1]);for(f=c=0;f=j.length-2)t=j[k],f[k]=e.slowScrollHorizontalIntervalTimer(10*(k+1),d,b,j[k],c,m,n,J,s,v,g,H,u,r,i,q,w,g,l);0==k&&""!=l.onSlideStart&&(p=(F[q]+x[q]+i)%i,l.onSlideStart(new e.args(l,d,a(d).children(":eq("+p+")"),p,g,!1)))}t=!1;p=(g+x[q]+i)%i;l.infiniteSlider?p!=Z[q]&&(t=!0):g!=F[q]&&(t=!0);t&&""!=l.onSlideComplete&&(f[f.length]=e.onSlideCompleteTimer(10*(k+1),l,d,a(d).children(":eq("+p+")"),p,q));ga[q]=f;e.hideScrollbar(l, f,k,j,c,m,n,s,v,q);e.autoSlide(d,b,f,c,m,n,J,s,v,H,u,q,r,i,w,l)},autoSlide:function(a,d,b,f,c,m,n,J,s,v,H,u,q,r,i,w){if(!w.autoSlide)return!1;e.autoSlidePause(u);fa[u]=setTimeout(function(){!w.infiniteSlider&&F[u]>H.length-1&&(F[u]-=r);e.changeSlide((F[u]+x[u]+r+1)%r,a,d,b,f,c,m,n,J,s,v,H,u,q,r,i,w);e.autoSlide(a,d,b,f,c,m,n,J,s,v,H,u,q,r,i,w)},w.autoSlideTimer+w.autoSlideTransTimer)},autoSlidePause:function(a){clearTimeout(fa[a])},isUnselectable:function(e,d){return""!=d.unselectableSelector&&1== a(e).closest(d.unselectableSelector).size()?!0:!1},slowScrollHorizontalIntervalTimer:function(a,d,b,f,c,m,n,x,s,v,F,u,q,r,i,w,l,k,p){return setTimeout(function(){e.slowScrollHorizontalInterval(d,b,f,c,m,n,x,s,v,F,u,q,r,i,w,l,k,p)},a)},onSlideCompleteTimer:function(a,d,b,f,c,m){return setTimeout(function(){e.onSlideComplete(d,b,f,c,m)},a)},hideScrollbarIntervalTimer:function(a,d,b,f,c,m,n,x,s,v){return setTimeout(function(){e.hideScrollbarInterval(d,b,f,c,m,n,x,s,v)},a)},args:function(f,d,b,n,c,m){this.settings= f;this.data=a(d).parent().data("iosslider");this.slideChanged=m;this.sliderObject=d;this.sliderContainerObject=a(d).parent();this.currentSlideObject=b;this.currentSlideNumber=n+1;this.targetSlideObject=a(d).children(":eq("+c+")");this.targetSlideNumber=c+1;this.currentSliderOffset=-1*e.getSliderOffset(d,"x")},preventDrag:function(a){a.preventDefault()},preventClick:function(a){a.stopImmediatePropagation();return!1},enableClick:function(){return!0}};e.setBrowserInfo();var R={init:function(g,d){aa= e.has3DTransform();var b=a.extend(!0,{elasticPullResistance:0.6,frictionCoefficient:0.92,elasticFrictionCoefficient:0.6,snapFrictionCoefficient:0.92,snapToChildren:!1,snapSlideCenter:!1,startAtSlide:1,scrollbar:!1,scrollbarDrag:!1,scrollbarHide:!0,scrollbarLocation:"top",scrollbarContainer:"",scrollbarOpacity:0.4,scrollbarHeight:"4px",scrollbarBorder:"0",scrollbarMargin:"5px",scrollbarBackground:"#000",scrollbarBorderRadius:"100px",scrollbarShadow:"0 0 0 #000",scrollbarElasticPullResistance:0.9,desktopClickDrag:!1, keyboardControls:!1,responsiveSlideContainer:!0,responsiveSlides:!0,navSlideSelector:"",navPrevSelector:"",navNextSelector:"",autoSlideToggleSelector:"",autoSlide:!1,autoSlideTimer:5E3,autoSlideTransTimer:750,infiniteSlider:!1,stageCSS:{position:"relative",top:"0",left:"0",overflow:"hidden",zIndex:1},unselectableSelector:"",onSliderLoaded:"",onSliderUpdate:"",onSlideStart:"",onSlideChange:"",onSlideComplete:""},g);void 0==d&&(d=this);return a(d).each(function(){function d(){e.autoSlidePause(c);ua= a(A).find("a");xa=a(A).find("[onclick]");la=a(A).find("*");a(k).css("width","");a(k).css("height","");a(A).css("width","");z=a(A).children().not("script").get();ma=[];U=[];a(z).css("width","");n[c]=0;h=[];i=a(k).parent().width();p=a(k).outerWidth(!0);b.responsiveSlideContainer&&(p=a(k).outerWidth(!0)>i?i:a(k).outerWidth(!0));a(k).css({position:b.stageCSS.position,top:b.stageCSS.top,left:b.stageCSS.left,overflow:b.stageCSS.overflow,zIndex:b.stageCSS.zIndex,webkitPerspective:1E3,webkitBackfaceVisibility:"hidden", width:p});a(b.unselectableSelector).css({cursor:"default"});for(var C=0;Cp?p+-1*(U[C]-ma[C]):ma[C],a(z[C]).css({width:U[C]})),a(z[C]).css({webkitBackfaceVisibility:"hidden",position:"absolute",top:0}),h[C]=-1*n[c],n[c]+=U[C];b.snapSlideCenter&&(l=0.5*(p-U[0]));ta[c]=2*n[c];for(C=0;Ch.length?h.length:b.startAtSlide,F[c]=b.startAtSlide-1,Z[c]=F[c]);f[c]=n[c]+l;a(A).css({position:"relative",cursor:ea,webkitPerspective:"0",webkitBackfaceVisibility:"hidden",width:n[c]+"px"});V=n[c];n[c]=2*n[c]-p+2*l;(O=Vw?w:t);a(k).css({height:t}); e.setSliderOffset(A,h[F[c]]);if(b.infiniteSlider&&!O){e.getSliderOffset(a(A),"x");for(C=-1*((x[c]+G)%G);0>C;){var y=0,D=e.getSliderOffset(a(z[0]),"x");a(z).each(function(a){e.getSliderOffset(this,"x")ya&&(ya= e.getSliderOffset(this,"x"),J=a)});E=f[c]-U[J];e.setSliderOffset(a(z)[J],E);h.splice(0,0,-1*E+l);h.splice(h.length-1,1);f[c]=-1*h[0]+l;n[c]=f[c]+V-p;x[c]--;F[c]++}}e.setSliderOffset(A,h[F[c]]);!L&&!b.desktopClickDrag&&a(A).css({cursor:"default"});b.scrollbar&&(a("."+s).css({margin:b.scrollbarMargin,overflow:"hidden",display:"none"}),a("."+s+" ."+v).css({border:b.scrollbarBorder}),j=parseInt(a("."+s).css("marginLeft"))+parseInt(a("."+s).css("marginRight")),B=parseInt(a("."+s+" ."+v).css("borderLeftWidth"), 10)+parseInt(a("."+s+" ."+v).css("borderRightWidth"),10),q=""!=b.scrollbarContainer?a(b.scrollbarContainer).width():p,r=(q-j)/G,b.scrollbarHide||(R=b.scrollbarOpacity),a("."+s).css({position:"absolute",left:0,width:q-j+"px",margin:b.scrollbarMargin}),"top"==b.scrollbarLocation?a("."+s).css("top","0"):a("."+s).css("bottom","0"),a("."+s+" ."+v).css({borderRadius:b.scrollbarBorderRadius,background:b.scrollbarBackground,height:b.scrollbarHeight,width:r-B+"px",minWidth:b.scrollbarHeight,border:b.scrollbarBorder, webkitPerspective:1E3,webkitBackfaceVisibility:"hidden",position:"relative",opacity:R,filter:"alpha(opacity:"+100*R+")",boxShadow:b.scrollbarShadow}),e.setSliderOffset(a("."+s+" ."+v),Math.floor((-1*h[F[c]]-f[c]+l)/(n[c]-f[c])*(q-j-r))),a("."+s).css({display:"block"}),H=a("."+s+" ."+v),u=a("."+s));b.scrollbarDrag&&!O&&a("."+s+" ."+v).css({cursor:ea});b.infiniteSlider&&(M=(n[c]+p)/3);""!=b.navSlideSelector&&a(b.navSlideSelector).each(function(d){a(this).css({cursor:"pointer"});a(this).unbind(W).bind(W, function(){e.changeSlide(d,A,z,g,v,r,p,q,j,B,K,h,c,M,G,l,b)})});""!=b.navPrevSelector&&(a(b.navPrevSelector).css({cursor:"pointer"}),a(b.navPrevSelector).unbind(W).bind(W,function(){var a=(F[c]+x[c]+G)%G;(0
"):a(A).parent().append("
"));if(!d())return!0;a(this).find("a").bind("mousedown",e.preventDrag);a(this).find("[onclick]").bind("click",e.preventDrag).each(function(){a(this).data("onclick", this.onclick)});var E=e.calcActiveOffset(b,e.getSliderOffset(a(A),"x"),h,p,x[c],G,void 0,c),E=(E+x[c]+G)%G,da=new e.args(b,A,a(A).children(":eq("+E+")"),E,E,!1);a(k).data("args",da);if(""!=b.onSliderLoaded)b.onSliderLoaded(da);ka[c]=E;if(ra[c].responsiveSlides||ra[c].responsiveSlideContainer)E=Aa?"orientationchange":"resize",a(window).bind(E+".iosSliderEvent",function(){if(!d())return!0});b.keyboardControls&&!O&&a(document).bind("keydown.iosSliderEvent",function(a){!X&&!Y&&(a=a.originalEvent);switch(a.keyCode){case 37:a= (F[c]+x[c]+G)%G;(0-1*f[c]+l+V?(d=-1*f[c]+l+V,e.setSliderOffset(a("."+ v),d),a("."+v).css({width:r-B+"px"})):d<-1*n[c]&&(e.setSliderOffset(a("."+v),q-j-r),a("."+v).css({width:r-B+"px"}));d=a(this)[0]===a(H)[0]?f[c]:0;Q=-1*(e.getSliderOffset(this,"x")-eventX-d);e.getSliderOffset(this,"y");N[1]=eventX;J[1]=eventY;ha=!1});da=L?"touchmove.iosSliderEvent":"mousemove.iosSliderEvent";a(E).bind(da,function(d){!X&&!Y&&(d=d.originalEvent);if(ba[c]||O||wa)return!0;var g=0;L||(window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&& window.getSelection().removeAllRanges():document.selection&&document.selection.empty());if(L)eventX=d.touches[0].pageX,eventY=d.touches[0].pageY;else if(eventX=d.pageX,eventY=d.pageY,!va||("undefined"!=typeof d.webkitMovementX||"undefined"!=typeof d.webkitMovementY)&&0===d.webkitMovementY&&0===d.webkitMovementX)return!1;N[0]=N[1];N[1]=eventX;T=(N[1]-N[0])/2;J[0]=J[1];J[1]=eventY;$=(J[1]-J[0])/2;if(!S){var i=(F[c]+x[c]+G)%G,i=new e.args(b,A,a(A).children(":eq("+i+")"),i,i,!1);a(k).data("args",i);if(""!= b.onSlideStart)b.onSlideStart(i)}if((3<$||-3>$)&&3>T&&-3T)&&L?(d.preventDefault(),S=!0):L||(S=!0);if(S&&!pa){var i=e.getSliderOffset(A,"x"),m=a(this)[0]===a(u)[0]?f[c]:0,t=a(this)[0]===a(u)[0]?(f[c]-n[c])/(q-j-r):1,D=a(this)[0]===a(u)[0]?b.scrollbarElasticPullResistance:b.elasticPullResistance;L&&(aa!=d.touches.length&&(Q=-1*i+eventX),aa=d.touches.length);if(b.infiniteSlider){if(i<=-1*n[c]){var s=a(A).width();if(i<=-1*ta[c]){var w=-1*K[0];a(z).each(function(b){e.setSliderOffset(a(z)[b], w+l);b=-1*f[c]||0<=i)if(s=a(A).width(),0<=i){w=-1*K[0];a(z).each(function(b){e.setSliderOffset(a(z)[b],w+l);bM&&(M=e.getSliderOffset(this,"x"),H=a)});D=f[c]-a(z[H]).outerWidth(!0);e.setSliderOffset(a(z)[H],D);h.splice(0,0,-1*D+l);h.splice(h.length-1,1);f[c]=-1*h[0]+l;n[c]=f[c]+s-p;x[c]--;F[c]++}}else H=0,M=e.getSliderOffset(a(z[0]),"x"),a(z).each(function(a){e.getSliderOffset(this,"x")>M&&(M=e.getSliderOffset(this,"x"),H=a)}),D=f[c]-a(z[H]).outerWidth(!0), e.setSliderOffset(a(z)[H],D),h.splice(0,0,-1*D+l),h.splice(h.length-1,1),f[c]=-1*h[0]+l,n[c]=f[c]+s-p,x[c]--}else s=a(A).width(),i>-1*f[c]+l&&(g=-1*(f[c]+-1*(Q-m-eventX+l)*t-m)*D/t),i<-1*n[c]&&(g=-1*(n[c]+-1*(Q-m-eventX)*t-m)*D/t);e.setSliderOffset(A,-1*(Q-m-eventX-g)*t-m);b.scrollbar&&(e.showScrollbar(b,v),P=Math.floor((Q-eventX-g-f[c]+l)/(n[c]-f[c])*(q-j-r)*t),m=r,i>=-1*f[c]+l+s?(m=r-B- -1*P,e.setSliderOffset(a("."+v),0),a("."+v).css({width:m+"px"})):i<=-1*n[c]+1?(m=q-j-B-P,e.setSliderOffset(a("."+ v),P),a("."+v).css({width:m+"px"})):e.setSliderOffset(a("."+v),P));L&&(y=d.touches[0].pageX);d=!1;g=e.calcActiveOffset(b,-1*(Q-eventX-g),h,p,x[c],G,void 0,c);s=(g+x[c]+G)%G;b.infiniteSlider?s!=Z[c]&&(d=!0):g!=F[c]&&(d=!0);if(d&&(F[c]=g,Z[c]=s,ha=!0,i=new e.args(b,A,a(A).children(":eq("+s+")"),s,s,!0),a(k).data("args",i),""!=b.onSlideChange))b.onSlideChange(i)}});a(ia).bind("touchend.iosSliderEvent",function(a){a=a.originalEvent;if(ba[c]||O||wa)return!0;if(0!=a.touches.length)for(var d=0;dd-2&&F[b.sliderNumber]++; R.update(this)})},removeSlide:function(e){return this.each(function(){var d=a(this).data("iosslider");if(void 0==d)return!1;a(d.scrollerNode).children(":eq("+(e-1)+")").remove();F[d.sliderNumber]>e-1&&F[d.sliderNumber]--;R.update(this)})},goToSlide:function(g,d){void 0==d&&(d=this);return a(d).each(function(){var b=a(this).data("iosslider");if(void 0==b)return!1;g=(g-1+b.numberOfSlides)%b.numberOfSlides;e.changeSlide(g,a(b.scrollerNode),a(b.slideNodes),ga[b.sliderNumber],b.scrollbarClass,b.scrollbarWidth, b.stageWidth,b.scrollbarStageWidth,b.scrollMargin,b.scrollBorder,b.originalOffsets,b.childrenOffsets,b.sliderNumber,b.infiniteSliderWidth,b.numberOfSlides,b.centeredSlideOffset,b.settings);F[b.sliderNumber]=g})},lock:function(){return this.each(function(){var e=a(this).data("iosslider");if(void 0==e)return!1;ba[e.sliderNumber]=!0})},unlock:function(){return this.each(function(){var e=a(this).data("iosslider");if(void 0==e)return!1;ba[e.sliderNumber]=!1})},getData:function(){return this.each(function(){var e= a(this).data("iosslider");return void 0==e?!1:e})}};a.fn.iosSlider=function(e){if(R[e])return R[e].apply(this,Array.prototype.slice.call(arguments,1));if("object"===typeof e||!e)return R.init.apply(this,arguments);a.error("invalid method call!")}})(jQuery);