mirror of
https://github.com/blasten/turn.js.git
synced 2025-09-16 16:40:10 +08:00
- Removed the page peel effect on hover. - Disabled page turn interaction when clicking on page corners. - These changes improve navigation when using arrow keys or buttons to turn pages.
1 line
23 KiB
JavaScript
1 line
23 KiB
JavaScript
!function(t){"use strict";var a,e="",r=Math.PI,i=r/2,s="ontouchstart"in window,n=s?{start:"touchstart",move:"touchmove",end:"touchend"}:{start:"mousedown",move:"mousemove",end:"mouseup"},o={backward:["bl","tl"],forward:["br","tr"],all:["tl","bl","tr","br"]},p=["single","double"],h={page:1,gradients:!0,duration:600,acceleration:!0,display:"double",when:null},l={folding:null,corners:"forward",cornerSize:100,gradients:!0,duration:600,acceleration:!0},g={0:{top:0,left:0,right:"auto",bottom:"auto"},1:{top:0,right:0,left:"auto",bottom:"auto"}},d=function(t,a,e,r){return{css:{position:"absolute",top:t,left:a,overflow:r||"hidden","z-index":e||"auto"}}},f=function(t,a,e,r,i){var s=1-i,n=s*s*s,o=i*i*i;return c(Math.round(n*t.x+3*i*s*s*a.x+3*i*i*s*e.x+o*r.x),Math.round(n*t.y+3*i*s*s*a.y+3*i*i*s*e.y+o*r.y))},c=function(t,a){return{x:t,y:a}},u=function(t,e,r){return a&&r?" translate3d("+t+"px,"+e+"px, 0px) ":" translate("+t+"px, "+e+"px) "},v=function(t){return" rotate("+t+"deg) "},w=function(t,a){return Object.prototype.hasOwnProperty.call(a,t)},b=function(t,a,r,i,s){var n,o=[];if("-webkit-"==e){for(n=0;n<s;n++)o.push("color-stop("+i[n][0]+", "+i[n][1]+")");t.css({"background-image":"-webkit-gradient(linear, "+a.x+"% "+a.y+"%, "+r.x+"% "+r.y+"%, "+o.join(",")+" )"})}else{a={x:a.x/100*t.width(),y:a.y/100*t.height()};var p=(r={x:r.x/100*t.width(),y:r.y/100*t.height()}).x-a.x,h=r.y-a.y,l=Math.atan2(h,p),g=l-Math.PI/2,d=Math.abs(t.width()*Math.sin(g))+Math.abs(t.height()*Math.cos(g)),f=Math.sqrt(h*h+p*p),u=c(r.x<a.x?t.width():0,r.y<a.y?t.height():0),v=Math.tan(l),w=-1/v,b=(w*u.x-u.y-v*a.x+a.y)/(w-v),x={x:b,y:w*b-w*u.x+u.y},m=Math.sqrt(Math.pow(x.x-a.x,2)+Math.pow(x.y-a.y,2));for(n=0;n<s;n++)o.push(" "+i[n][1]+" "+100*(m+f*i[n][0])/d+"%");t.css({"background-image":e+"linear-gradient("+-l+"rad,"+o.join(",")+")"})}},x={init:function(r){void 0===a&&(a="WebKitCSSMatrix"in window||"MozPerspective"in document.body.style,e=function(){for(var t=["Moz","Webkit","Khtml","O","ms"],a=t.length,e="";a--;)t[a]+"Transform"in document.body.style&&(e="-"+t[a].toLowerCase()+"-");return e}());var i,p=this.data(),l=this.children();if(r=t.extend({width:this.width(),height:this.height()},h,r),p.opts=r,p.pageObjs={},p.pages={},p.pageWrap={},p.pagePlace={},p.pageMv=[],p.totalPages=r.pages||0,r.when)for(i in r.when)w(i,r.when)&&this.bind(i,r.when[i]);for(this.css({position:"relative",width:r.width,height:r.height}),this.turn("display",r.display),a&&!s&&r.acceleration&&this.transform(u(0,0,!0)),i=0;i<l.length;i++)this.turn("addPage",l[i],i+1);return this.turn("page",r.page),o=t.extend({},o,r.corners),t(this).bind(n.start,(function(t){for(var a in p.pages)if(w(a,p.pages)&&!1===m._eventStart.call(p.pages[a],t))return!1})),t(document).bind(n.move,(function(t){for(var a in p.pages)w(a,p.pages)&&m._eventMove.call(p.pages[a],t)})).bind(n.end,(function(t){for(var a in p.pages)w(a,p.pages)&&m._eventEnd.call(p.pages[a],t)})),p.done=!0,this},addPage:function(a,e){var r=!1,i=this.data(),s=i.totalPages+1;if(e){if(e==s)e=s,r=!0;else if(e>s)throw new Error('It is impossible to add the page "'+e+'", the maximum value is: "'+s+'"')}else e=s,r=!0;return e>=1&&e<=s&&(i.done&&this.turn("stop"),e in i.pageObjs&&x._movePages.call(this,e,1),r&&(i.totalPages=s),i.pageObjs[e]=t(a).addClass("turn-page p"+e),x._addPage.call(this,e),i.done&&this.turn("update"),x._removeFromDOM.call(this)),this},_addPage:function(a){var e=this.data(),r=e.pageObjs[a];if(r)if(x._necessPage.call(this,a)){if(!e.pageWrap[a]){var i="double"==e.display?this.width()/2:this.width(),s=this.height();r.css({width:i,height:s}),e.pagePlace[a]=a,e.pageWrap[a]=t("<div/>",{class:"turn-page-wrapper",page:a,css:{position:"absolute",overflow:"hidden",width:i,height:s}}).css(g["double"==e.display?a%2:0]),this.append(e.pageWrap[a]),e.pageWrap[a].prepend(e.pageObjs[a])}a&&1!=x._setPageLoc.call(this,a)||x._makeFlip.call(this,a)}else e.pagePlace[a]=0,e.pageObjs[a]&&e.pageObjs[a].remove()},hasPage:function(t){return t in this.data().pageObjs},_makeFlip:function(t){var a=this.data();if(!a.pages[t]&&a.pagePlace[t]==t){var e="single"==a.display,r=t%2;a.pages[t]=a.pageObjs[t].css({width:e?this.width():this.width()/2,height:this.height()}).flip({page:t,next:e&&t===a.totalPages?t-1:r||e?t+1:t-1,turn:this,duration:a.opts.duration,acceleration:a.opts.acceleration,corners:e?"all":r?"forward":"backward",backGradient:a.opts.gradients,frontGradient:a.opts.gradients}).flip("disable",a.disabled).bind("pressed",x._pressed).bind("released",x._released).bind("start",x._start).bind("end",x._end).bind("flip",x._flip)}return a.pages[t]},_makeRange:function(){this.data();var t,a=this.turn("range");for(t=a[0];t<=a[1];t++)x._addPage.call(this,t)},range:function(t){var a,e,r,i=this.data();t=t||i.tpage||i.page;var s=x._view.call(this,t);if(t<1||t>i.totalPages)throw new Error('"'+t+'" is not a page for range');return s[1]=s[1]||s[0],s[0]>=1&&s[1]<=i.totalPages?(a=Math.floor(2),i.totalPages-s[1]>s[0]?r=2*a-(e=Math.min(s[0]-1,a)):e=2*a-(r=Math.min(i.totalPages-s[1],a))):(e=5,r=5),[Math.max(1,s[0]-e),Math.min(i.totalPages,s[1]+r)]},_necessPage:function(t){if(0===t)return!0;var a=this.turn("range");return t>=a[0]&&t<=a[1]},_removeFromDOM:function(){var t,a=this.data();for(t in a.pageWrap)w(t,a.pageWrap)&&!x._necessPage.call(this,t)&&x._removePageFromDOM.call(this,t)},_removePageFromDOM:function(t){var a=this.data();if(a.pages[t]){var e=a.pages[t].data();e.f&&e.f.fwrapper&&e.f.fwrapper.remove(),a.pages[t].remove(),delete a.pages[t]}a.pageObjs[t]&&a.pageObjs[t].remove(),a.pageWrap[t]&&(a.pageWrap[t].remove(),delete a.pageWrap[t]),delete a.pagePlace[t]},removePage:function(t){var a=this.data();return a.pageObjs[t]&&(this.turn("stop"),x._removePageFromDOM.call(this,t),delete a.pageObjs[t],x._movePages.call(this,t,-1),a.totalPages=a.totalPages-1,x._makeRange.call(this),a.page>a.totalPages&&this.turn("page",a.totalPages)),this},_movePages:function(t,a){var e,r=this.data(),i="single"==r.display,s=function(t){var e=t+a,s=e%2;r.pageObjs[t]&&(r.pageObjs[e]=r.pageObjs[t].removeClass("page"+t).addClass("page"+e)),r.pagePlace[t]&&r.pageWrap[t]&&(r.pagePlace[e]=e,r.pageWrap[e]=r.pageWrap[t].css(g[i?0:s]).attr("page",e),r.pages[t]&&(r.pages[e]=r.pages[t].flip("options",{page:e,next:i||s?e+1:e-1,corners:i?"all":s?"forward":"backward"})),a&&(delete r.pages[t],delete r.pagePlace[t],delete r.pageObjs[t],delete r.pageWrap[t],delete r.pageObjs[t]))};if(a>0)for(e=r.totalPages;e>=t;e--)s(e);else for(e=t;e<=r.totalPages;e++)s(e)},display:function(a){var e=this.data(),r=e.display;if(a){if(-1==t.inArray(a,p))throw new Error('"'+a+'" is not a value for display');if("single"==a?e.pageObjs[0]||(this.turn("stop").css({overflow:"hidden"}),e.pageObjs[0]=t("<div />",{class:"turn-page p-temporal"}).css({width:this.width(),height:this.height()}).appendTo(this)):e.pageObjs[0]&&(this.turn("stop").css({overflow:""}),e.pageObjs[0].remove(),delete e.pageObjs[0]),e.display=a,r){var i=this.turn("size");x._movePages.call(this,1,0),this.turn("size",i.width,i.height).turn("update")}return this}return r},animating:function(){return this.data().pageMv.length>0},disable:function(a){var e,r=this.data(),i=this.turn("view");for(e in r.disabled=void 0===a||!0===a,r.pages)w(e,r.pages)&&r.pages[e].flip("disable",!!a&&t.inArray(e,i));return this},size:function(t,a){if(t&&a){var e,r=this.data(),i="double"==r.display?t/2:t;for(e in this.css({width:t,height:a}),r.pageObjs[0]&&r.pageObjs[0].css({width:i,height:a}),r.pageWrap)w(e,r.pageWrap)&&(r.pageObjs[e].css({width:i,height:a}),r.pageWrap[e].css({width:i,height:a}),r.pages[e]&&r.pages[e].css({width:i,height:a}));return this.turn("resize"),this}return{width:this.width(),height:this.height()}},resize:function(){var t,a=this.data();for(a.pages[0]&&(a.pageWrap[0].css({left:-this.width()}),a.pages[0].flip("resize",!0)),t=1;t<=a.totalPages;t++)a.pages[t]&&a.pages[t].flip("resize",!0)},_removeMv:function(t){var a,e=this.data();for(a=0;a<e.pageMv.length;a++)if(e.pageMv[a]==t)return e.pageMv.splice(a,1),!0;return!1},_addMv:function(t){var a=this.data();x._removeMv.call(this,t),a.pageMv.push(t)},_view:function(t){var a=this.data();return t=t||a.page,"double"==a.display?t%2?[t-1,t]:[t,t+1]:[t]},view:function(t){var a=this.data(),e=x._view.call(this,t);return"double"==a.display?[e[0]>0?e[0]:0,e[1]<=a.totalPages?e[1]:0]:[e[0]>0&&e[0]<=a.totalPages?e[0]:0]},stop:function(t){var a,e,r=this.data(),i=r.pageMv;for(a in r.pageMv=[],r.tpage&&(r.page=r.tpage,delete r.tpage),i)w(a,i)&&(e=r.pages[i[a]].data().f.opts,m._moveFoldingPage.call(r.pages[i[a]],null),r.pages[i[a]].flip("hideFoldedPage"),r.pagePlace[e.next]=e.next,e.force&&(e.next=e.page%2==0?e.page-1:e.page+1,delete e.force));return this.turn("update"),this},pages:function(t){var a=this.data();if(t){if(t<a.totalPages){for(var e=t+1;e<=a.totalPages;e++)this.turn("removePage",e);this.turn("page")>t&&this.turn("page",t)}return a.totalPages=t,this}return a.totalPages},_fitPage:function(a,e){var r=this.data(),i=this.turn("view",a);r.page!=a&&(this.trigger("turning",[a,i]),-1!=t.inArray(1,i)&&this.trigger("first"),-1!=t.inArray(r.totalPages,i)&&this.trigger("last")),r.pageObjs[a]&&(r.tpage=a,this.turn("stop",e),x._removeFromDOM.call(this),x._makeRange.call(this),this.trigger("turned",[a,i]))},_turnPage:function(a){var e,r,i=this.data(),s=this.turn("view"),n=this.turn("view",a);if(i.page!=a&&(this.trigger("turning",[a,n]),-1!=t.inArray(1,n)&&this.trigger("first"),-1!=t.inArray(i.totalPages,n)&&this.trigger("last")),i.pageObjs[a]&&(i.tpage=a,this.turn("stop"),x._makeRange.call(this),"single"==i.display?(e=s[0],r=n[0]):s[1]&&a>s[1]?(e=s[1],r=n[0]):s[0]&&a<s[0]&&(e=s[0],r=n[1]),i.pages[e])){var o=i.pages[e].data().f.opts;i.tpage=r,o.next!=r&&(o.next=r,i.pagePlace[r]=o.page,o.force=!0),"single"==i.display?i.pages[e].flip("turnPage",n[0]>s[0]?"br":"bl"):i.pages[e].flip("turnPage")}},page:function(a){a=parseInt(a,10);var e=this.data();return a>0&&a<=e.totalPages?(e.done&&-1==t.inArray(a,this.turn("view"))?x._turnPage.call(this,a):x._fitPage.call(this,a),this):e.page},next:function(){var t=this.data();return this.turn("page",x._view.call(this,t.page).pop()+1)},previous:function(){var t=this.data();return this.turn("page",x._view.call(this,t.page).shift()-1)},_addMotionPage:function(){var a=t(this).data().f.opts,e=a.turn,r=e.data();a.pageMv=a.page,x._addMv.call(e,a.pageMv),r.pagePlace[a.next]=a.page,e.turn("update")},_start:function(a,e,r){var i=e.turn.data(),s=t.Event("start");if(a.stopPropagation(),e.turn.trigger(s,[e,r]),s.isDefaultPrevented())a.preventDefault();else{if("single"==i.display){var n="l"==r.charAt(1);1==e.page&&n||e.page==i.totalPages&&!n?a.preventDefault():n?(e.next=e.next<e.page?e.next:e.page-1,e.force=!0):e.next=e.next>e.page?e.next:e.page+1}x._addMotionPage.call(this)}},_end:function(a,e){var r=t(this).data().f.opts,i=r.turn,s=i.data();a.stopPropagation(),e||s.tpage?s.tpage!=r.next&&s.tpage!=r.page||(delete s.tpage,x._fitPage.call(i,s.tpage||r.next,!0)):(x._removeMv.call(i,r.pageMv),i.turn("update"))},_pressed:function(){var a,e=t(this).data().f,r=e.opts.turn.data().pages;for(a in r)a!=e.opts.page&&r[a].flip("disable",!0);return e.time=(new Date).getTime()},_released:function(a,e){var r=t(this),i=r.data().f;a.stopPropagation(),((new Date).getTime()-i.time<200||e.x<0||e.x>t(this).width())&&(a.preventDefault(),i.opts.turn.data().tpage=i.opts.next,i.opts.turn.turn("update"),t(r).flip("turnPage"))},_flip:function(){var a=t(this).data().f.opts;a.turn.trigger("turn",[a.next])},calculateZ:function(t){var a,e,r,i,s,n=this,o=this.data(),p=this.turn("view"),h=p[0]||p[1],l={pageZ:{},partZ:{},pageV:{}},g=function(t){var a=n.turn("view",t);a[0]&&(l.pageV[a[0]]=!0),a[1]&&(l.pageV[a[1]]=!0)};for(a=0;a<t.length;a++)e=t[a],r=o.pages[e].data().f.opts.next,i=o.pagePlace[e],g(e),g(r),s=o.pagePlace[r]==r?r:e,l.pageZ[s]=o.totalPages-Math.abs(h-s),l.partZ[i]=2*o.totalPages+Math.abs(h-s);return l},update:function(){var t,a=this.data();if(a.pageMv.length&&0!==a.pageMv[0]){var e=this.turn("calculateZ",a.pageMv),r=this.turn("view",a.tpage);for(t in a.pagePlace[r[0]]==r[0]?r[0]:a.pagePlace[r[1]]==r[1]&&r[1],a.pageWrap)w(t,a.pageWrap)&&(a.pageWrap[t].css({display:e.pageV[t]?"":"none","z-index":e.pageZ[t]||0}),a.pages[t]&&(a.pages[t].flip("z",e.partZ[t]||null),e.pageV[t]&&a.pages[t].flip("resize"),a.tpage&&a.pages[t].flip("disable",!0)))}else for(t in a.pageWrap)if(w(t,a.pageWrap)){var i=x._setPageLoc.call(this,t);a.pages[t]&&a.pages[t].flip("disable",a.disabled||1!=i).flip("z",null)}},_setPageLoc:function(t){var a=this.data(),e=this.turn("view");return t==e[0]||t==e[1]?(a.pageWrap[t].css({"z-index":a.totalPages,display:""}),1):"single"==a.display&&t==e[0]+1||"double"==a.display&&t==e[0]-2||t==e[1]+2?(a.pageWrap[t].css({"z-index":a.totalPages-1,display:""}),2):(a.pageWrap[t].css({"z-index":0,display:"none"}),0)}},m={init:function(t){return t.gradients&&(t.frontGradient=!0,t.backGradient=!0),this.data({f:{}}),this.flip("options",t),m._addPageWrapper.call(this),this},setData:function(a){var e=this.data();return e.f=t.extend(e.f,a),this},options:function(a){var e=this.data().f;return a?(m.setData.call(this,{opts:t.extend({},e.opts||l,a)}),this):e.opts},z:function(t){var a=this.data().f;return a.opts["z-index"]=t,a.fwrapper.css({"z-index":t||parseInt(a.parent.css("z-index"),10)||0}),this},_cAllowed:function(){return o[this.data().f.opts.corners]||this.data().f.opts.corners},_cornerActivated:function(a){if(void 0===a.originalEvent)return!1;a=s?a.originalEvent.touches:[a];var e=this.data().f,r=e.parent.offset(),i=this.width(),n=this.height(),o={x:Math.max(0,a[0].pageX-r.left),y:Math.max(0,a[0].pageY-r.top)},p=e.opts.cornerSize,h=m._cAllowed.call(this);if(o.x<=0||o.y<=0||o.x>=i||o.y>=n)return!1;if(o.y<p)o.corner="t";else{if(!(o.y>=n-p))return!1;o.corner="b"}if(o.x<=p)o.corner+="l";else{if(!(o.x>=i-p))return!1;o.corner+="r"}return-1!=t.inArray(o.corner,h)&&o},_c:function(t,a){return{tl:c(a=a||0,a),tr:c(this.width()-a,a),bl:c(a,this.height()-a),br:c(this.width()-a,this.height()-a)}[t]},_c2:function(t){return{tl:c(2*this.width(),0),tr:c(-this.width(),0),bl:c(2*this.width(),this.height()),br:c(-this.width(),this.height())}[t]},_foldingPage:function(t){var a=this.data().f.opts;if(a.folding)return a.folding;if(a.turn){var e=a.turn.data();return"single"==e.display?e.pageObjs[a.next]?e.pageObjs[0]:null:e.pageObjs[a.next]}},_backGradient:function(){var a=this.data().f,e=a.opts.turn,r=a.opts.backGradient&&(!e||"single"==e.data().display||2!=a.opts.page&&a.opts.page!=e.data().totalPages-1);return r&&!a.bshadow&&(a.bshadow=t("<div/>",d(0,0,1)).css({position:"",width:this.width(),height:this.height()}).appendTo(a.parent)),r},resize:function(t){var a=this.data().f,e=this.width(),r=this.height(),i=Math.round(Math.sqrt(Math.pow(e,2)+Math.pow(r,2)));t&&(a.wrapper.css({width:i,height:i}),a.fwrapper.css({width:i,height:i}).children(":first-child").css({width:e,height:r}),a.fpage.css({width:r,height:e}),a.opts.frontGradient&&a.ashadow.css({width:r,height:e}),m._backGradient.call(this)&&a.bshadow.css({width:e,height:r})),a.parent.is(":visible")&&(a.fwrapper.css({top:a.parent.offset().top,left:a.parent.offset().left}),a.opts.turn&&a.fparent.css({top:-a.opts.turn.offset().top,left:-a.opts.turn.offset().left})),this.flip("z",a.opts["z-index"])},_addPageWrapper:function(){var a=this.data().f,e=this.parent();if(!a.wrapper){this.css("left"),this.css("top");var r=this.width(),i=this.height();Math.round(Math.sqrt(Math.pow(r,2)+Math.pow(i,2)));if(a.parent=e,a.fparent=a.opts.turn?a.opts.turn.data().fparent:t("#turn-fwrappers"),!a.fparent){var s=t("<div/>",{css:{"pointer-events":"none"}}).hide();s.data().flips=0,a.opts.turn?(s.css(d(-a.opts.turn.offset().top,-a.opts.turn.offset().left,"auto","visible").css).appendTo(a.opts.turn),a.opts.turn.data().fparent=s):s.css(d(0,0,"auto","visible").css).attr("id","turn-fwrappers").appendTo(t("body")),a.fparent=s}this.css({position:"absolute",top:0,left:0,bottom:"auto",right:"auto"}),a.wrapper=t("<div/>",d(0,0,this.css("z-index"))).appendTo(e).prepend(this),a.fwrapper=t("<div/>",d(e.offset().top,e.offset().left)).hide().appendTo(a.fparent),a.fpage=t("<div/>",{css:{cursor:"default"}}).appendTo(t("<div/>",d(0,0,0,"visible")).appendTo(a.fwrapper)),a.opts.frontGradient&&(a.ashadow=t("<div/>",d(0,0,1)).appendTo(a.fpage)),m.setData.call(this,a),m.resize.call(this,!0)}},_fold:function(t){var a,e,s,n,o,p,h=this,l=0,g=0,d=c(0,0),f=c(0,0),w=c(0,0),x=this.width(),y=this.height(),M=m._foldingPage.call(this),P=(Math.tan(g),this.data().f),_=P.opts.acceleration,O=P.wrapper.height(),j=m._c.call(this,t.corner),W="t"==t.corner.substr(0,1),z="l"==t.corner.substr(1,1),k=function(){var u,v=c(j.x?j.x-t.x:t.x,j.y?j.y-t.y:t.y),b=Math.atan2(v.y,v.x);l=(g=i-b)/r*180,u=c(z?x-v.x/2:t.x+v.x/2,v.y/2);var M=g-Math.atan2(u.y,u.x),_=Math.max(0,Math.sin(M)*Math.sqrt(Math.pow(u.x,2)+Math.pow(u.y,2)));if(w=c(_*Math.sin(g),_*Math.cos(g)),g>i&&(w.x=w.x+Math.abs(w.y*Math.tan(b)),w.y=0,Math.round(w.x*Math.tan(r-g))<y))return t.y=Math.sqrt(Math.pow(y,2)+2*u.x*v.x),W&&(t.y=y-t.y),k();if(g>i){var D=r-g,F=O-y/Math.sin(D);d=c(Math.round(F*Math.cos(D)),Math.round(F*Math.sin(D))),z&&(d.x=-d.x),W&&(d.y=-d.y)}a=Math.round(w.y/Math.tan(g)+w.x);var A=x-a,T=A*Math.cos(2*g),G=A*Math.sin(2*g);f=c(Math.round(z?A-T:a+T),Math.round(W?G:y-G)),o=A*Math.sin(g);var E=m._c2.call(h,t.corner),q=Math.sqrt(Math.pow(E.x-t.x,2)+Math.pow(E.y-t.y,2));return p=q<x?q/x:1,P.opts.frontGradient&&(n=o>100?(o-100)/o:0,e=c(o*Math.sin(i-g)/y*100,o*Math.cos(i-g)/x*100),W&&(e.y=100-e.y),z&&(e.x=100-e.x)),m._backGradient.call(h)&&(s=c(o*Math.sin(g)/x*100,o*Math.cos(g)/y*100),z||(s.x=100-s.x),W||(s.y=100-s.y)),w.x=Math.round(w.x),w.y=Math.round(w.y),!0},D=function(t,a,r,i){var o=["0","auto"],l=(x-O)*r[0]/100,g=(y-O)*r[1]/100,w={left:o[a[0]],top:o[a[1]],right:o[a[2]],bottom:o[a[3]]},M=90!=i&&-90!=i?z?-1:1:0;r=r[0]+"% "+r[1]+"%",h.css(w).transform(v(i)+u(t.x+M,t.y,_),r),P.fpage.parent().css(w),P.wrapper.transform(u(-t.x+l-M,-t.y+g,_)+v(-i),r),P.fwrapper.transform(u(-t.x+d.x+l,-t.y+d.y+g,_)+v(-i),r),P.fpage.parent().transform(v(i)+u(t.x+f.x-d.x,t.y+f.y-d.y,_),r),P.opts.frontGradient&&b(P.ashadow,c(z?100:0,W?100:0),c(e.x,e.y),[[n,"rgba(0,0,0,0)"],[.8*(1-n)+n,"rgba(0,0,0,"+.2*p+")"],[1,"rgba(255,255,255,"+.2*p+")"]],3),m._backGradient.call(h)&&b(P.bshadow,c(z?0:100,W?0:100),c(s.x,s.y),[[.8,"rgba(0,0,0,0)"],[1,"rgba(0,0,0,"+.3*p+")"],[1,"rgba(0,0,0,0)"]],3)};switch(t.corner){case"tl":t.x=Math.max(t.x,1),k(),D(w,[1,0,0,1],[100,0],l),P.fpage.transform(u(-y,-x,_)+v(90-2*l),"100% 100%"),M.transform(v(90)+u(0,-y,_),"0% 0%");break;case"tr":t.x=Math.min(t.x,x-1),k(),D(c(-w.x,w.y),[0,0,0,1],[0,0],-l),P.fpage.transform(u(0,-x,_)+v(2*l-90),"0% 100%"),M.transform(v(270)+u(-x,0,_),"0% 0%");break;case"bl":t.x=Math.max(t.x,1),k(),D(c(w.x,-w.y),[1,1,0,0],[100,100],-l),P.fpage.transform(u(-y,0,_)+v(2*l-90),"100% 0%"),M.transform(v(270)+u(-x,0,_),"0% 0%");break;case"br":t.x=Math.min(t.x,x-1),k(),D(c(-w.x,-w.y),[0,1,1,0],[0,100],l),P.fpage.transform(v(90-2*l),"0% 0%"),M.transform(v(90)+u(0,-y,_),"0% 0%")}P.point=t},_moveFoldingPage:function(t){var a=this.data().f,e=m._foldingPage.call(this);e&&(t?a.fpage.children()[a.ashadow?"1":"0"]||(m.setData.call(this,{backParent:e.parent()}),a.fpage.prepend(e)):a.backParent&&a.backParent.prepend(e))},_showFoldedPage:function(a,e){var r=m._foldingPage.call(this),i=this.data(),s=i.f;if(!s.point||s.point.corner!=a.corner){var n=t.Event("start");if(this.trigger(n,[s.opts,a.corner]),n.isDefaultPrevented())return!1}if(r){if(e){var o=this,p=s.point&&s.point.corner==a.corner?s.point:m._c.call(this,a.corner,1);this.animatef({from:[p.x,p.y],to:[a.x,a.y],duration:500,frame:function(t){a.x=Math.round(t[0]),a.y=Math.round(t[1]),m._fold.call(o,a)}})}else m._fold.call(this,a),i.effect&&!i.effect.turning&&this.animatef(!1);return s.fwrapper.is(":visible")||(s.fparent.show().data().flips++,m._moveFoldingPage.call(this,!0),s.fwrapper.show(),s.bshadow&&s.bshadow.show()),!0}return!1},hide:function(){var t=this.data().f,a=m._foldingPage.call(this);return 0==--t.fparent.data().flips&&t.fparent.hide(),this.css({left:0,top:0,right:"auto",bottom:"auto"}).transform("","0% 100%"),t.wrapper.transform("","0% 100%"),t.fwrapper.hide(),t.bshadow&&t.bshadow.hide(),a.transform("","0% 0%"),this},hideFoldedPage:function(t){var a=this.data().f;if(a.point){var e=this,r=a.point,i=function(){a.point=null,e.flip("hide"),e.trigger("end",[!1])};if(t){var s=m._c.call(this,r.corner),n="t"==r.corner.substr(0,1)?Math.min(0,r.y-s.y)/2:Math.max(0,r.y-s.y)/2,o=c(r.x,r.y+n),p=c(s.x,s.y-n);this.animatef({from:0,to:1,frame:function(t){var a=f(r,o,p,s,t);r.x=a.x,r.y=a.y,m._fold.call(e,r)},complete:i,duration:800,hiding:!0})}else this.animatef(!1),i()}},turnPage:function(t){var a=this,e=this.data().f;t={corner:e.corner?e.corner.corner:t||m._cAllowed.call(this)[0]};var r=e.point||m._c.call(this,t.corner,e.opts.turn?e.opts.turn.data().opts.elevation:0),i=m._c2.call(this,t.corner);this.trigger("flip").animatef({from:0,to:1,frame:function(e){var s=f(r,r,i,i,e);t.x=s.x,t.y=s.y,m._showFoldedPage.call(a,t)},complete:function(){a.trigger("end",[!0])},duration:e.opts.duration,turning:!0}),e.corner=null},moving:function(){return"effect"in this.data()},isTurning:function(){return this.flip("moving")&&this.data().effect.turning},_eventStart:function(t){var a=this.data().f;if(!a.disabled&&!this.flip("isTurning")){if(a.corner=m._cornerActivated.call(this,t),a.corner&&m._foldingPage.call(this,a.corner))return m._moveFoldingPage.call(this,!0),this.trigger("pressed",[a.point]),!1;a.corner=null}},_eventMove:function(t){var a=this.data().f;if(!a.disabled&&(t=s?t.originalEvent.touches:[t],a.corner)){var e=a.parent.offset();a.corner.x=t[0].pageX-e.left,a.corner.y=t[0].pageY-e.top,m._showFoldedPage.call(this,a.corner)}},_eventEnd:function(){var a=this.data().f;if(!a.disabled&&a.point){var e=t.Event("released");this.trigger(e,[a.point]),e.isDefaultPrevented()||m.hideFoldedPage.call(this,!0)}a.corner=null},disable:function(t){return m.setData.call(this,{disabled:t}),this}},y=function(t,a,e){if(e[0]&&"object"!=typeof e[0]){if(a[e[0]]&&"_"!=e[0].toString().substr(0,1))return a[e[0]].apply(t,Array.prototype.slice.call(e,1));throw e[0]+" is an invalid value"}return a.init.apply(t,e)};t.extend(t.fn,{flip:function(t,a){return y(this,m,arguments)},turn:function(t){return y(this,x,arguments)},transform:function(t,a){var r={};return a&&(r[e+"transform-origin"]=a),r[e+"transform"]=t,this.css(r)},animatef:function(t){var a=this.data();if(a.effect&&clearInterval(a.effect.handle),t){t.to.length||(t.to=[t.to]),t.from.length||(t.from=[t.from]),t.easing||(t.easing=function(t,a,e,r,i){return r*Math.sqrt(1-(a=a/i-1)*a)+e});var e,r=[],i=t.to.length,s=this,n=t.fps||30,o=-n,p=function(){var e,p=[];for(o=Math.min(t.duration,o+n),e=0;e<i;e++)p.push(t.easing(1,o,t.from[e],r[e],t.duration));t.frame(1==i?p[0]:p),o==t.duration&&(clearInterval(a.effect.handle),delete a.effect,s.data(a),t.complete&&t.complete())};for(e=0;e<i;e++)r.push(t.to[e]-t.from[e]);a.effect=t,a.effect.handle=setInterval(p,n),this.data(a),p()}else delete a.effect}}),t.isTouch=s}(jQuery); |