From 9ceba31662218187a28a0de01300604bddc12bc0 Mon Sep 17 00:00:00 2001 From: poongaloo Date: Mon, 8 Jun 2026 17:13:58 +0200 Subject: [PATCH] =?UTF-8?q?Up=20to=20jq4=20and=20add=20d=C3=A9mo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demos/minimal/assets/browser.svg | 10 ++ demos/minimal/assets/cover.svg | 10 ++ demos/minimal/assets/finish.svg | 8 ++ demos/minimal/assets/layout.svg | 12 ++ demos/minimal/assets/media.svg | 9 ++ demos/minimal/assets/navigation.svg | 8 ++ demos/minimal/index.html | 203 ++++++++++++++++++++++++++++ turn.js | 24 ++-- turn.min.js | 66 +++------ 9 files changed, 293 insertions(+), 57 deletions(-) create mode 100644 demos/minimal/assets/browser.svg create mode 100644 demos/minimal/assets/cover.svg create mode 100644 demos/minimal/assets/finish.svg create mode 100644 demos/minimal/assets/layout.svg create mode 100644 demos/minimal/assets/media.svg create mode 100644 demos/minimal/assets/navigation.svg create mode 100644 demos/minimal/index.html diff --git a/demos/minimal/assets/browser.svg b/demos/minimal/assets/browser.svg new file mode 100644 index 0000000..c392416 --- /dev/null +++ b/demos/minimal/assets/browser.svg @@ -0,0 +1,10 @@ + + Fenetre de navigateur avec indicateurs de compatibilite + + + + + + + + diff --git a/demos/minimal/assets/cover.svg b/demos/minimal/assets/cover.svg new file mode 100644 index 0000000..582259c --- /dev/null +++ b/demos/minimal/assets/cover.svg @@ -0,0 +1,10 @@ + + Livre ouvert avec pages colorees + + + + + + + + diff --git a/demos/minimal/assets/finish.svg b/demos/minimal/assets/finish.svg new file mode 100644 index 0000000..8757318 --- /dev/null +++ b/demos/minimal/assets/finish.svg @@ -0,0 +1,8 @@ + + Marque de validation sur une page + + + + + + diff --git a/demos/minimal/assets/layout.svg b/demos/minimal/assets/layout.svg new file mode 100644 index 0000000..3bad252 --- /dev/null +++ b/demos/minimal/assets/layout.svg @@ -0,0 +1,12 @@ + + Composition de pages dans un navigateur + + + + + + + + + + diff --git a/demos/minimal/assets/media.svg b/demos/minimal/assets/media.svg new file mode 100644 index 0000000..4887ee5 --- /dev/null +++ b/demos/minimal/assets/media.svg @@ -0,0 +1,9 @@ + + Image abstraite avec cadres de contenu + + + + + + + diff --git a/demos/minimal/assets/navigation.svg b/demos/minimal/assets/navigation.svg new file mode 100644 index 0000000..0e4023f --- /dev/null +++ b/demos/minimal/assets/navigation.svg @@ -0,0 +1,8 @@ + + Fleches de navigation autour d'un livre + + + + + + diff --git a/demos/minimal/index.html b/demos/minimal/index.html new file mode 100644 index 0000000..e811ae7 --- /dev/null +++ b/demos/minimal/index.html @@ -0,0 +1,203 @@ + + + + + + turn.js - exemple minimal + + + +
+
+
+ Demo minimale +

Explorer turn.js

+ Livre ouvert avec pages colorees +

Un exemple autonome pour verifier rapidement le chargement de jQuery 4, l'initialisation du plugin et le changement de page.

+
+
+ Page 2 +

Un livre HTML

+

Chaque page est un simple element HTML. Le plugin ajoute les wrappers, gere les vues et anime le passage d'une page a l'autre.

+ Composition de pages dans un navigateur +
+
+ Page 3 +

Images et texte

+ Image abstraite avec cadres de contenu +

La demo contient du texte et des images locales afin de tester un rendu un peu plus proche d'un cas reel.

+
+
+ Page 4 +

Navigation

+

Utilise les boutons, les fleches du clavier ou le coin de page pour changer de vue.

+ Fleches de navigation autour d'un livre +
+
+ Page 5 +

Compatibilite

+ Fenetre de navigateur avec indicateurs de compatibilite +

Cette page charge jQuery 4.0.0 depuis le CDN officiel et la version locale de turn.js depuis le depot clone.

+
+
+ Page 6 +

Fin du test

+

Si cette derniere page s'affiche et que le retour fonctionne, le scenario minimal est operationnel.

+ Marque de validation sur une page +
+
+ +
+ + Page 1 + +
+
+ + + + + + diff --git a/turn.js b/turn.js index d6feac9..38ad4af 100644 --- a/turn.js +++ b/turn.js @@ -34,6 +34,10 @@ var has3d, events = (isTouch) ? {start: 'touchstart', move: 'touchmove', end: 'touchend'} : {start: 'mousedown', move: 'mousemove', end: 'mouseup'}, + turnEventNamespace = '.turn', + + turnFlipEventNamespace = '.turnFlip', + // Contansts used for each corner // tl * tr // * * @@ -255,7 +259,7 @@ turnMethods = { if (opts.when) for (i in opts.when) if (has(i, opts.when)) - this.bind(i, opts.when[i]); + this.on(i + turnEventNamespace, opts.when[i]); this.css({position: 'relative', width: opts.width, height: opts.height}); @@ -275,18 +279,18 @@ turnMethods = { // Event listeners - $(this).bind(events.start, function(e) { + $(this).on(events.start + turnEventNamespace, function(e) { for (var page in data.pages) if (has(page, data.pages) && flipMethods._eventStart.call(data.pages[page], e)===false) return false; }); - $(document).bind(events.move, function(e) { + $(document).on(events.move + turnEventNamespace, function(e) { for (var page in data.pages) if (has(page, data.pages)) flipMethods._eventMove.call(data.pages[page], e); }). - bind(events.end, function(e) { + on(events.end + turnEventNamespace, function(e) { for (var page in data.pages) if (has(page, data.pages)) flipMethods._eventEnd.call(data.pages[page], e); @@ -431,11 +435,11 @@ turnMethods = { frontGradient: data.opts.gradients }). flip('disable', data.disabled). - bind('pressed', turnMethods._pressed). - bind('released', turnMethods._released). - bind('start', turnMethods._start). - bind('end', turnMethods._end). - bind('flip', turnMethods._flip); + on('pressed' + turnFlipEventNamespace, turnMethods._pressed). + on('released' + turnFlipEventNamespace, turnMethods._released). + on('start' + turnFlipEventNamespace, turnMethods._start). + on('end' + turnFlipEventNamespace, turnMethods._end). + on('flip' + turnFlipEventNamespace, turnMethods._flip); } return data.pages[page]; }, @@ -1930,4 +1934,4 @@ $.extend($.fn, { $.isTouch = isTouch; -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/turn.min.js b/turn.min.js index eab9eee..55c380e 100644 --- a/turn.min.js +++ b/turn.min.js @@ -1,47 +1,19 @@ -/* turn.js r3 | turnjs.com/license.txt */ -(function(h){var x,y="",G=Math.PI,E=G/2,q="Touch"in window,I=q?{start:"touchstart",move:"touchmove",end:"touchend"}:{start:"mousedown",move:"mousemove",end:"mouseup"},J={backward:["bl","tl"],forward:["br","tr"],all:["tl","bl","tr","br"]},O=["single","double"],P={page:1,gradients:!0,duration:600,acceleration:!0,display:"double",when:null},Q={folding:null,corners:"forward",cornerSize:100,gradients:!0,duration:600,acceleration:!0},K={"0":{top:0,left:0,right:"auto",bottom:"auto"},1:{top:0,right:0,left:"auto", -bottom:"auto"}},l=function(a,b,c,d){return{css:{position:"absolute",top:a,left:b,overflow:d||"hidden","z-index":c||"auto"}}},L=function(a,b,c,d,e){var f=1-e,C=f*f*f,i=e*e*e;return j(Math.round(C*a.x+3*e*f*f*b.x+3*e*e*f*c.x+i*d.x),Math.round(C*a.y+3*e*f*f*b.y+3*e*e*f*c.y+i*d.y))},j=function(a,b){return{x:a,y:b}},s=function(a,b,c){return x&&c?" translate3d("+a+"px,"+b+"px, 0px) ":" translate("+a+"px, "+b+"px) "},t=function(a){return" rotate("+a+"deg) "},p=function(a,b){return Object.prototype.hasOwnProperty.call(b, -a)},R=function(){for(var a=["Moz","Webkit","Khtml","O","ms"],b=a.length,c="";b--;)a[b]+"Transform"in document.body.style&&(c="-"+a[b].toLowerCase()+"-");return c},M=function(a,b,c,d,e){var f,C=[];if("-webkit-"==y){for(f=0;fe)throw Error('It is impossible to add the page "'+ -b+'", the maximum value is: "'+e+'"');}else b=e,c=!0;1<=b&&b<=e&&(d.done&&this.turn("stop"),b in d.pageObjs&&g._movePages.call(this,b,1),c&&(d.totalPages=e),d.pageObjs[b]=h(a).addClass("turn-page p"+b),g._addPage.call(this,b),d.done&&this.turn("update"),g._removeFromDOM.call(this));return this},_addPage:function(a){var b=this.data(),c=b.pageObjs[a];if(c)if(g._necessPage.call(this,a)){if(!b.pageWrap[a]){var d="double"==b.display?this.width()/2:this.width(),e=this.height();c.css({width:d,height:e}); -b.pagePlace[a]=a;b.pageWrap[a]=h("
",{"class":"turn-page-wrapper",page:a,css:{position:"absolute",overflow:"hidden",width:d,height:e}}).css(K["double"==b.display?a%2:0]);this.append(b.pageWrap[a]);b.pageWrap[a].prepend(b.pageObjs[a])}(!a||1==g._setPageLoc.call(this,a))&&g._makeFlip.call(this,a)}else b.pagePlace[a]=0,b.pageObjs[a]&&b.pageObjs[a].remove()},hasPage:function(a){return a in this.data().pageObjs},_makeFlip:function(a){var b=this.data();if(!b.pages[a]&&b.pagePlace[a]==a){var c="single"== -b.display,d=a%2;b.pages[a]=b.pageObjs[a].css({width:c?this.width():this.width()/2,height:this.height()}).flip({page:a,next:c&&a===b.totalPages?a-1:d||c?a+1:a-1,turn:this,duration:b.opts.duration,acceleration:b.opts.acceleration,corners:c?"all":d?"forward":"backward",backGradient:b.opts.gradients,frontGradient:b.opts.gradients}).flip("disable",b.disabled).bind("pressed",g._pressed).bind("released",g._released).bind("start",g._start).bind("end",g._end).bind("flip",g._flip)}return b.pages[a]},_makeRange:function(){var a; -this.data();var b=this.turn("range");for(a=b[0];a<=b[1];a++)g._addPage.call(this,a)},range:function(a){var b,c,d=this.data(),a=a||d.tpage||d.page,e=g._view.call(this,a);if(1>a||a>d.totalPages)throw Error('"'+a+'" is not a page for range');e[1]=e[1]||e[0];1<=e[0]&&e[1]<=d.totalPages?(a=Math.floor(2),d.totalPages-e[1]>e[0]?(b=Math.min(e[0]-1,a),c=2*a-b):(c=Math.min(d.totalPages-e[1],a),b=2*a-c)):c=b=5;return[Math.max(1,e[0]-b),Math.min(d.totalPages,e[1]+c)]},_necessPage:function(a){if(0===a)return!0; -var b=this.turn("range");return a>=b[0]&&a<=b[1]},_removeFromDOM:function(){var a,b=this.data();for(a in b.pageWrap)p(a,b.pageWrap)&&!g._necessPage.call(this,a)&&g._removePageFromDOM.call(this,a)},_removePageFromDOM:function(a){var b=this.data();if(b.pages[a]){var c=b.pages[a].data();c.f&&c.f.fwrapper&&c.f.fwrapper.remove();b.pages[a].remove();delete b.pages[a]}b.pageObjs[a]&&b.pageObjs[a].remove();b.pageWrap[a]&&(b.pageWrap[a].remove(),delete b.pageWrap[a]);delete b.pagePlace[a]},removePage:function(a){var b= -this.data();b.pageObjs[a]&&(this.turn("stop"),g._removePageFromDOM.call(this,a),delete b.pageObjs[a],g._movePages.call(this,a,-1),b.totalPages-=1,g._makeRange.call(this),b.page>b.totalPages&&this.turn("page",b.totalPages));return this},_movePages:function(a,b){var c,d=this.data(),e="single"==d.display,f=function(a){var c=a+b,f=c%2;d.pageObjs[a]&&(d.pageObjs[c]=d.pageObjs[a].removeClass("page"+a).addClass("page"+c));d.pagePlace[a]&&d.pageWrap[a]&&(d.pagePlace[c]=c,d.pageWrap[c]=d.pageWrap[a].css(K[e? -0:f]).attr("page",c),d.pages[a]&&(d.pages[c]=d.pages[a].flip("options",{page:c,next:e||f?c+1:c-1,corners:e?"all":f?"forward":"backward"})),b&&(delete d.pages[a],delete d.pagePlace[a],delete d.pageObjs[a],delete d.pageWrap[a],delete d.pageObjs[a]))};if(0=a;c--)f(c);else for(c=a;c<=d.totalPages;c++)f(c)},display:function(a){var b=this.data(),c=b.display;if(a){if(-1==h.inArray(a,O))throw Error('"'+a+'" is not a value for display');"single"==a?b.pageObjs[0]||(this.turn("stop").css({overflow:"hidden"}), -b.pageObjs[0]=h("
",{"class":"turn-page p-temporal"}).css({width:this.width(),height:this.height()}).appendTo(this)):b.pageObjs[0]&&(this.turn("stop").css({overflow:""}),b.pageObjs[0].remove(),delete b.pageObjs[0]);b.display=a;c&&(a=this.turn("size"),g._movePages.call(this,1,0),this.turn("size",a.width,a.height).turn("update"));return this}return c},animating:function(){return 0a&&this.turn("page",a)}b.totalPages=a;return this}return b.totalPages},_fitPage:function(a,b){var c=this.data(),d=this.turn("view",a);c.page!=a&&(this.trigger("turning",[a,d]),-1!=h.inArray(1,d)&&this.trigger("first"),-1!=h.inArray(c.totalPages,d)&&this.trigger("last"));c.pageObjs[a]&&(c.tpage=a,this.turn("stop",b),g._removeFromDOM.call(this),g._makeRange.call(this),this.trigger("turned", -[a,d]))},_turnPage:function(a){var b,c,d=this.data(),e=this.turn("view"),f=this.turn("view",a);d.page!=a&&(this.trigger("turning",[a,f]),-1!=h.inArray(1,f)&&this.trigger("first"),-1!=h.inArray(d.totalPages,f)&&this.trigger("last"));if(d.pageObjs[a]&&(d.tpage=a,this.turn("stop"),g._makeRange.call(this),"single"==d.display?(b=e[0],c=f[0]):e[1]&&a>e[1]?(b=e[1],c=f[0]):e[0]&&ae[0]?"br":"bl"):d.pages[b].flip("turnPage")},page:function(a){var a=parseInt(a,10),b=this.data();return 0b.page?b.next:b.page+1),g._addMotionPage.call(this))},_end:function(a, -b){var c=h(this).data().f.opts,d=c.turn,e=d.data();a.stopPropagation();if(b||e.tpage){if(e.tpage==c.next||e.tpage==c.page)delete e.tpage,g._fitPage.call(d,e.tpage||c.next,!0)}else g._removeMv.call(d,c.pageMv),d.turn("update")},_pressed:function(){var a,b=h(this).data().f,c=b.opts.turn.data().pages;for(a in c)a!=b.opts.page&&c[a].flip("disable",!0);return b.time=(new Date).getTime()},_released:function(a,b){var c=h(this),d=c.data().f;a.stopPropagation();if(200>(new Date).getTime()-d.time||0>b.x||b.x> -h(this).width())a.preventDefault(),d.opts.turn.data().tpage=d.opts.next,d.opts.turn.turn("update"),h(c).flip("turnPage")},_flip:function(){var a=h(this).data().f.opts;a.turn.trigger("turn",[a.next])},calculateZ:function(a){var b,c,d,e,f=this,i=this.data();b=this.turn("view");var h=b[0]||b[1],g={pageZ:{},partZ:{},pageV:{}},j=function(a){a=f.turn("view",a);a[0]&&(g.pageV[a[0]]=!0);a[1]&&(g.pageV[a[1]]=!0)};for(b=0;b=a.x||0>=a.y||a.x>=d||a.y>=e)return!1;if(a.y=e-b)a.corner="b";else return!1;if(a.x<=b)a.corner+="l";else if(a.x>=d-b)a.corner+="r";else return!1;return-1==h.inArray(a.corner,c)?!1:a},_c:function(a, -b){b=b||0;return{tl:j(b,b),tr:j(this.width()-b,b),bl:j(b,this.height()-b),br:j(this.width()-b,this.height()-b)}[a]},_c2:function(a){return{tl:j(2*this.width(),0),tr:j(-this.width(),0),bl:j(2*this.width(),this.height()),br:j(-this.width(),this.height())}[a]},_foldingPage:function(){var a=this.data().f.opts;if(a.folding)return a.folding;if(a.turn){var b=a.turn.data();return"single"==b.display?b.pageObjs[a.next]?b.pageObjs[0]:null:b.pageObjs[a.next]}},_backGradient:function(){var a=this.data().f,b=a.opts.turn; -if((b=a.opts.backGradient&&(!b||"single"==b.data().display||2!=a.opts.page&&a.opts.page!=b.data().totalPages-1))&&!a.bshadow)a.bshadow=h("
",l(0,0,1)).css({position:"",width:this.width(),height:this.height()}).appendTo(a.parent);return b},resize:function(a){var b=this.data().f,c=this.width(),d=this.height(),e=Math.round(Math.sqrt(Math.pow(c,2)+Math.pow(d,2)));a&&(b.wrapper.css({width:e,height:e}),b.fwrapper.css({width:e,height:e}).children(":first-child").css({width:c,height:d}),b.fpage.css({width:d, -height:c}),b.opts.frontGradient&&b.ashadow.css({width:d,height:c}),i._backGradient.call(this)&&b.bshadow.css({width:c,height:d}));b.parent.is(":visible")&&(b.fwrapper.css({top:b.parent.offset().top,left:b.parent.offset().left}),b.opts.turn&&b.fparent.css({top:-b.opts.turn.offset().top,left:-b.opts.turn.offset().left}));this.flip("z",b.opts["z-index"])},_addPageWrapper:function(){var a=this.data().f,b=this.parent();if(!a.wrapper){this.css("left");this.css("top");var c=this.width(),d=this.height(); -Math.round(Math.sqrt(Math.pow(c,2)+Math.pow(d,2)));a.parent=b;a.fparent=a.opts.turn?a.opts.turn.data().fparent:h("#turn-fwrappers");a.fparent||(c=h("
",{css:{"pointer-events":"none"}}).hide(),c.data().flips=0,a.opts.turn?(c.css(l(-a.opts.turn.offset().top,-a.opts.turn.offset().left,"auto","visible").css).appendTo(a.opts.turn),a.opts.turn.data().fparent=c):c.css(l(0,0,"auto","visible").css).attr("id","turn-fwrappers").appendTo(h("body")),a.fparent=c);this.css({position:"absolute",top:0,left:0, -bottom:"auto",right:"auto"});a.wrapper=h("
",l(0,0,this.css("z-index"))).appendTo(b).prepend(this);a.fwrapper=h("
",l(b.offset().top,b.offset().left)).hide().appendTo(a.fparent);a.fpage=h("
",{css:{cursor:"default"}}).appendTo(h("
",l(0,0,0,"visible")).appendTo(a.fwrapper));a.opts.frontGradient&&(a.ashadow=h("
",l(0,0,1)).appendTo(a.fpage));i.setData.call(this,a);i.resize.call(this,!0)}},_fold:function(a){var b=this,c=0,d=0,e,f,h,g,v,H,n=j(0,0),p=j(0,0),k=j(0,0),r=this.width(), -u=this.height(),l=i._foldingPage.call(this);Math.tan(d);var o=this.data().f,w=o.opts.acceleration,y=o.wrapper.height(),q=i._c.call(this,a.corner),D="t"==a.corner.substr(0,1),A="l"==a.corner.substr(1,1),F=function(){var m=j(q.x?q.x-a.x:a.x,q.y?q.y-a.y:a.y),B=Math.atan2(m.y,m.x),z;d=E-B;c=180*(d/G);z=j(A?r-m.x/2:a.x+m.x/2,m.y/2);var l=d-Math.atan2(z.y,z.x),l=Math.max(0,Math.sin(l)*Math.sqrt(Math.pow(z.x,2)+Math.pow(z.y,2)));k=j(l*Math.sin(d),l*Math.cos(d));if(d>E&&(k.x+=Math.abs(k.y*Math.tan(B)),k.y= -0,Math.round(k.x*Math.tan(G-d))E&&(m=G-d,B=y-u/Math.sin(m),n=j(Math.round(B*Math.cos(m)),Math.round(B*Math.sin(m))),A&&(n.x=-n.x),D))n.y=-n.y;e=Math.round(k.y/Math.tan(d)+k.x);m=r-e;B=m*Math.cos(2*d);z=m*Math.sin(2*d);p=j(Math.round(A?m-B:e+B),Math.round(D?z:u-z));v=m*Math.sin(d);m=i._c2.call(b,a.corner);m=Math.sqrt(Math.pow(m.x-a.x,2)+Math.pow(m.y-a.y,2));H=ms)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&&y._movePages.call(this,e,1),r&&(i.totalPages=s),i.pageObjs[e]=t(a).addClass("turn-page p"+e),y._addPage.call(this,e),i.done&&this.turn("update"),y._removeFromDOM.call(this)),this},_addPage:function(a){var e=this.data(),r=e.pageObjs[a];if(r)if(y._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("
",{class:"turn-page-wrapper",page:a,css:{position:"absolute",overflow:"hidden",width:i,height:s}}).css(f["double"==e.display?a%2:0]),this.append(e.pageWrap[a]),e.pageWrap[a].prepend(e.pageObjs[a])}a&&1!=y._setPageLoc.call(this,a)||y._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).on("pressed"+p,y._pressed).on("released"+p,y._released).on("start"+p,y._start).on("end"+p,y._end).on("flip"+p,y._flip)}return a.pages[t]},_makeRange:function(){this.data();var t,a=this.turn("range");for(t=a[0];t<=a[1];t++)y._addPage.call(this,t)},range:function(t){var a,e,r,i=this.data();t=t||i.tpage||i.page;var s=y._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)b(t,a.pageWrap)&&!y._necessPage.call(this,t)&&y._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"),y._removePageFromDOM.call(this,t),delete a.pageObjs[t],y._movePages.call(this,t,-1),a.totalPages=a.totalPages-1,y._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(f[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,l))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("
",{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");y._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)b(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)b(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;a0?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)b(a,i)&&(e=r.pages[i[a]].data().f.opts,P._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(tt&&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),y._removeFromDOM.call(this),y._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"),y._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]&&as[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"))?y._turnPage.call(this,a):y._fitPage.call(this,a),this):e.page},next:function(){var t=this.data();return this.turn("page",y._view.call(this,t.page).pop()+1)},previous:function(){var t=this.data();return this.turn("page",y._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,y._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.nexte.page?e.next:e.page+1}y._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,y._fitPage.call(i,s.tpage||r.next,!0)):(y._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=i||o.y>=n)return!1;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:v(a=a||0,a),tr:v(this.width()-a,a),bl:v(a,this.height()-a),br:v(this.width()-a,this.height()-a)}[t]},_c2:function(t){return{tl:v(2*this.width(),0),tr:v(-this.width(),0),bl:v(2*this.width(),this.height()),br:v(-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("
",c(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}),P._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("
",{css:{"pointer-events":"none"}}).hide();s.data().flips=0,a.opts.turn?(s.css(c(-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(c(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("
",c(0,0,this.css("z-index"))).appendTo(e).prepend(this),a.fwrapper=t("
",c(e.offset().top,e.offset().left)).hide().appendTo(a.fparent),a.fpage=t("
",{css:{cursor:"default"}}).appendTo(t("
",c(0,0,0,"visible")).appendTo(a.fwrapper)),a.opts.frontGradient&&(a.ashadow=t("
",c(0,0,1)).appendTo(a.fpage)),P.setData.call(this,a),P.resize.call(this,!0)}},_fold:function(t){var a,e,s,n,o,p,h=this,l=0,g=0,d=v(0,0),f=v(0,0),c=v(0,0),u=this.width(),b=this.height(),y=P._foldingPage.call(this),M=(Math.tan(g),this.data().f),_=M.opts.acceleration,O=M.wrapper.height(),j=P._c.call(this,t.corner),W="t"==t.corner.substr(0,1),z="l"==t.corner.substr(1,1),k=function(){var w,x=v(j.x?j.x-t.x:t.x,j.y?j.y-t.y:t.y),m=Math.atan2(x.y,x.x);l=(g=i-m)/r*180,w=v(z?u-x.x/2:t.x+x.x/2,x.y/2);var y=g-Math.atan2(w.y,w.x),_=Math.max(0,Math.sin(y)*Math.sqrt(Math.pow(w.x,2)+Math.pow(w.y,2)));if(c=v(_*Math.sin(g),_*Math.cos(g)),g>i&&(c.x=c.x+Math.abs(c.y*Math.tan(m)),c.y=0,Math.round(c.x*Math.tan(r-g))i){var F=r-g,D=O-b/Math.sin(F);d=v(Math.round(D*Math.cos(F)),Math.round(D*Math.sin(F))),z&&(d.x=-d.x),W&&(d.y=-d.y)}a=Math.round(c.y/Math.tan(g)+c.x);var A=u-a,T=A*Math.cos(2*g),G=A*Math.sin(2*g);f=v(Math.round(z?A-T:a+T),Math.round(W?G:b-G)),o=A*Math.sin(g);var E=P._c2.call(h,t.corner),q=Math.sqrt(Math.pow(E.x-t.x,2)+Math.pow(E.y-t.y,2));return p=q100?(o-100)/o:0,e=v(o*Math.sin(i-g)/b*100,o*Math.cos(i-g)/u*100),W&&(e.y=100-e.y),z&&(e.x=100-e.x)),P._backGradient.call(h)&&(s=v(o*Math.sin(g)/u*100,o*Math.cos(g)/b*100),z||(s.x=100-s.x),W||(s.y=100-s.y)),c.x=Math.round(c.x),c.y=Math.round(c.y),!0},F=function(t,a,r,i){var o=["0","auto"],l=(u-O)*r[0]/100,g=(b-O)*r[1]/100,c={left:o[a[0]],top:o[a[1]],right:o[a[2]],bottom:o[a[3]]},y=90!=i&&-90!=i?z?-1:1:0;r=r[0]+"% "+r[1]+"%",h.css(c).transform(x(i)+w(t.x+y,t.y,_),r),M.fpage.parent().css(c),M.wrapper.transform(w(-t.x+l-y,-t.y+g,_)+x(-i),r),M.fwrapper.transform(w(-t.x+d.x+l,-t.y+d.y+g,_)+x(-i),r),M.fpage.parent().transform(x(i)+w(t.x+f.x-d.x,t.y+f.y-d.y,_),r),M.opts.frontGradient&&m(M.ashadow,v(z?100:0,W?100:0),v(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),P._backGradient.call(h)&&m(M.bshadow,v(z?0:100,W?0:100),v(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(),F(c,[1,0,0,1],[100,0],l),M.fpage.transform(w(-b,-u,_)+x(90-2*l),"100% 100%"),y.transform(x(90)+w(0,-b,_),"0% 0%");break;case"tr":t.x=Math.min(t.x,u-1),k(),F(v(-c.x,c.y),[0,0,0,1],[0,0],-l),M.fpage.transform(w(0,-u,_)+x(2*l-90),"0% 100%"),y.transform(x(270)+w(-u,0,_),"0% 0%");break;case"bl":t.x=Math.max(t.x,1),k(),F(v(c.x,-c.y),[1,1,0,0],[100,100],-l),M.fpage.transform(w(-b,0,_)+x(2*l-90),"100% 0%"),y.transform(x(270)+w(-u,0,_),"0% 0%");break;case"br":t.x=Math.min(t.x,u-1),k(),F(v(-c.x,-c.y),[0,1,1,0],[0,100],l),M.fpage.transform(x(90-2*l),"0% 0%"),y.transform(x(90)+w(0,-b,_),"0% 0%")}M.point=t},_moveFoldingPage:function(t){var a=this.data().f,e=P._foldingPage.call(this);e&&(t?a.fpage.children()[a.ashadow?"1":"0"]||(P.setData.call(this,{backParent:e.parent()}),a.fpage.prepend(e)):a.backParent&&a.backParent.prepend(e))},_showFoldedPage:function(a,e){var r=P._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:P._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]),P._fold.call(o,a)}})}else P._fold.call(this,a),i.effect&&!i.effect.turning&&this.animatef(!1);return s.fwrapper.is(":visible")||(s.fparent.show().data().flips++,P._moveFoldingPage.call(this,!0),s.fwrapper.show(),s.bshadow&&s.bshadow.show()),!0}return!1},hide:function(){var t=this.data().f,a=P._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=P._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=v(r.x,r.y+n),p=v(s.x,s.y-n);this.animatef({from:0,to:1,frame:function(t){var a=u(r,o,p,s,t);r.x=a.x,r.y=a.y,P._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||P._cAllowed.call(this)[0]};var r=e.point||P._c.call(this,t.corner,e.opts.turn?e.opts.turn.data().opts.elevation:0),i=P._c2.call(this,t.corner);this.trigger("flip").animatef({from:0,to:1,frame:function(e){var s=u(r,r,i,i,e);t.x=s.x,t.y=s.y,P._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=P._cornerActivated.call(this,t),a.corner&&P._foldingPage.call(this,a.corner))return P._moveFoldingPage.call(this,!0),this.trigger("pressed",[a.point]),!1;a.corner=null}},_eventMove:function(t){var a=this.data().f;if(!a.disabled)if(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,P._showFoldedPage.call(this,a.corner)}else if(!this.data().effect&&this.is(":visible")){var r=P._cornerActivated.call(this,t[0]);if(r){var i=P._c.call(this,r.corner,a.opts.cornerSize/2);r.x=i.x,r.y=i.y,P._showFoldedPage.call(this,r,!0)}else P.hideFoldedPage.call(this,!0)}},_eventEnd:function(){var a=this.data().f;if(!a.disabled&&a.point){var e=t.Event("released");this.trigger(e,[a.point]),e.isDefaultPrevented()||P.hideFoldedPage.call(this,!0)}a.corner=null},disable:function(t){return P.setData.call(this,{disabled:t}),this}},M=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 M(this,P,arguments)},turn:function(t){return M(this,y,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