From 7465e5b5249a6c6b8354ff16f2e36085097e7722 Mon Sep 17 00:00:00 2001 From: Emmanuel Garcia Date: Tue, 3 Apr 2012 23:38:43 -0400 Subject: [PATCH] r3 --- turn.js | 86 +++++++++++++++++++++++++++---------------------- turn.min.js | 93 +++++++++++++++++++++++++++-------------------------- 2 files changed, 95 insertions(+), 84 deletions(-) diff --git a/turn.js b/turn.js index 9bce409..a280b00 100644 --- a/turn.js +++ b/turn.js @@ -145,33 +145,42 @@ var has3d, return {x: x, y: y}; }, + // Returns the traslate value + translate = function(x, y, use3d) { return (has3d && use3d) ? ' translate3d(' + x + 'px,' + y + 'px, 0px) ' : ' translate(' + x + 'px, ' + y + 'px) '; }, + // Returns the rotation value + rotate = function(degrees) { return ' rotate(' + degrees + 'deg) '; }, + // Checks if a property belongs to an object + has = function(property, object) { return Object.prototype.hasOwnProperty.call(object, property); }, + // Gets the CSS3 vendor prefix + getPrefix = function() { var vendorPrefixes = ['Moz','Webkit','Khtml','O','ms'], - style = document.body.style, len = vendorPrefixes.length, vendor = ''; while (len--) - if ((vendorPrefixes[len] + 'Transform') in style) + if ((vendorPrefixes[len] + 'Transform') in document.body.style) vendor='-'+vendorPrefixes[len].toLowerCase()+'-'; return vendor; }, - gradient = function(obj, p0, p1, colors, numColors) { + // Adds gradients + gradient = function(obj, p0, p1, colors, numColors) { + var j, cols = []; if (vendor=='-webkit-') { @@ -183,21 +192,27 @@ var has3d, } else { + // This procedure makes the gradients for non-webkit browsers + // Hopefully this procedure will be reduced to one unique way for gradients + + p0 = {x:p0.x/100 * obj.width(), y:p0.y/100 * obj.height()}; + p1 = {x:p1.x/100 * obj.width(), y:p1.y/100 * obj.height()}; + var dx = p1.x-p0.x, dy = p1.y-p0.y, angle = Math.atan2(dy, dx), angle2 = angle - Math.PI/2, - diagonal = Math.abs(100*Math.sin(angle2)) + Math.abs(100*Math.cos(angle2)), + diagonal = Math.abs(obj.width()*Math.sin(angle2)) + Math.abs(obj.height()*Math.cos(angle2)), gradientDiagonal = Math.sqrt(dy*dy + dx*dx), - corner = point2D((p1.x=range[0] && page<=range[1]; }, @@ -560,20 +574,20 @@ turnMethods = { move = function(page) { var next = page + change, - pair = next%2; + odd = next%2; if (data.pageObjs[page]) data.pageObjs[next] = data.pageObjs[page].removeClass('page' + page).addClass('page' + next); if (data.pagePlace[page] && data.pageWrap[page]) { data.pagePlace[next] = next; - data.pageWrap[next] = data.pageWrap[page].css(pagePosition[(single) ? 0 : pair]).attr('page', next); + data.pageWrap[next] = data.pageWrap[page].css(pagePosition[(single) ? 0 : odd]).attr('page', next); if (data.pages[page]) data.pages[next] = data.pages[page].flip('options', { page: next, - next: (single || pair) ? next+1 : next-1, - corners: (single) ? 'all' : ((pair) ? 'forward' : 'backward') + next: (single || odd) ? next+1 : next-1, + corners: (single) ? 'all' : ((odd) ? 'forward' : 'backward') }); if (change) { @@ -629,7 +643,6 @@ turnMethods = { turnMethods._movePages.call(this, 1, 0); this.turn('size', size.width, size.height). turn('update'); - } return this; @@ -655,9 +668,7 @@ turnMethods = { data = this.data(), view = this.turn('view'); - bool = typeof(bool)=='undefined' || bool===true; - - data.disabled = bool; + data.disabled = bool===undefined || bool===true; for (page in data.pages) if (has(page, data.pages)) @@ -682,6 +693,7 @@ turnMethods = { for (page in data.pageWrap) { if (!has(page, data.pageWrap)) continue; + data.pageObjs[page].css({width: pageWidth, height: height}); data.pageWrap[page].css({width: pageWidth, height: height}); if (data.pages[page]) data.pages[page].css({width: pageWidth, height: height}); @@ -764,7 +776,7 @@ turnMethods = { var data = this.data(), view = turnMethods._view.call(this, page); return (data.display=='double') ? [(view[0]>0) ? view[0] : 0, (view[1]<=data.totalPages) ? view[1] : 0] - : [(view[0]>0 && view[0]<=data.totalPages) ? view[0] : 0]; + : [(view[0]>0 && view[0]<=data.totalPages) ? view[0] : 0]; }, @@ -964,6 +976,7 @@ turnMethods = { event = $.Event('start'); e.stopPropagation(); + opts.turn.trigger(event, [opts, corner]); if (event.isDefaultPrevented()) { @@ -1112,8 +1125,7 @@ turnMethods = { for (page in data.pageWrap) { - if (!has(page, data.pageWrap)) - continue; + if (!has(page, data.pageWrap)) continue; data.pageWrap[page].css({display: (pos.pageV[page]) ? '' : 'none', 'z-index': pos.pageZ[page] || 0}); @@ -1152,7 +1164,7 @@ turnMethods = { if (page==view[0] || page==view[1]) { data.pageWrap[page].css({'z-index': data.totalPages, display: ''}); return 1; - } else if((data.display=='single' && page==view[0]+1) || (data.display=='double' && page==view[0]-2 || page==view[1]+2)) { + } else if ((data.display=='single' && page==view[0]+1) || (data.display=='double' && page==view[0]-2 || page==view[1]+2)) { data.pageWrap[page].css({'z-index': data.totalPages-1, display: ''}); return 2; } else { @@ -1248,13 +1260,19 @@ flipMethods = { _c: function(corner, opts) { opts = opts || 0; - return ({tl: point2D(opts, opts), tr: point2D(this.width()-opts, opts), bl: point2D(opts, this.height()-opts), br: point2D(this.width()-opts, this.height()-opts)})[corner]; + return ({tl: point2D(opts, opts), + tr: point2D(this.width()-opts, opts), + bl: point2D(opts, this.height()-opts), + br: point2D(this.width()-opts, this.height()-opts)})[corner]; }, _c2: function(corner) { - return {tl: point2D(this.width()*2, 0), tr: point2D(-this.width(), 0), bl: point2D(this.width()*2, this.height()), br: point2D(-this.width(), this.height())}[corner]; + return {tl: point2D(this.width()*2, 0), + tr: point2D(-this.width(), 0), + bl: point2D(this.width()*2, this.height()), + br: point2D(-this.width(), this.height())}[corner]; }, @@ -1515,7 +1533,8 @@ flipMethods = { [[gradientStartV, 'rgba(0,0,0,0)'], [((1-gradientStartV)*0.8)+gradientStartV, 'rgba(0,0,0,'+(0.2*gradientOpacity)+')'], [1, 'rgba(255,255,255,'+(0.2*gradientOpacity)+')']], - 3); + 3, + alpha); if (flipMethods._backGradient.call(that)) gradient(data.bshadow, @@ -1547,7 +1566,7 @@ flipMethods = { point.x = Math.max(point.x, 1); compute(); transform(point2D(tr.x, -tr.y), [1,1,0,0], [100, 100], -a); - data.fpage.transform(translate(-height, 0, ac) + rotate(-90+a*2 ), '100% 0%'); + data.fpage.transform(translate(-height, 0, ac) + rotate(-90+a*2), '100% 0%'); folding.transform(rotate(270) + translate(-width, 0, ac), '0% 0%'); break; case 'br' : @@ -1570,15 +1589,6 @@ flipMethods = { folding = flipMethods._foldingPage.call(this); if (folding) { - - /* - // http://code.google.com/p/chromium/issues/detail?id=114617 - var user = navigator.userAgent; - if (user.indexOf('Chrome/17.')!=-1 || user.indexOf('Chrome/18.')!=-1) { - var bg = folding.css('background-image'); - folding.css({'background-image': ''}).css({'background-image': bg}); - }*/ - if (bool) { if (!data.fpage.children()[data.ashadow? '1' : '0']) { flipMethods.setData.call(this, {backParent: folding.parent()}); @@ -1665,7 +1675,7 @@ flipMethods = { return this; }, - hideFoldedPage: function(interpolate) { + hideFoldedPage: function(animate) { var data = this.data().f; @@ -1679,7 +1689,7 @@ flipMethods = { that.trigger('end', [false]); }; - if (interpolate) { + if (animate) { var p4 = flipMethods._c.call(this, p1.corner), top = (p1.corner.substr(0,1)=='t'), delta = (top) ? Math.min(0, p1.y-p4.y)/2 : Math.max(0, p1.y-p4.y)/2, diff --git a/turn.min.js b/turn.min.js index 4c9bcda..d319223 100644 --- a/turn.min.js +++ b/turn.min.js @@ -1,46 +1,47 @@ -/* turn.js r3 | turnjs.com | (c) 2012 Emmanuel Garcia | MIT Licensed */ -(function(i){var x,y="",G=Math.PI,E=G/2,w="Touch"in window,I=w?{start:"touchstart",move:"touchmove",end:"touchend"}:{start:"mousedown",move:"mousemove",end:"mouseup"},N={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},J={"0":{top:0,left:0,right:"auto",bottom:"auto"},1:{top:0,right:0,left:"auto", -bottom:"auto"}},m=function(a,b,c,d){return{css:{position:"absolute",top:a,left:b,overflow:d||"hidden","z-index":c||"auto"}}},K=function(a,b,c,d,e){var f=1-e,C=f*f*f,h=e*e*e;return j(Math.round(C*a.x+3*e*f*f*b.x+3*e*e*f*c.x+h*d.x),Math.round(C*a.y+3*e*f*f*b.y+3*e*e*f*c.y+h*d.y))},j=function(a,b){return{x:a,y:b}},r=function(a,b,c){return x&&c?" translate3d("+a+"px,"+b+"px, 0px) ":" translate("+a+"px, "+b+"px) "},s=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=document.body.style,c=a.length,d="";c--;)a[c]+"Transform"in b&&(d="-"+a[c].toLowerCase()+"-");return d},L=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]=i(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]=i("
",{"class":"turn-page-wrapper",page:a,css:{position:"absolute",overflow:"hidden",width:d,height:e}}).css(J["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: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(J[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==i.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]=i("
",{"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!=i.inArray(1,d)&&this.trigger("first"),-1!=i.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!=i.inArray(1,f)&&this.trigger("first"),-1!=i.inArray(d.totalPages, -f)&&this.trigger("last"));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=i(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=i(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=i(this),d=c.data().f;a.stopPropagation();if(200>(new Date).getTime()-d.time||0>b.x||b.x>i(this).width())a.preventDefault(),d.opts.turn.data().tpage=d.opts.next,d.opts.turn.turn("update"),i(c).flip("turnPage")},_flip:function(){var a=i(this).data().f.opts;a.turn.trigger("turn",[a.next])},calculateZ:function(a){var b, -c,d,e,f=this,h=this.data();b=this.turn("view");var i=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==i.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=i("
",m(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}),h._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:i("#turn-fwrappers");a.fparent||(c=i("
",{css:{"pointer-events":"none"}}).hide(),c.data().flips=0,a.opts.turn?(c.css(m(-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(m(0,0,"auto","visible").css).attr("id","turn-fwrappers").appendTo(i("body")),a.fparent=c);this.css({position:"absolute",top:0,left:0,bottom:"auto",right:"auto"});a.wrapper=i("
",m(0,0,this.css("z-index"))).appendTo(b).prepend(this);a.fwrapper=i("
",m(b.offset().top,b.offset().left)).hide().appendTo(a.fparent);a.fpage=i("
",{css:{cursor:"default"}}).appendTo(i("
",m(0,0,0,"visible")).appendTo(a.fwrapper)); -a.opts.frontGradient&&(a.ashadow=i("
",m(0,0,1)).appendTo(a.fpage));h.setData.call(this,a);h.resize.call(this,!0)}},_fold:function(a){var b=this,c=0,d=0,e,f,i,g,u,H,n=j(0,0),p=j(0,0),k=j(0,0),q=this.width(),t=this.height(),m=h._foldingPage.call(this);Math.tan(d);var o=this.data().f,v=o.opts.acceleration,y=o.wrapper.height(),w=h._c.call(this,a.corner),D="t"==a.corner.substr(0,1),A="l"==a.corner.substr(1,1),F=function(){var l=j(w.x?w.x-a.x:a.x,w.y?w.y-a.y:a.y),B=Math.atan2(l.y,l.x),z;d=E-B;c=180* -(d/G);z=j(A?q-l.x/2:a.x+l.x/2,l.y/2);var m=d-Math.atan2(z.y,z.x),m=Math.max(0,Math.sin(m)*Math.sqrt(Math.pow(z.x,2)+Math.pow(z.y,2)));k=j(m*Math.sin(d),m*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&&(l=G-d,B=y-t/Math.sin(l),n=j(Math.round(B*Math.cos(l)),Math.round(B*Math.sin(l))),A&&(n.x=-n.x),D&&(n.y=-n.y));e=Math.round(k.y/Math.tan(d)+k.x);l=q-e;B=l*Math.cos(2*d);z=l*Math.sin(2*d); -p=j(Math.round(A?l-B:e+B),Math.round(D?z:t-z));u=l*Math.sin(d);l=h._c2.call(b,a.corner);l=Math.sqrt(Math.pow(l.x-a.x,2)+Math.pow(l.y-a.y,2));H=le)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]=i(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]= +i("
",{"class":"turn-page-wrapper",page:a,css:{position:"absolute",overflow:"hidden",width:d,height:e}}).css(J["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: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(J[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==i.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]= +i("
",{"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!=i.inArray(1,d)&&this.trigger("first"),-1!=i.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!=i.inArray(1,f)&&this.trigger("first"),-1!=i.inArray(d.totalPages,f)&&this.trigger("last"));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=i(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=i(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=i(this),d=c.data().f;a.stopPropagation();if(200>(new Date).getTime()-d.time||0>b.x||b.x> +i(this).width())a.preventDefault(),d.opts.turn.data().tpage=d.opts.next,d.opts.turn.turn("update"),i(c).flip("turnPage")},_flip:function(){var a=i(this).data().f.opts;a.turn.trigger("turn",[a.next])},calculateZ:function(a){var b,c,d,e,f=this,h=this.data();b=this.turn("view");var i=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==i.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=i("
",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}),h._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:i("#turn-fwrappers");a.fparent||(c=i("
",{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(i("body")),a.fparent=c);this.css({position:"absolute",top:0,left:0,bottom:"auto",right:"auto"});a.wrapper= +i("
",l(0,0,this.css("z-index"))).appendTo(b).prepend(this);a.fwrapper=i("
",l(b.offset().top,b.offset().left)).hide().appendTo(a.fparent);a.fpage=i("
",{css:{cursor:"default"}}).appendTo(i("
",l(0,0,0,"visible")).appendTo(a.fwrapper));a.opts.frontGradient&&(a.ashadow=i("
",l(0,0,1)).appendTo(a.fpage));h.setData.call(this,a);h.resize.call(this,!0)}},_fold:function(a){var b=this,c=0,d=0,e,f,i,g,v,H,n=j(0,0),p=j(0,0),k=j(0,0),r=this.width(),u=this.height(),l=h._foldingPage.call(this); +Math.tan(d);var o=this.data().f,w=o.opts.acceleration,y=o.wrapper.height(),q=h._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=h._c2.call(b,a.corner);m=Math.sqrt(Math.pow(m.x-a.x,2)+Math.pow(m.y-a.y,2));H=m