turn.js/turn.min.js
2026-06-09 00:16:59 +02:00

1 line
27 KiB
JavaScript

!function(t){"use strict";var e,a="",r=Math.PI,n=r/2,i="PointerEvent"in window,s="ontouchstart"in window,o=!i&&s,p=i?{start:"pointerdown",move:"pointermove",end:"pointerup pointercancel"}:o?{start:"touchstart",move:"touchmove",end:"touchend"}:{start:"mousedown",move:"mousemove",end:"mouseup"},l=window.performance&&window.performance.now?function(){return window.performance.now()}:function(){return(new Date).getTime()},h=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return window.setTimeout(function(){t(l())},16)},d=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){window.clearTimeout(t)},g=".turn",f=".turnFlip",u={backward:["bl","tl"],forward:["br","tr"],all:["tl","bl","tr","br"]},c=["single","double"],v={page:1,gradients:!0,duration:600,acceleration:!0,display:"double",when:null},y={folding:null,corners:"forward",cornerSize:100,gradients:!0,duration:600,acceleration:!0},w={0:{top:0,left:0,right:"auto",bottom:"auto"},1:{top:0,right:0,left:"auto",bottom:"auto"}},m="turn-js-base-css",b=[".turn-page{position:absolute;}",".turn-page-wrapper,.turn-flip-wrapper,.turn-fold-wrapper,.turn-shadow{position:absolute;overflow:hidden;}",".turn-fold-parent{position:absolute;overflow:visible;pointer-events:none;}",".turn-fold-inner{position:absolute;overflow:visible;}",".turn-fold-page{cursor:default;}",".turn-back-shadow{overflow:hidden;}"].join(""),P=function(){document.getElementById(m)||t("<style/>",{id:m,type:"text/css"}).text(b).appendTo(document.head||document.documentElement)},_=function(t,e,a){return{css:{top:t,left:e,"z-index":a||"auto"}}},x=function(t,e,a,r,n){var i=1-n,s=i*i*i,o=n*n*n;return O(Math.round(s*t.x+3*n*i*i*e.x+3*n*n*i*a.x+o*r.x),Math.round(s*t.y+3*n*i*i*e.y+3*n*n*i*a.y+o*r.y))},M=function(t){return t/r*180},O=function(t,e){return{x:t,y:e}},W=function(t,a,r){return e&&r?" translate3d("+t+"px,"+a+"px, 0px) ":" translate("+t+"px, "+a+"px) "},S=function(t){return" rotate("+t+"deg) "},j=function(t,e){return Object.prototype.hasOwnProperty.call(e,t)},F=function(e,a){return t.map(e.split(" "),function(t){return t+a}).join(" ")},z=function(t,e,a){return t=parseFloat(t),Math.max(e,Math.min(a,isNaN(t)?e:t))},T=function(t){return t.data()},k=function(t){return t.data().f},A={createWrapper:function(e,a,r){return t("<div/>",t.extend({class:e},a||{})).css(r||{})},applyStyles:function(t,e){return t.css(e)},removeNode:function(t){t&&t.remove()},append:function(t,e){return t.append(e)},prepend:function(t,e){return t.prepend(e)},transformProperties:function(t,e){var r={};return e&&(a&&(r[a+"transform-origin"]=e),r["transform-origin"]=e),a&&(r[a+"transform"]=t),r.transform=t,r},applyTransform:function(t,e,a){return A.applyStyles(t,A.transformProperties(e,a))}},D=function(t){var e,a,i,s,o,p,l=0,h=0,d=O(0,0),g=O(0,0),f=O(0,0),u=t.width,c=t.height,v=t.wrapperHeight,y=t.origin,w=O(t.point.x,t.point.y),m="t"==t.point.corner.substr(0,1),b="l"==t.point.corner.substr(1,1);w.corner=t.point.corner,w.x=b?Math.max(w.x,1):Math.min(w.x,u-1);var P=function(){var _,x=O(y.x?y.x-w.x:w.x,y.y?y.y-w.y:w.y),W=Math.atan2(x.y,x.x);h=M(l=n-W),_=O(b?u-x.x/2:w.x+x.x/2,x.y/2);var S=l-Math.atan2(_.y,_.x),j=Math.max(0,Math.sin(S)*Math.sqrt(Math.pow(_.x,2)+Math.pow(_.y,2)));if(f=O(j*Math.sin(l),j*Math.cos(l)),l>n&&(f.x=f.x+Math.abs(f.y*Math.tan(W)),f.y=0,Math.round(f.x*Math.tan(r-l))<c))return w.y=Math.sqrt(Math.pow(c,2)+2*_.x*x.x),m&&(w.y=c-w.y),P();if(l>n){var F=r-l,T=v-c/Math.sin(F);d=O(Math.round(T*Math.cos(F)),Math.round(T*Math.sin(F))),b&&(d.x=-d.x),m&&(d.y=-d.y)}e=Math.round(f.y/Math.tan(l)+f.x);var k=u-e,A=k*Math.cos(2*l),D=k*Math.sin(2*l);g=O(Math.round(b?k-A:e+A),Math.round(m?D:c-D)),o=k*Math.sin(l);var G=Math.sqrt(Math.pow(t.endingPoint.x-w.x,2)+Math.pow(t.endingPoint.y-w.y,2));return p=z(G<u?G/u:1,0,1),t.frontGradient&&(s=o>100?(o-100)/o:0,a=O(o*Math.sin(n-l)/c*100,o*Math.cos(n-l)/u*100),m&&(a.y=100-a.y),b&&(a.x=100-a.x)),t.backGradient&&(i=O(o*Math.sin(l)/u*100,o*Math.cos(l)/c*100),b||(i.x=100-i.x),m||(i.y=100-i.y)),f.x=Math.round(f.x),f.y=Math.round(f.y),!0};return P(),{point:w,alpha:l,angle:h,tr:f,move:d,df:g,px:e,top:m,left:b,gradient:{endPointA:a,endPointB:i,startV:s,size:o,opacity:p}}},G=function(t,e,a,r){var n,i,s,o=[],p=e.x-t.x,l=e.y-t.y,h=(s=-M(Math.atan2(l,p)),(s%=360)<0&&(s+=360),0===s?0:s);for(n=0;n<r;n++)i=100*z(a[n][0],0,1),o.push(" "+a[n][1]+" "+i+"%");return"linear-gradient("+h+"deg,"+o.join(",")+")"},E=function(t,e,a,r,n){A.applyStyles(t,{"background-image":G(e,a,r,n)})},H={init:function(r){P(),void 0===e&&(e="WebKitCSSMatrix"in window||"MozPerspective"in document.body.style,a=function(){for(var t=["Moz","Webkit","Khtml","O","ms"],e=t.length,a="";e--;)t[e]+"Transform"in document.body.style&&(a="-"+t[e].toLowerCase()+"-");return a}());var n,i=T(this),o=this.children();if(r=t.extend({width:this.width(),height:this.height()},v,r),i.turnOriginal={style:this.attr("style"),class:this.attr("class")},i.opts=r,i.pageObjs={},i.pageDefaults={},i.pages={},i.pageWrap={},i.pagePlace={},i.pageMv=[],i.totalPages=r.pages||0,r.when)for(n in r.when)j(n,r.when)&&this.on(n+g,r.when[n]);for(A.applyStyles(this,{position:"relative",width:r.width,height:r.height}),this.turn("display",r.display),e&&!s&&r.acceleration&&this.transform(W(0,0,!0)),n=0;n<o.length;n++)this.turn("addPage",o[n],n+1);return this.turn("page",r.page),u=t.extend({},u,r.corners),i.eventHandlers={start:function(t){for(var e in i.pages)if(j(e,i.pages)&&!1===N._eventStart.call(i.pages[e],t))return!1},move:function(t){for(var e in i.pages)j(e,i.pages)&&N._eventMove.call(i.pages[e],t)},end:function(t){for(var e in i.pages)j(e,i.pages)&&N._eventEnd.call(i.pages[e],t)}},t(this).on(F(p.start,g),i.eventHandlers.start),t(document).on(F(p.move,g),i.eventHandlers.move).on(F(p.end,g),i.eventHandlers.end),i.done=!0,this},destroy:function(){var e,a,r=T(this);if(!r.opts)return this;for(e in r.done&&this.turn("stop"),this.off(g),r.eventHandlers&&(this.off(F(p.start,g),r.eventHandlers.start),t(document).off(F(p.move,g),r.eventHandlers.move).off(F(p.end,g),r.eventHandlers.end)),r.pageObjs)j(e,r.pageObjs)&&"0"!==e&&r.pageObjs[e]&&(H._destroyPage.call(this,e),A.append(this,r.pageObjs[e]));return r.pageObjs[0]&&H._destroyPage.call(this,0),r.fparent&&A.removeNode(r.fparent),void 0===(a=r.turnOriginal||{}).style?this.removeAttr("style"):this.attr("style",a.style),void 0===a.class?this.removeAttr("class"):this.attr("class",a.class),t.each(["opts","turnOriginal","pageDefaults","pages","pageObjs","pageWrap","pagePlace","pageMv","totalPages","page","tpage","disabled","done","display","fparent","eventHandlers"],function(t,e){this.removeData(e)}.bind(this)),this},_destroyPage:function(t){var e=T(this),a=e.pageObjs[t],r=e.pageDefaults&&e.pageDefaults[t];a&&(a.off(f).animatef(!1),a.detach(),H._removeFlipWrappers.call(this,a),H._removePageWrapper.call(this,t),r?(void 0===r.style?a.removeAttr("style"):a.attr("style",r.style),void 0===r.class?a.removeAttr("class"):a.attr("class",r.class)):a.removeClass("turn-page p"+t+" p-temporal"),a.removeData("f").removeData("effect"),delete e.pages[t],delete e.pageWrap[t],delete e.pagePlace[t])},_createPageWrapper:function(t,e,a){var r=T(this);return r.pageWrap[t]=A.createWrapper("turn-page-wrapper",{page:t},{width:e,height:a}),A.applyStyles(r.pageWrap[t],w["double"==r.display?t%2:0]),A.append(this,r.pageWrap[t]),r.pageWrap[t]},_removePageWrapper:function(t){var e=T(this);e.pageWrap&&e.pageWrap[t]&&A.removeNode(e.pageWrap[t]),e.pageWrap&&delete e.pageWrap[t]},_removeFlipWrappers:function(t){var e=t&&t.data(),a=e&&e.f;a&&(a.fwrapper&&A.removeNode(a.fwrapper),a.wrapper&&A.removeNode(a.wrapper))},addPage:function(e,a){var r=!1,n=T(this),i=n.totalPages+1;if(a){if(a==i)a=i,r=!0;else if(a>i)throw new Error('It is impossible to add the page "'+a+'", the maximum value is: "'+i+'"')}else a=i,r=!0;return a>=1&&a<=i&&(n.done&&this.turn("stop"),a in n.pageObjs&&H._movePages.call(this,a,1),r&&(n.totalPages=i),n.pageObjs[a]=t(e),n.pageDefaults[a]={style:n.pageObjs[a].attr("style"),class:n.pageObjs[a].attr("class")},n.pageObjs[a].addClass("turn-page p"+a),H._addPage.call(this,a),n.done&&this.turn("update"),H._removeFromDOM.call(this)),this},_addPage:function(t){var e=this.data(),a=e.pageObjs[t];if(a)if(H._necessPage.call(this,t)){if(!e.pageWrap[t]){var r="double"==e.display?this.width()/2:this.width(),n=this.height();A.applyStyles(a,{width:r,height:n}),e.pagePlace[t]=t,H._createPageWrapper.call(this,t,r,n).prepend(e.pageObjs[t])}t&&1!=H._setPageLoc.call(this,t)||H._makeFlip.call(this,t)}else e.pagePlace[t]=0,e.pageObjs[t]&&A.removeNode(e.pageObjs[t])},hasPage:function(t){return t in this.data().pageObjs},_makeFlip:function(t){var e=T(this);if(!e.pages[t]&&e.pagePlace[t]==t){var a="single"==e.display,r=t%2;e.pages[t]=A.applyStyles(e.pageObjs[t],{width:a?this.width():this.width()/2,height:this.height()}).flip({page:t,next:a&&t===e.totalPages?t-1:r||a?t+1:t-1,turn:this,duration:e.opts.duration,acceleration:e.opts.acceleration,corners:a?"all":r?"forward":"backward",backGradient:e.opts.gradients,frontGradient:e.opts.gradients}).flip("disable",e.disabled).on("pressed"+f,H._pressed).on("released"+f,H._released).on("start"+f,H._start).on("end"+f,H._end).on("flip"+f,H._flip)}return e.pages[t]},_makeRange:function(){this.data();var t,e=this.turn("range");for(t=e[0];t<=e[1];t++)H._addPage.call(this,t)},range:function(t){var e,a,r,n=this.data();t=t||n.tpage||n.page;var i=H._view.call(this,t);if(t<1||t>n.totalPages)throw new Error('"'+t+'" is not a page for range');return i[1]=i[1]||i[0],i[0]>=1&&i[1]<=n.totalPages?(e=Math.floor(2),n.totalPages-i[1]>i[0]?r=2*e-(a=Math.min(i[0]-1,e)):a=2*e-(r=Math.min(n.totalPages-i[1],e))):(a=5,r=5),[Math.max(1,i[0]-a),Math.min(n.totalPages,i[1]+r)]},_necessPage:function(t){if(0===t)return!0;var e=this.turn("range");return t>=e[0]&&t<=e[1]},_removeFromDOM:function(){var t,e=T(this);for(t in e.pageWrap)j(t,e.pageWrap)&&!H._necessPage.call(this,t)&&H._removePageFromDOM.call(this,t)},_removePageFromDOM:function(t){var e=T(this);e.pages[t]&&(H._removeFlipWrappers.call(this,e.pages[t]),e.pages[t].remove(),delete e.pages[t]),e.pageObjs[t]&&e.pageObjs[t].remove(),H._removePageWrapper.call(this,t),delete e.pagePlace[t]},removePage:function(t){var e=T(this);return e.pageObjs[t]&&(this.turn("stop"),H._removePageFromDOM.call(this,t),delete e.pageObjs[t],H._movePages.call(this,t,-1),e.totalPages=e.totalPages-1,H._makeRange.call(this),e.page>e.totalPages&&this.turn("page",e.totalPages)),this},_movePages:function(t,e){var a,r=T(this),n="single"==r.display,i=function(t){var a=t+e,i=a%2;r.pageObjs[t]&&(r.pageObjs[a]=r.pageObjs[t].removeClass("page"+t).addClass("page"+a)),r.pagePlace[t]&&r.pageWrap[t]&&(r.pagePlace[a]=a,r.pageWrap[a]=A.applyStyles(r.pageWrap[t],w[n?0:i]).attr("page",a),r.pages[t]&&(r.pages[a]=r.pages[t].flip("options",{page:a,next:n||i?a+1:a-1,corners:n?"all":i?"forward":"backward"})),e&&(delete r.pages[t],delete r.pagePlace[t],delete r.pageObjs[t],delete r.pageWrap[t],delete r.pageObjs[t]))};if(e>0)for(a=r.totalPages;a>=t;a--)i(a);else for(a=t;a<=r.totalPages;a++)i(a)},display:function(e){var a=T(this),r=a.display;if(e){if(-1==t.inArray(e,c))throw new Error('"'+e+'" is not a value for display');if("single"==e?a.pageObjs[0]||(this.turn("stop").css({overflow:"hidden"}),a.pageObjs[0]=A.createWrapper("turn-page p-temporal",null,{width:this.width(),height:this.height()}).appendTo(this)):a.pageObjs[0]&&(this.turn("stop").css({overflow:""}),A.removeNode(a.pageObjs[0]),delete a.pageObjs[0]),a.display=e,r){var n=this.turn("size");H._movePages.call(this,1,0),this.turn("size",n.width,n.height).turn("update")}return this}return r},animating:function(){return this.data().pageMv.length>0},disable:function(e){var a,r=this.data(),n=this.turn("view");for(a in r.disabled=void 0===e||!0===e,r.pages)j(a,r.pages)&&r.pages[a].flip("disable",!!e&&t.inArray(a,n));return this},size:function(t,e){if(t&&e){var a,r=this.data(),n="double"==r.display?t/2:t;for(a in A.applyStyles(this,{width:t,height:e}),r.pageObjs[0]&&A.applyStyles(r.pageObjs[0],{width:n,height:e}),r.pageWrap)j(a,r.pageWrap)&&(A.applyStyles(r.pageObjs[a],{width:n,height:e}),A.applyStyles(r.pageWrap[a],{width:n,height:e}),r.pages[a]&&A.applyStyles(r.pages[a],{width:n,height:e}));return this.turn("resize"),this}return{width:this.width(),height:this.height()}},resize:function(){var t,e=this.data();for(e.pages[0]&&(A.applyStyles(e.pageWrap[0],{left:-this.width()}),e.pages[0].flip("resize",!0)),t=1;t<=e.totalPages;t++)e.pages[t]&&e.pages[t].flip("resize",!0)},_removeMv:function(t){var e,a=this.data();for(e=0;e<a.pageMv.length;e++)if(a.pageMv[e]==t)return a.pageMv.splice(e,1),!0;return!1},_addMv:function(t){var e=this.data();H._removeMv.call(this,t),e.pageMv.push(t)},_view:function(t){var e=this.data();return t=t||e.page,"double"==e.display?t%2?[t-1,t]:[t,t+1]:[t]},view:function(t){var e=this.data(),a=H._view.call(this,t);return"double"==e.display?[a[0]>0?a[0]:0,a[1]<=e.totalPages?a[1]:0]:[a[0]>0&&a[0]<=e.totalPages?a[0]:0]},stop:function(t){var e,a,r=this.data(),n=r.pageMv;for(e in r.pageMv=[],r.tpage&&(r.page=r.tpage,delete r.tpage),n)j(e,n)&&(a=r.pages[n[e]].data().f.opts,N._moveFoldingPage.call(r.pages[n[e]],null),r.pages[n[e]].flip("hideFoldedPage"),r.pagePlace[a.next]=a.next,a.force&&(a.next=a.page%2==0?a.page-1:a.page+1,delete a.force));return this.turn("update"),this},pages:function(t){var e=this.data();if(t){if(t<e.totalPages){for(var a=t+1;a<=e.totalPages;a++)this.turn("removePage",a);this.turn("page")>t&&this.turn("page",t)}return e.totalPages=t,this}return e.totalPages},_fitPage:function(e,a){var r=this.data(),n=this.turn("view",e);r.page!=e&&(this.trigger("turning",[e,n]),-1!=t.inArray(1,n)&&this.trigger("first"),-1!=t.inArray(r.totalPages,n)&&this.trigger("last")),r.pageObjs[e]&&(r.tpage=e,this.turn("stop",a),H._removeFromDOM.call(this),H._makeRange.call(this),this.trigger("turned",[e,n]))},_turnPage:function(e){var a,r,n=this.data(),i=this.turn("view"),s=this.turn("view",e);if(n.page!=e&&(this.trigger("turning",[e,s]),-1!=t.inArray(1,s)&&this.trigger("first"),-1!=t.inArray(n.totalPages,s)&&this.trigger("last")),n.pageObjs[e]&&(n.tpage=e,this.turn("stop"),H._makeRange.call(this),"single"==n.display?(a=i[0],r=s[0]):i[1]&&e>i[1]?(a=i[1],r=s[0]):i[0]&&e<i[0]&&(a=i[0],r=s[1]),n.pages[a])){var o=n.pages[a].data().f.opts;n.tpage=r,o.next!=r&&(o.next=r,n.pagePlace[r]=o.page,o.force=!0),"single"==n.display?n.pages[a].flip("turnPage",s[0]>i[0]?"br":"bl"):n.pages[a].flip("turnPage")}},page:function(e){e=parseInt(e,10);var a=this.data();return e>0&&e<=a.totalPages?(a.done&&-1==t.inArray(e,this.turn("view"))?H._turnPage.call(this,e):H._fitPage.call(this,e),this):a.page},next:function(){var t=this.data();return this.turn("page",H._view.call(this,t.page).pop()+1)},previous:function(){var t=this.data();return this.turn("page",H._view.call(this,t.page).shift()-1)},_addMotionPage:function(){var e=t(this).data().f.opts,a=e.turn,r=a.data();e.pageMv=e.page,H._addMv.call(a,e.pageMv),r.pagePlace[e.next]=e.page,a.turn("update")},_start:function(e,a,r){var n=a.turn.data(),i=t.Event("start");if(e.stopPropagation(),a.turn.trigger(i,[a,r]),i.isDefaultPrevented())e.preventDefault();else{if("single"==n.display){var s="l"==r.charAt(1);1==a.page&&s||a.page==n.totalPages&&!s?e.preventDefault():s?(a.next=a.next<a.page?a.next:a.page-1,a.force=!0):a.next=a.next>a.page?a.next:a.page+1}H._addMotionPage.call(this)}},_end:function(e,a){var r=t(this).data().f.opts,n=r.turn,i=n.data();e.stopPropagation(),a||i.tpage?i.tpage!=r.next&&i.tpage!=r.page||(delete i.tpage,H._fitPage.call(n,i.tpage||r.next,!0)):(H._removeMv.call(n,r.pageMv),n.turn("update"))},_pressed:function(){var e,a=t(this).data().f,r=a.opts.turn.data().pages;for(e in r)e!=a.opts.page&&r[e].flip("disable",!0);return a.time=(new Date).getTime()},_released:function(e,a){var r=t(this),n=r.data().f;e.stopPropagation(),((new Date).getTime()-n.time<200||a.x<0||a.x>t(this).width())&&(e.preventDefault(),n.opts.turn.data().tpage=n.opts.next,n.opts.turn.turn("update"),t(r).flip("turnPage"))},_flip:function(){var e=t(this).data().f.opts;e.turn.trigger("turn",[e.next])},calculateZ:function(t){var e,a,r,n,i,s=this,o=this.data(),p=this.turn("view"),l=p[0]||p[1],h={pageZ:{},partZ:{},pageV:{}},d=function(t){var e=s.turn("view",t);e[0]&&(h.pageV[e[0]]=!0),e[1]&&(h.pageV[e[1]]=!0)};for(e=0;e<t.length;e++)a=t[e],r=o.pages[a].data().f.opts.next,n=o.pagePlace[a],d(a),d(r),i=o.pagePlace[r]==r?r:a,h.pageZ[i]=o.totalPages-Math.abs(l-i),h.partZ[n]=2*o.totalPages+Math.abs(l-i);return h},update:function(){var t,e=this.data();if(e.pageMv.length&&0!==e.pageMv[0]){var a=this.turn("calculateZ",e.pageMv),r=this.turn("view",e.tpage);for(t in e.pagePlace[r[0]]==r[0]?r[0]:e.pagePlace[r[1]]==r[1]&&r[1],e.pageWrap)j(t,e.pageWrap)&&(A.applyStyles(e.pageWrap[t],{display:a.pageV[t]?"":"none","z-index":a.pageZ[t]||0}),e.pages[t]&&(e.pages[t].flip("z",a.partZ[t]||null),a.pageV[t]&&e.pages[t].flip("resize"),e.tpage&&e.pages[t].flip("disable",!0)))}else for(t in e.pageWrap)if(j(t,e.pageWrap)){var n=H._setPageLoc.call(this,t);e.pages[t]&&e.pages[t].flip("disable",e.disabled||1!=n).flip("z",null)}},_setPageLoc:function(t){var e=this.data(),a=this.turn("view");return t==a[0]||t==a[1]?(A.applyStyles(e.pageWrap[t],{"z-index":e.totalPages,display:""}),1):"single"==e.display&&t==a[0]+1||"double"==e.display&&t==a[0]-2||t==a[1]+2?(A.applyStyles(e.pageWrap[t],{"z-index":e.totalPages-1,display:""}),2):(A.applyStyles(e.pageWrap[t],{"z-index":0,display:"none"}),0)}},N={init:function(t){return P(),t.gradients&&(t.frontGradient=!0,t.backGradient=!0),this.data({f:{}}),this.flip("options",t),N._addPageWrapper.call(this),this},setData:function(e){var a=this.data();return a.f=t.extend(a.f,e),this},options:function(e){var a=k(this);return e?(N.setData.call(this,{opts:t.extend({},a.opts||y,e)}),this):a.opts},z:function(t){var e=k(this);return e.opts["z-index"]=t,A.applyStyles(e.fwrapper,{"z-index":t||parseInt(e.parent.css("z-index"),10)||0}),this},_cAllowed:function(){var t=k(this);return u[t.opts.corners]||t.opts.corners},_cornerActivated:function(e){if(void 0===e.originalEvent)return!1;e=o?e.originalEvent.touches:[e];var a=k(this),r=a.parent.offset(),n=this.width(),i=this.height(),s={x:Math.max(0,e[0].pageX-r.left),y:Math.max(0,e[0].pageY-r.top)},p=a.opts.cornerSize,l=N._cAllowed.call(this);if(s.x<=0||s.y<=0||s.x>=n||s.y>=i)return!1;if(s.y<p)s.corner="t";else{if(!(s.y>=i-p))return!1;s.corner="b"}if(s.x<=p)s.corner+="l";else{if(!(s.x>=n-p))return!1;s.corner+="r"}return-1!=t.inArray(s.corner,l)&&s},_c:function(t,e){return{tl:O(e=e||0,e),tr:O(this.width()-e,e),bl:O(e,this.height()-e),br:O(this.width()-e,this.height()-e)}[t]},_c2:function(t){return{tl:O(2*this.width(),0),tr:O(-this.width(),0),bl:O(2*this.width(),this.height()),br:O(-this.width(),this.height())}[t]},_foldingPage:function(t){var e=this.data().f.opts;if(e.folding)return e.folding;if(e.turn){var a=e.turn.data();return"single"==a.display?a.pageObjs[e.next]?a.pageObjs[0]:null:a.pageObjs[e.next]}},_backGradient:function(){var t=this.data().f,e=t.opts.turn,a=t.opts.backGradient&&(!e||"single"==e.data().display||2!=t.opts.page&&t.opts.page!=e.data().totalPages-1);return a&&!t.bshadow&&(t.bshadow=A.createWrapper("turn-back-shadow",null,{width:this.width(),height:this.height()}).appendTo(t.parent)),a},_createFoldParent:function(){var e=k(this),a=t("<div/>",{class:"turn-fold-parent"}).hide();return a.data().flips=0,e.opts.turn?(A.applyStyles(a,_(-e.opts.turn.offset().top,-e.opts.turn.offset().left,"auto").css).appendTo(e.opts.turn),T(e.opts.turn).fparent=a):A.applyStyles(a,_(0,0,"auto").css).attr("id","turn-fwrappers").appendTo(t("body")),a},resize:function(t){var e=this.data().f,a=this.width(),r=this.height(),n=Math.round(Math.sqrt(Math.pow(a,2)+Math.pow(r,2)));t&&(A.applyStyles(e.wrapper,{width:n,height:n}),A.applyStyles(e.fwrapper,{width:n,height:n}).children(":first-child").css({width:a,height:r}),A.applyStyles(e.fpage,{width:r,height:a}),e.opts.frontGradient&&A.applyStyles(e.ashadow,{width:r,height:a}),N._backGradient.call(this)&&A.applyStyles(e.bshadow,{width:a,height:r})),e.parent.is(":visible")&&(A.applyStyles(e.fwrapper,{top:e.parent.offset().top,left:e.parent.offset().left}),e.opts.turn&&A.applyStyles(e.fparent,{top:-e.opts.turn.offset().top,left:-e.opts.turn.offset().left})),this.flip("z",e.opts["z-index"])},_addPageWrapper:function(){var e=this.data().f,a=this.parent();if(!e.wrapper){this.css("left"),this.css("top");var r=this.width(),n=this.height();Math.round(Math.sqrt(Math.pow(r,2)+Math.pow(n,2)));e.parent=a,e.fparent=e.opts.turn?T(e.opts.turn).fparent:t("#turn-fwrappers"),e.fparent||(e.fparent=N._createFoldParent.call(this)),A.applyStyles(this,{top:0,left:0,bottom:"auto",right:"auto"}),e.wrapper=A.createWrapper("turn-flip-wrapper",null,_(0,0,this.css("z-index")).css).appendTo(a).prepend(this),e.fwrapper=A.createWrapper("turn-fold-wrapper",null,_(a.offset().top,a.offset().left).css).hide().appendTo(e.fparent),e.fpage=A.createWrapper("turn-fold-page").appendTo(A.createWrapper("turn-fold-inner",null,_(0,0,0).css).appendTo(e.fwrapper)),e.opts.frontGradient&&(e.ashadow=A.createWrapper("turn-shadow",null,_(0,0,1).css).appendTo(e.fpage)),N.setData.call(this,e),N.resize.call(this,!0)}},_fold:function(t){var e,a,r,n,i,s=this,o=O(0,0),p=O(0,0),l=O(0,0),h=this.width(),d=this.height(),g=N._foldingPage.call(this),f=this.data().f,u=f.opts.acceleration,c=f.wrapper.height(),v=N._c.call(this,t.corner),y=N._backGradient.call(this),w=D({point:t,width:h,height:d,wrapperHeight:c,origin:v,endingPoint:N._c2.call(this,t.corner),frontGradient:f.opts.frontGradient,backGradient:y}),m="t"==t.corner.substr(0,1),b="l"==t.corner.substr(1,1),P=function(t,e,l,g){var v=["0","auto"],w=(h-c)*l[0]/100,P=(d-c)*l[1]/100,_={left:v[e[0]],top:v[e[1]],right:v[e[2]],bottom:v[e[3]]},x=90!=g&&-90!=g?b?-1:1:0;l=l[0]+"% "+l[1]+"%",A.applyStyles(s,_).transform(S(g)+W(t.x+x,t.y,u),l),A.applyStyles(f.fpage.parent(),_),f.wrapper.transform(W(-t.x+w-x,-t.y+P,u)+S(-g),l),f.fwrapper.transform(W(-t.x+o.x+w,-t.y+o.y+P,u)+S(-g),l),f.fpage.parent().transform(S(g)+W(t.x+p.x-o.x,t.y+p.y-o.y,u),l),f.opts.frontGradient&&E(f.ashadow,O(b?100:0,m?100:0),O(a.x,a.y),[[n,"rgba(0,0,0,0)"],[.9*(1-n)+n,"rgba(0,0,0,"+.12*i+")"],[1,"rgba(0,0,0,0)"]],3),y&&E(f.bshadow,O(b?0:100,m?0:100),O(r.x,r.y),[[.7,"rgba(0,0,0,0)"],[.9,"rgba(0,0,0,"+.18*i+")"],[1,"rgba(0,0,0,0)"]],3)};switch(t.x=w.point.x,t.y=w.point.y,w.alpha,e=w.angle,l=w.tr,o=w.move,p=w.df,m=w.top,b=w.left,a=w.gradient.endPointA,r=w.gradient.endPointB,n=w.gradient.startV,i=w.gradient.opacity,t.corner){case"tl":P(l,[1,0,0,1],[100,0],e),f.fpage.transform(W(-d,-h,u)+S(90-2*e),"100% 100%"),g.transform(S(90)+W(0,-d,u),"0% 0%");break;case"tr":P(O(-l.x,l.y),[0,0,0,1],[0,0],-e),f.fpage.transform(W(0,-h,u)+S(2*e-90),"0% 100%"),g.transform(S(270)+W(-h,0,u),"0% 0%");break;case"bl":P(O(l.x,-l.y),[1,1,0,0],[100,100],-e),f.fpage.transform(W(-d,0,u)+S(2*e-90),"100% 0%"),g.transform(S(270)+W(-h,0,u),"0% 0%");break;case"br":P(O(-l.x,-l.y),[0,1,1,0],[0,100],e),f.fpage.transform(S(90-2*e),"0% 0%"),g.transform(S(90)+W(0,-d,u),"0% 0%")}f.point=t},_moveFoldingPage:function(t){var e=this.data().f,a=N._foldingPage.call(this);a&&(t?e.fpage.children()[e.ashadow?"1":"0"]||(N.setData.call(this,{backParent:a.parent()}),A.prepend(e.fpage,a)):e.backParent&&A.prepend(e.backParent,a))},_showFoldedPage:function(e,a){var r=N._foldingPage.call(this),n=this.data(),i=n.f;if(!i.point||i.point.corner!=e.corner){var s=t.Event("start");if(this.trigger(s,[i.opts,e.corner]),s.isDefaultPrevented())return!1}if(r){if(a){var o=this,p=i.point&&i.point.corner==e.corner?i.point:N._c.call(this,e.corner,1);this.animatef({from:[p.x,p.y],to:[e.x,e.y],duration:500,frame:function(t){e.x=Math.round(t[0]),e.y=Math.round(t[1]),N._fold.call(o,e)}})}else N._fold.call(this,e),n.effect&&!n.effect.turning&&this.animatef(!1);return i.fwrapper.is(":visible")||(i.fparent.show().data().flips++,N._moveFoldingPage.call(this,!0),i.fwrapper.show(),i.bshadow&&i.bshadow.show()),!0}return!1},hide:function(){var t=this.data().f,e=N._foldingPage.call(this);return 0===--t.fparent.data().flips&&t.fparent.hide(),A.applyStyles(this,{left:0,top:0,right:"auto",bottom:"auto"}).transform("","0% 100%"),t.wrapper.transform("","0% 100%"),t.fwrapper.hide(),t.bshadow&&t.bshadow.hide(),e.transform("","0% 0%"),this},hideFoldedPage:function(t){var e=this.data().f;if(e.point){var a=this,r=e.point,n=function(){e.point=null,a.flip("hide"),a.trigger("end",[!1])};if(t){var i=N._c.call(this,r.corner),s="t"==r.corner.substr(0,1)?Math.min(0,r.y-i.y)/2:Math.max(0,r.y-i.y)/2,o=O(r.x,r.y+s),p=O(i.x,i.y-s);this.animatef({from:0,to:1,frame:function(t){var e=x(r,o,p,i,t);r.x=e.x,r.y=e.y,N._fold.call(a,r)},complete:n,duration:800,hiding:!0})}else this.animatef(!1),n()}},turnPage:function(t){var e=this,a=this.data().f;t={corner:a.corner?a.corner.corner:t||N._cAllowed.call(this)[0]};var r=a.point||N._c.call(this,t.corner,a.opts.turn?a.opts.turn.data().opts.elevation:0),n=N._c2.call(this,t.corner);this.trigger("flip").animatef({from:0,to:1,frame:function(a){var i=x(r,r,n,n,a);t.x=i.x,t.y=i.y,N._showFoldedPage.call(e,t)},complete:function(){e.trigger("end",[!0])},duration:a.opts.duration,turning:!0}),a.corner=null},moving:function(){return"effect"in this.data()},isTurning:function(){return this.flip("moving")&&this.data().effect.turning},_eventStart:function(t){var e=this.data().f;if(!e.disabled&&!this.flip("isTurning")){if(e.corner=N._cornerActivated.call(this,t),e.corner&&N._foldingPage.call(this,e.corner))return N._moveFoldingPage.call(this,!0),this.trigger("pressed",[e.point]),!1;e.corner=null}},_eventMove:function(t){var e=this.data().f;if(!e.disabled)if(t=o?t.originalEvent.touches:[t],e.corner){var a=e.parent.offset();e.corner.x=t[0].pageX-a.left,e.corner.y=t[0].pageY-a.top,N._showFoldedPage.call(this,e.corner)}else if(!this.data().effect&&this.is(":visible")){var r=N._cornerActivated.call(this,t[0]);if(r){var n=N._c.call(this,r.corner,e.opts.cornerSize/2);r.x=n.x,r.y=n.y,N._showFoldedPage.call(this,r,!0)}else N.hideFoldedPage.call(this,!0)}},_eventEnd:function(){var e=this.data().f;if(!e.disabled&&e.point){var a=t.Event("released");this.trigger(a,[e.point]),a.isDefaultPrevented()||N.hideFoldedPage.call(this,!0)}e.corner=null},disable:function(t){return N.setData.call(this,{disabled:t}),this}},q=function(t,e,a){if(a[0]&&"object"!=typeof a[0]){if(e[a[0]]&&"_"!=a[0].toString().substr(0,1))return e[a[0]].apply(t,Array.prototype.slice.call(a,1));throw a[0]+" is an invalid value"}return e.init.apply(t,a)};t.extend(t.fn,{flip:function(t,e){return q(this,N,arguments)},turn:function(t){return q(this,H,arguments)},transform:function(t,e){return A.applyTransform(this,t,e)},animatef:function(t){var e=this.data();if(e.effect&&d(e.effect.handle),t){t.to.length||(t.to=[t.to]),t.from.length||(t.from=[t.from]),t.easing||(t.easing=function(t,e,a,r,n){return r*Math.sqrt(1-(e=e/n-1)*e)+a});var a,r=[],n=t.to.length,i=this,s=l(),o=function(a){if(i.data().effect===t){a=a||l();var p,d=Math.min(t.duration,Math.max(0,a-s)),g=[];for(p=0;p<n;p++)g.push(t.easing(1,d,t.from[p],r[p],t.duration));t.frame(1==n?g[0]:g),d==t.duration?(delete e.effect,i.data(e),t.complete&&t.complete()):(e.effect.handle=h(o),i.data(e))}};for(a=0;a<n;a++)r.push(t.to[a]-t.from[a]);e.effect=t,this.data(e),o(s)}else e.effect&&e.effect.handle&&d(e.effect.handle),delete e.effect}}),window.__TURNJS_TEST_HOOKS__&&(window.__TURNJS_TEST_HOOKS__.calculateFoldGeometry=D,window.__TURNJS_TEST_HOOKS__.buildLinearGradient=G),t.isTouch=s}(jQuery);