source: extensions/iPiwigo/www/extensions/jqt.scroll.min.js @ 9188

Last change on this file since 9188 was 9188, checked in by Polly, 13 years ago

Adding the Phonegap www folder needed to compile.

  • Property svn:executable set to *
File size: 12.8 KB
Line 
1/**
2 *
3 * Add support for scrolling vertically and horizontally using jQTouch in Webkit Mobile
4 * Plus support for slides
5 *
6 * Copyright (c) 2010 Sam Shull <http://samshull.blogspot.com/>
7 * Released under MIT license
8 *
9 * Based on the work of Matteo Spinelli, http://cubiq.org/
10 * Released under MIT license
11 * http://cubiq.org/dropbox/mit-license.txt
12 *
13 * Find more about the scrolling function at
14 * http://cubiq.org/scrolling-div-for-mobile-webkit-turns-3/16
15 *
16 *
17 */
18(function(g){if(!"WebKitCSSMatrix" in this){return null}var i,l=this,u=l.document,z=l.Number,m=l.Math,t=("m11" in new WebKitCSSMatrix()),h={attributesToOptions:f,attributes:{defaultDuration:"slidespeed",preventDefault:function(A,B){return g(A).attr("preventdefault")==="false"?false:!!n[B].preventDefault},bounce:function(A,B){return A.attr("bounce")==="false"?false:n[B].bounce},scrollBar:function(A,B){return A.hasClass("with-scrollbar")},useSlides:function(A,B){return g(A).find(n[B].slides.selector).length>0}},ignore:"SELECT,TEXTAREA,BUTTON,INPUT",useSlides:false,slides:{selector:".slide-container",currentClass:"jqt-slide-current",portion:3,easing:2,callback:r},numberOfTouches:1,divider:6,touchEventList:["touchend","touchmove","touchcancel"],bounceSpeed:300,defaultDuration:500,defaultOffset:0,preventDefault:true,maxScrollTime:1000,friction:3,scrollTopOnTouchstart:true,bounce:true,scrollBar:true,scrollBarObject:null,events:{scrollTo:b,reset:y,touchstart:a,touchmove:x,touchend:e,touchcancel:e,webkitTransitionEnd:j},setPosition:d,momentum:p},n={vertical:g.extend({},h,{direction:"vertical",dimension:"height",outerDimension:"outerHeight",matrixProperty:"m42",selector:".vertical-scroll > div",eventProperty:"pageY",tranform:t?"translate3d(0,{0}px,0)":"translate(0,{0}px)",slideProperty:"offsetTop"}),horizontal:g.extend({},h,{direction:"horizontal",dimension:"width",outerDimension:"outerWidth",matrixProperty:"m41",selector:".horizontal-scroll > table",eventProperty:"pageX",tranform:t?"translate3d({0}px,0,0)":"translate({0}px,0)",slideProperty:"offsetLeft"})},o=function(A){return(l.innerHeight-(A.toolbarHeight*2))+"px !important"},s=function(A){return(l.innerHeight-A.toolbarHeight)+"px"},v=function(){return l.innerWidth+"px"},k={variables:{toolbarHeight:46},defaults:{".vertical-scroll":{position:"relative","z-index":1,overflow:"hidden","margin-bottom":"44px",height:s},".vertical-scroll.use-bottom-toolbar":{height:o},".vertical-scroll > div":{margin:"0 auto","padding-bottom":"15px","-webkit-transition-property":"-webkit-transform","-webkit-transition-timing-function":"cubic-bezier(0,0,.25,1)","-webkit-transform":"translate3d(0,0,0)","-webkit-transition-duration":"0s",},".vertical-scroll.use-bottom-toolbar":{"margin-bottom":"0px"},".vertical-scroll.use-bottom-toolbar > div":{"padding-bottom":"0px"},".scrollbar":{"-webkit-transition-timing-function":"cubic-bezier(0,0,.25,1)","-webkit-transform":"translate3d(0,0,0)","-webkit-transition-property":"-webkit-transform,opacity","-webkit-transition-duration":"0,0,0,1s","-webkit-border-radius":"2px","pointer-events":"none",opacity:0,background:"rgba(0,0,0,.5)","-webkit-box-shadow":"0 0 2px rgba(255,255,255,.5)",position:"absolute","z-index":10,width:"5px",height:"5px"},".scrollbar.vertical":{top:"1px",right:"1px"},".scrollbar.horizontal":{bottom:"1px",left:"1px"},".horizontal-scroll":{width:v,height:"100%",overflow:"hidden",padding:"0px",position:"relative",height:s,"line-height":s},".horizontal-scroll > table":{height:"100%","-webkit-transition-property":"-webkit-transform","-webkit-transition-timing-function":"cubic-bezier(0,0,.25,1)","-webkit-transform":"translate3d(0,0,0)","-webkit-transition-duration":"0s",}},portrait:{".portrait .vertical-scroll":{position:"relative","z-index":1,overflow:"hidden",height:s,},".portrait .vertical-scroll.use-bottom-toolbar,.portrait .horizontal-scroll.use-bottom-toolbar":{height:o},".portrait .horizontal-scroll":{width:v},".portrait .slide-container":{height:s,width:v}},landscape:{".landscape .vertical-scroll":{position:"relative","z-index":1,overflow:"hidden",height:s,},".landscape .vertical-scroll.use-bottom-toolbar,.landscape .horizontal-scroll.use-bottom-toolbar":{height:o},".landscape .horizontal-scroll":{width:v},".landscape .slide-container":{height:s,width:v}}};if(g.jQTouch){g.jQTouch.addExtension(function(B){var C=n;function A(I,H){var F=C.vertical,G=C.horizontal,E=H.page.find(F.selector),D=H.page.find(G.selector);E.verticallyScroll(F.attributesToOptions(E,"vertical",F.attributes));D.horizontallyScroll(G.attributesToOptions(D,"horizontal",G.attributes))}g(u.body).bind("pageInserted",A);g(function(){var D=C.vertical,E=C.horizontal;g(D.selector).each(function(){g(this).verticallyScroll(D.attributesToOptions(g(this),"vertical",D.attributes))});g(E.selector).each(function(){g(this).horizontallyScroll(E.attributesToOptions(g(this),"horizontal",E.attributes))})});return{}})}function f(C,D,A){var B={};g.each(A,function(E,F){if(g.isFunction(F)){B[E]=F(C,D)}else{if(C.attr(F)!=i){B[E]=C.attr(F)}}});return B}g.fn.verticallyScroll=function(A){return this.inertiaScroll("vertical",A)};g.fn.horizontallyScroll=function(A){return this.inertiaScroll("horizontal",A)};g.fn.inertiaScroll=function(B,A){A=g.extend(true,{},n[B],A||{});return this.each(function(){q(this,A)})};g.inertiaScroll={defaults:function(A){if(A!==i){n=g.extend(true,n,A)}return g.extend({},n)},defaultCSS:function(A){if(A!==i){k=g.extend(true,k,A)}return g.extend({},k)}};function q(E,D){var A=g(E).data("jqt-scroll-options",D).css("webkitTransform",w(D.tranform,D.defaultOffset)),C=A.css("webkitTransform"),B=C?new WebKitCSSMatrix(C):{m41:0};g.each(D.events,function(F,G){E.addEventListener(F,G,false)});A.bind("reset",D.events.reset).bind("scrollTo",D.events.scrollTo);D.currentPosition=B[D.matrixProperty];D.parentWidth=A.parent()[D.dimension]();if(D.scrollBar&&D.scrollBar===true&&!D.scrollBarObject){D.scrollBarObject=g.isFunction(D.scrollBar)?D.scrollBar(A.parent(),D.direction):c(A.parent(),D.direction)}return null}function a(A){var E=g(this),J=E.data("jqt-scroll-options"),I=A.touches[0][J.eventProperty],G,C,D=E[J.outerDimension](),H=E.parent()[J.dimension](),F=-(D-H),B=H/J.divider;if(!!J.ignore&&g(A.target).is(J.ignore)||A.targetTouches.length!==J.numberOfTouches){return null}J.parentDimension=H;if(J.scrollTopOnTouchstart){l.scrollTo(0,0)}G=new WebKitCSSMatrix(E.css("webkitTransform"));C=G[J.matrixProperty];E.data("jqt-scroll-current-event",{startLocation:I,currentLocation:I,startPosition:C,lastPosition:C,currentPosition:C,startTime:A.timeStamp,moved:false,lastMoveTime:A.timeStamp,parentDimension:H,endPoint:F,minScroll:!J.bounce?0:B,maxScroll:!J.bounce?F:F-B,end:false});if(J.scrollBarObject){J.scrollBarObject.init(H,D)}J.setPosition(E,J,C,0);if(J.preventDefault){A.preventDefault();return false}else{return true}}function x(B){var G=g(this),I=G.data("jqt-scroll-options"),E=G.data("jqt-scroll-current-event"),C=E.lastMoveTime,F=B.touches[0][I.eventProperty],A=E.startLocation-F,H=E.startPosition-A,D=0;if(H>5){H=(H-5)/I.friction}else{if(H<E.endPoint){H=E.endPoint-((E.endPoint-H)/I.friction)}}E.currentPosition=E.lastPosition=m.floor(H);E.moved=true;E.lastMoveTime=B.timeStamp;E.currentLocation=F;if((E.lastMoveTime-C)>I.maxScrollTime){E.startTime=E.lastMoveTime}if(I.scrollBarObject&&!I.scrollBarObject.visible){I.scrollBarObject.show()}I.setPosition(G,I,E.currentPosition,D);if(I.preventDefault){B.preventDefault();return false}else{return true}}function e(B){var E=g(this),A=E.data("jqt-scroll-options"),C=E.data("jqt-scroll-current-event"),D,F;if(!C.moved){if(A.scrollBarObject){A.scrollBarObject.hide()}D=B.target;if(D.nodeType==3){D=D.parentNode}F=u.createEvent("MouseEvents");F.initEvent("click",true,true);D.dispatchEvent(F);if(A.preventDefault){B.preventDefault();return false}}if(A.useSlides&&g.isFunction(A.slides.callback)){A.slides.callback(E,A,C,B)}else{A.momentum(E,A,C,B)}A.setPosition(E,A,C.currentPosition,C.duration);if(A.preventDefault){B.preventDefault();return false}else{return true}}function j(B){var D=g(this),A=D.data("jqt-scroll-options"),C=D.data("jqt-scroll-current-event");if(C&&!C.end){if(C.currentPosition>0){C.currentPosition=0;A.setPosition(D,A,0,A.bounceSpeed)}else{if(C.currentPosition<C.endPoint){C.currentPosition=C.endPoint;A.setPosition(D,A,C.endPoint,A.bounceSpeed)}else{if(A.scrollBarObject){A.scrollBarObject.hide()}}}C.end=true}else{if(A.scrollBarObject){A.scrollBarObject.hide()}}return null}function p(C,B,E,D){var A=m;duration=A.min(B.maxScrollTime,E.lastMoveTime-E.startTime),distance=E.startPosition-E.currentPosition,velocity=A.abs(distance)/duration,acceleration=duration*velocity*B.friction,p=A.round(distance*velocity),position=A.round(E.currentPosition-p);if(E.currentPosition>0){position=0}else{if(E.currentPosition<E.endPoint){position=E.endPoint}else{if(position>E.minScroll){acceleration=acceleration*A.abs(E.minScroll/position);position=E.minScroll}else{if(position<E.maxScroll){acceleration=acceleration*A.abs(E.maxScroll/position);position=E.maxScroll}}}}E.momentum=A.abs(p);E.currentPosition=position;E.duration=acceleration;return null}function r(D,J,G,B){var C=D.find(J.slides.selector),I=C.filter("."+J.slides.currentClass).eq(0),H,A=G.startPosition-G.currentPosition,E=I[J.dimension]()/J.slides.portion,F;if(!I.length){I=C.eq(0)}H=C.index(I[0]);C.removeClass(J.slides.currentClass);if(G.currentPosition>0){position=0;C.eq(0).addClass(J.slides.currentClass)}else{if(G.currentPosition<G.endPoint){position=G.endPoint;C.eq(C.length-1).addClass(J.slides.currentClass)}else{if(A<-E){position=-C.eq(H>0?H-1:0).addClass(J.slides.currentClass).parent().attr(J.slideProperty)}else{if(A>E){position=-C.eq(H<C.length-1?H+1:C.length-1).addClass(J.slides.currentClass).parent().attr(J.slideProperty)}else{position=-I.addClass(J.slides.currentClass).parent().attr(J.slideProperty)}}}}F=m.abs(G.currentPosition-position)*J.slides.easing;G.momentum=F;G.currentPosition=position;G.duration=F;return null}function y(A,F,D){var H=g(this),G,L=H.data("jqt-scroll-options");F=F!==i?F:L.defaultOffset;if(L.useSlides&&g.isFunction(L.slides.callback)){var J,C,E=H[L.outerDimension](),K=H.parent()[L.dimension](),I=-(E-K),B=K/L.divider;L.parentDimension=K;J=new WebKitCSSMatrix(H.css("webkitTransform"));C=J[L.matrixProperty];G=H.data("jqt-scroll-current-event",{startLocation:0,currentLocation:0,startPosition:C,lastPosition:C,currentPosition:F,startTime:A&&A.timeStamp,moved:true,lastMoveTime:A&&A.timeStamp,parentDimension:K,endPoint:I,minScroll:!L.bounce?0:B,maxScroll:!L.bounce?I:I-B,end:true}).data("jqt-scroll-current-event");L.slides.callback(H,L,G,A)}else{G={currentPosition:F}}return L.setPosition(H,L,G.currentPosition,D||L.defaultDuration)}function b(B,E,D){var C=g(this),A=C.data("jqt-scroll-options");return A.setPosition(C,A,E!==i?E:(B.detail||A.currentPosition),D!==i?D:A.defaultDuration)}function d(C,B,A,F,D){if(B.scrollBarObject){var E=(C.parent()[B.dimension]()-C[B.dimension]());if(A>0){E+=z(A)}B.scrollBarObject.scrollTo(B.scrollBarObject.maxScroll/E*A,w("{0}ms",F!==i?F:B.defaultDuration))}if(F!==i){C.css("webkitTransitionDuration",w("{0}ms",F))}if(D!==i){C.css("webkitTransitionTimingFunction",D)}B.currentPosition=A||0;return C.css("webkitTransform",w(B.tranform,B.currentPosition))}function w(B){var A=arguments;return B.replace(/\{(\d+)\}/g,function(D,C){return A[z(C)+1]+""})}function c(A,B){if(!(this instanceof c)){return new c(A,B)}this.direction=B;this.bar=g(u.createElement("div")).addClass("scrollbar "+B).appendTo(A)[0]}c.prototype={direction:"vertical",transform:t?"translate3d({0}px,{1}px,0)":"translate({0}px,{1}px)",size:0,maxSize:0,maxScroll:0,visible:false,offset:0,init:function(A,B){this.offset=this.direction=="horizontal"?this.bar.offsetWidth-this.bar.clientWidth:this.bar.offsetHeight-this.bar.clientHeight;this.maxSize=A-8;this.size=m.round(this.maxSize*this.maxSize/B)+this.offset;this.maxScroll=this.maxSize-this.size;this.bar.style[this.direction=="horizontal"?"width":"height"]=(this.size-this.offset)+"px"},setPosition:function(A){this.bar.style.webkitTransform=w(this.transform,this.direction=="horizontal"?m.round(A):0,this.direction=="horizontal"?0:m.round(A))},scrollTo:function(B,A){this.bar.style.webkitTransitionDuration=(A||"400ms")+",300ms";this.setPosition(B)},show:function(){this.visible=true;this.bar.style.opacity="1"},hide:function(){this.visible=false;this.bar.style.opacity="0"},remove:function(){this.bar.parentNode.removeChild(this.bar);return null}};g(function(){l.scrollTo(0,0);var A="",D=k,C=l.innerHeight>l.innerWidth?"portrait":"landscape",E=function(F,G){A+=F+":"+(g.isFunction(G)?G(D.variables):G)+";"},B=function(F,G){A+=F+"{";g.each(G,E);A+="}"};g.each(D.defaults,B);g.each(D[C],B);g(u.createElement("style")).attr({type:"text/css",media:"screen"}).html(A).appendTo("head");g(l).one("orientationchange",function(){setTimeout(function(){l.scrollTo(0,0);A="";C=l.innerHeight>l.innerWidth?"portrait":"landscape";g.each(D[C],B);g(u.createElement("style")).attr({type:"text/css",media:"screen"}).html(A).appendTo("head")},30)})})})(jQuery);
Note: See TracBrowser for help on using the repository browser.