/*
 * jQuery viewbook plugin
 * Copyright (c) 2010 W. Grauvogel (http://builtbywill.com/)
 *
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version : 1.0.2
 *
 * Originally based on the work of:
 *	1) Charles Mangin (http://clickheredammit.com/pageflip/)
 */
(function(f){f.fn.viewbook=function(g){var h=f.extend({},f.fn.viewbook.defaults,g);return f(this).each(function(){var n,j,m,o,k,l;if(typeof g=="string"){if(f(this).data("viewbook")){n=g.toLowerCase();m=f.fn.viewbook.interfaces[f(this).data("id")];if(n=="next"){m.next()}else{if(n=="prev"){m.prev()}}}}else{if(typeof g=="number"){if(f(this).data("viewbook")){l=g;m=f.fn.viewbook.interfaces[f(this).data("id")];if(l%2!=0){l-=1}m.gotoPage(l)}}else{j=f.extend(true,{},h);o=f.fn.viewbook.interfaces.length;for(k=0;k<o;k++){if(typeof f.fn.viewbook.interfaces[k]=="undefined"){o=k;break}}m=new b(f(this),j,o);f.fn.viewbook.interfaces[o]=m;m.resetPages();m.updateCtrls()}}})};function b(h,J,S){var v,K,H,ab,af,ae,aa,ad,n=new Array(),m=new Array(),am=new Array(),l=new Array(),L=new Array(),Q=new Array(),P,ar,ap,an,aj,ai,A,I,w,aq,R,G,x,W,Z,D,U,T,u,O,M,Y,t,s,q,N,B,z,al,X,C,ao,k,ah,r,ag,o,F,ac,E,ak,V,g='<div class="vb-page-empty"></div>',y='<div class="vb-page-blank"></div>';ad=false;hovered=false;v=this;v.options=J;v.id=S;v.hash="";K=v.options;H=h.addClass("viewbook");H.find(".vb-load").children().each(function(j){if(f(this).children().length>0){n[j]=f(this).html()}else{n[j]=f(this)}if(f(this).attr("rel")){am[j]=f(this).attr("rel")}else{am[j]=""}m[j]=f(this).attr("title")});H.find(".vb-load").remove();if((n.length%2)!=0){if(K.closed&&K.covers){n[n.length]=n[n.length-1];am[n.length]=am[n.length-1];m[n.length]=m[n.length-1];n[n.length-2]=y;am[n.length-2]="";m[n.length-2]=""}else{n[n.length]=y;am[n.length]="";m[n.length]=""}}if(K.closed){l[0]=g;Q[0]=K.closedFrontChapter||"Beginning of Book";L[0]=K.closedFrontTitle||"Beginning";for(af=1;af<n.length+1;af++){l[af]=n[af-1];Q[af]=am[af-1];L[af]=m[af-1]}Q[Q.length-1]=K.closedBackChapter||"End of Book";L[L.length-1]=K.closedBackTitle||"End";l[l.length]=g;Q[Q.length]="";L[L.length]="";n=l;am=Q;m=L}H.data("viewbook",true);H.data("id",S);H.data("total",n.length);H.prepend('<div class="vb-pN vb-page"><div class="vb-wrap vb-wrap-left"></div></div><div class="vb-p1 vb-page"><div class="vb-wrap vb-wrap-left"></div></div><div class="vb-p4 vb-page"><div class="vb-wrap vb-wrap-right"></div></div><div class="vb-p2 vb-page"><div class="vb-wrap vb-wrap-right"></div></div><div class="vb-p3 vb-page"><div class="vb-wrap vb-wrap-left"></div></div><div class="vb-p0 vb-page"><div class="vb-wrap vb-wrap-right"></div></div><div class="vb-overlay vb-overlay-prev vb-prev" title="Previous Page"></div><div class="vb-overlay vb-overlay-next vb-next" title="Next Page"></div>');P=H.find(".vb-pN");ar=H.find(".vb-p0");ap=H.find(".vb-p1");an=H.find(".vb-p2");aj=H.find(".vb-p3");ai=H.find(".vb-p4");A=H.find(".vb-pN .vb-wrap");I=H.find(".vb-p0 .vb-wrap");w=H.find(".vb-p1 .vb-wrap");aq=H.find(".vb-p2 .vb-wrap");R=H.find(".vb-p3 .vb-wrap");G=H.find(".vb-p4 .vb-wrap");x=H.find(".vb-wrap");W=Z=null;U=H.find(".vb-overlay-next");T=H.find(".vb-overlay-prev");D=H.find(".vb-overlay");if(K.shadows){W=f('<div class="vb-shadow-f"></div>').appendTo(aj);Z=f('<div class="vb-shadow-b"></div>').appendTo(ar)}if(!K.width){K.width=H.width()}if(!K.height){K.height=H.height()}H.width(K.width);H.height(K.height);K.pWidth=K.width/2;K.pWidthN="-"+(K.width/2)+"px";K.pWidthH=K.width/4;K.pHeight=K.height;K.pTotal=n.length;K.speedH=K.speed/2;if(K.direction=="RTL"){ae=0,l=new Array(),L=new Array(),Q=new Array();for(af=K.pTotal-1;af>=0;af--){l[ae]=n[af];Q[ae]=am[af];L[ae]=m[af];ae++}n=l;am=Q;m=L}if(K.direction=="LTR"){K.curr=0}else{if(K.direction=="RTL"){K.curr=K.pTotal-2}}if(!isNaN(K.startingPage)&&K.startingPage<=K.pTotal&&K.startingPage>0){if((K.startingPage%2)!=0){K.startingPage--}K.curr=K.startingPage}if(K.name){document.title=K.name}else{K.name=document.title}if(K.shadows){K.shadowTopFwdWidth="-"+K.shadowTopFwdWidth+"px";K.shadowTopBackWidth="-"+K.shadowTopBackWidth+"px"}if(K.menu){al=f(K.menu).addClass("vb-menu");aa=K.curr;if(K.pageSelector){C=f('<div class="vb-selector vb-selector-page"><span class="vb-current">'+(aa+1)+" - "+(aa+2)+"</span></div>").appendTo(al);ao=f("<ul></ul>").appendTo(C).empty().css("height","auto");for(af=0;af<K.pTotal;af+=2){ae=af;nums=(ae+1)+"-"+(ae+2);if(K.closed){ae--;if(af==0){nums="1"}else{if(af==K.pTotal-2){nums=K.pTotal-2}else{nums=(ae+1)+"-"+(ae+2)}}if(K.covers){ae--;if(af==0){nums=""}else{if(af==K.pTotal-2){nums=""}else{nums=(ae+1)+"-"+(ae+2)}}}}if(K.direction=="RTL"){nums=(Math.abs(ae-K.pTotal)-1)+" - "+((Math.abs(ae-K.pTotal)));if(K.closed){if(af==K.pTotal-2){nums="1"}else{if(af==0){nums=K.pTotal-2}else{nums=(Math.abs(ae-K.pTotal)-3)+" - "+((Math.abs(ae-K.pTotal)-2))}}if(K.covers){if(af==K.pTotal-2){nums=""}else{if(af==0){nums=""}else{nums=(Math.abs(ae-K.pTotal)-5)+" - "+((Math.abs(ae-K.pTotal)-4))}}}}C.find(".vb-current").text(nums);ah=f('<li><a href="#/page/'+(af+1)+'" id="selector-page-'+af+'"><span class="vb-text">'+m[af+1]+'</span><span class="vb-num">'+nums+"</span></a></li>").prependTo(ao)}else{if(af==0){C.find(".vb-current").text(nums)}ah=f('<li><a href="#/page/'+(af+1)+'" id="selector-page-'+af+'"><span class="vb-text">'+m[af]+'</span><span class="vb-num">'+nums+"</span></a></li>").appendTo(ao)}r=ah.find("a");if(!K.hash){r.click(function(){if(K.direction=="RTL"){C.find(".vb-current").text(f(this).find(".vb-num").text())}ag=parseInt(f(this).attr("id").replace("selector-page-",""));v.gotoPage(ag);return false})}}k=ao.height();ao.css({height:0,"padding-bottom":0});C.unbind("hover").hover(function(){ao.stop().animate({height:k,paddingBottom:10},500)},function(){ao.stop().animate({height:0,paddingBottom:0},500)})}if(K.chapterSelector){X=am[K.curr];if(X==""){X=am[K.curr+1]}o=f('<div class="vb-selector vb-selector-chapter"><span class="vb-current">'+X+"</span></div>").appendTo(al);F=f("<ul></ul>").appendTo(o).empty().css("height","auto");for(af=0;af<K.pTotal;af+=1){if(am[af]!=""&&typeof am[af]!="undefined"){if(K.direction=="RTL"){ae=af;if(ae%2!=0){ae--}o.find(".vb-current").text(am[af]);E=f('<li><a href="#/page/'+(ae+1)+'" id="selector-page-'+(ae)+'"><span class="vb-text">'+am[af]+"</span></a></li>").prependTo(F)}else{E=f('<li><a href="#/page/'+(af+1)+'" id="selector-page-'+af+'"><span class="vb-text">'+am[af]+"</span></a></li>").appendTo(F)}ak=E.find("a");if(!K.hash){ak.click(function(){if(K.direction=="RTL"){o.find(".vb-current").text(f(this).find(".vb-text").text())}V=parseInt(f(this).attr("id").replace("selector-page-",""));v.gotoPage(V);return false})}}}ac=F.height();F.css({height:0,"padding-bottom":0});o.unbind("hover").hover(function(){F.stop().animate({height:ac,paddingBottom:10},500)},function(){F.stop().animate({height:0,paddingBottom:0},500)})}}f.extend(v,{next:function(){if(!ad){v.gotoPage(K.curr+2)}},prev:function(){if(!ad){v.gotoPage(K.curr-2)}},gotoPage:function(i){if(i>K.curr&&i<K.pTotal&&i>=0&&!ad){v.updateBefore(i);v.initAnim(G,R,true,W);an.stop().animate({width:0},K.speedH,K.easeIn);aj.stop().animate({left:K.pWidthH,width:K.pWidthH,paddingLeft:K.shadowBtmWidth},K.speedH,K.easeIn).animate({left:0,width:K.pWidth,paddingLeft:0},K.speedH);R.animate({left:K.shadowBtmWidth},K.speedH,K.easeIn).animate({left:0},K.speedH,K.easeOut,function(){v.updateAfter()})}else{if(i<K.curr&&i<K.pTotal&&i>=0&&!ad){v.updateBefore(i);v.initAnim(A,I,false,Z);ap.animate({left:K.pWidth,width:0},K.speed,K.easing);w.animate({left:K.pWidthN},K.speed,K.easing);ar.animate({left:K.pWidthH,width:K.pWidthH},K.speedH,K.easeIn).animate({left:K.pWidth,width:K.pWidth},K.speedH,K.easeOut);I.animate({right:K.shadowBtmWidth},K.speedH,K.easeIn).animate({right:0},K.speedH,K.easeOut,function(){v.updateAfter()})}}},resetPages:function(){x.css({width:K.pWidth-(K.pagePadding*2),height:K.pHeight-(K.pagePadding*2),padding:K.pagePadding});w.html(n[K.curr]).css({left:0,opacity:1});ap.css({left:0,width:K.pWidth,height:K.pHeight});aq.html(n[K.curr+1]);an.css({left:K.pWidth,width:K.pWidth,opacity:1,height:K.pHeight});A.html(n[K.curr-2]);P.css({left:0,width:K.pWidth,height:K.pHeight});I.html(n[K.curr-1]);ar.css({left:0,width:0,height:K.pHeight});R.html(n[K.curr+2]);aj.stop().css({left:K.pWidth*2,width:0,height:K.pHeight,paddingLeft:0});G.html(n[K.curr+3]);ai.css({left:K.pWidth,width:K.pWidth,height:K.pHeight});if(K.shadows){W.css({right:0,width:K.pWidth,height:K.pHeight});Z.css({left:0,width:K.pWidth,height:K.pHeight})}w.attr("class","vb-wrap vb-wrap-left");aq.attr("class","vb-wrap vb-wrap-right");if(K.closed&&K.curr==0){P.hide();w.attr("class","vb-wrap");if(K.covers){aq.attr("class","vb-wrap vb-page-cover")}}else{if(K.closed&&K.curr!=0&&K.curr<K.pTotal-2){P.show();w.attr("class","vb-wrap vb-wrap-left")}}if(K.closed&&K.curr>=K.pTotal-2){ai.hide();aq.attr("class","vb-wrap");if(K.covers){w.attr("class","vb-wrap vb-page-cover")}}else{if(K.closed&&K.curr<K.pTotal-2&&K.curr>0){ai.show();aq.attr("class","vb-wrap vb-wrap-right")}}if(K.pageNumbers){if(K.direction=="LTR"){aa=K.curr+1;if(!K.closed){e(w,aa);e(aq,aa+1)}else{if(!K.covers){if(K.curr!=0){e(w,aa-1)}if(K.curr<K.pTotal-2){e(aq,aa)}}else{if(K.curr!=0&&K.curr<K.pTotal-2){e(w,aa-2);e(aq,aa-1)}}}}else{if(K.direction=="RTL"){aa=Math.abs((K.pTotal-1)-K.curr);if(!K.closed){e(w,aa+1);e(aq,aa)}else{if(!K.covers){if(K.curr!=0){e(w,aa)}if(K.curr<K.pTotal-2){e(aq,aa-1)}}else{if(K.curr!=0&&K.curr<K.pTotal-2){e(w,aa-1);e(aq,aa-2)}}}}}}},initAnim:function(j,i,p,at){aa=K.curr;if(K.direction=="RTL"){aa=Math.abs((K.pTotal-1)-K.curr)-1}if(p){j.html(n[K.curr+1]);i.html(n[K.curr]);if(K.direction=="RTL"){af=i;i=j;j=af}}else{j.html(n[K.curr]);i.html(n[K.curr+1]);if(K.direction=="LTR"){af=i;i=j;j=af}}I.attr("class","vb-wrap vb-wrap-right");R.attr("class","vb-wrap vb-wrap-left");if(K.closed){if(!p&&K.curr==0){P.hide();if(K.covers){I.attr("class","vb-wrap vb-page-cover")}}else{if(!p){P.show()}}if(p&&K.curr>=K.pTotal-2){ai.hide();if(K.covers){R.attr("class","vb-wrap vb-page-cover")}}else{if(p){ai.show()}}}if(K.pageNumbers){if(!K.closed){e(j,aa+2);e(i,aa+1)}else{if(!K.covers){if(!p&&K.curr==0){if(K.direction=="RTL"){e(i,aa)}else{e(i,aa-1)}}else{e(i,aa)}if(p&&K.curr==K.pTotal-2){if(K.direction=="RTL"){e(j,aa+1)}else{e(j,aa)}}else{e(j,aa+1)}}else{if(K.curr>0&&K.curr<K.pTotal-2){e(j,aa);e(i,aa-1)}}}}if(K.shadows){if(f.support.opacity){at.animate({opacity:1},K.speedH,K.easeIn).animate({opacity:0},K.speedH,K.easeOut)}else{if(p){at.animate({right:K.shadowTopFwdWidth},K.speed,K.easeIn)}else{at.animate({left:K.shadowTopBackWidth},K.speed,K.easeIn)}}}},updateBefore:function(i){ad=true;K.curr=i;K.before.call(v);v.updatePager();v.updateCtrls();c(K.curr+1,K)},updateAfter:function(i){v.resetPages();v.updatePager();v.updateCtrls();K.after.call(v);ad=false},updateCtrls:function(){if(K.overlays||K.tabs||K.arrows){if(K.curr<K.pTotal-2){B.fadeIn("fast").css("cursor",K.cursor)}else{B.fadeOut("fast").css("cursor","default")}if(K.curr>=2&&K.curr!=0){z.fadeIn("fast").css("cursor",K.cursor)}else{z.fadeOut("fast").css("cursor","default")}}},updatePager:function(){if(K.pageSelector){if(K.direction=="RTL"){nums=(Math.abs(K.curr-K.pTotal)-1)+" - "+((Math.abs(K.curr-K.pTotal)));if(K.closed){if(K.curr==K.pTotal-2){nums="1"}else{if(K.curr==0){nums=K.pTotal-2}else{nums=(Math.abs(K.curr-K.pTotal)-2)+" - "+((Math.abs(K.curr-K.pTotal)-1))}}if(K.covers){if(K.curr==K.pTotal-2){nums=""}else{if(K.curr==0){nums=""}else{nums=(Math.abs(K.curr-K.pTotal)-3)+" - "+((Math.abs(K.curr-K.pTotal)-2))}}}}f(K.menu+" .vb-selector-page .vb-current").text(nums)}else{nums=(K.curr+1)+" - "+(K.curr+2);if(K.closed){if(K.curr==0){nums="1"}else{if(K.curr==K.pTotal-2){nums=K.pTotal-2}else{nums=(K.curr)+"-"+(K.curr+1)}}if(K.covers){if(K.curr==0){nums=""}else{if(K.curr==K.pTotal-2){nums=""}else{nums=(K.curr-1)+"-"+(K.curr)}}}}f(K.menu+" .vb-selector-page .vb-current").text(nums)}}if(K.chapterSelector){if(am[K.curr]!=""){f(K.menu+" .vb-selector-chapter .vb-current").text(am[K.curr])}else{if(am[K.curr+1]!=""){f(K.menu+" .vb-selector-chapter .vb-current").text(am[K.curr+1])}}if(K.direction=="RTL"&&am[K.curr+1]!=""){f(K.menu+" .vb-selector-chapter .vb-current").text(am[K.curr+1])}else{if(am[K.curr]!=""){f(K.menu+" .vb-selector-chapter .vb-current").text(am[K.curr])}}}},setupHash:function(){ab=d();if(!isNaN(ab)&&ab<=K.pTotal-1&&ab>=0&&ab!=""){if((ab%2)!=0){ab--}K.curr=ab}else{c(K.curr+1,K)}v.hash=ab},pollHash:function(){ab=d();if(!isNaN(ab)&&ab<=K.pTotal-1&&ab>=0){if(ab!=K.curr&&ab.toString()!=v.hash){if((ab%2)!=0){ab--}document.title=K.name+" - Page "+(ab+1);if(!ad){v.gotoPage(ab);v.hash=ab}}}}});if(K.next){q=f(K.next);q.click(function(i){i.preventDefault();v.next()})}if(K.prev){N=f(K.prev);N.click(function(i){i.preventDefault();v.prev()})}if(!K.overlays){D.remove()}else{if(f.browser.msie){D.css({background:"#fff",filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0) !important"})}}if(K.tabs){H.append('<div class="vb-tab vb-tab-prev vb-prev" title="Previous Page">Previous</div>');H.append('<div class="vb-tab vb-tab-next vb-next" title="Next Page">Next</div>');O=H.find(".vb-tab-next");M=H.find(".vb-tab-prev");u=H.find(".vb-tab");if(K.tabWidth){u.width(K.tabWidth)}if(K.tabHeight){u.height(K.tabHeight)}u.css({top:"-"+O.outerHeight()+"px"});H.css({marginTop:O.outerHeight()});if(K.direction=="RTL"){O.html("Previous").attr("title","Previous Page");M.html("Next").attr("title","Next Page")}}else{H.css({marginTop:0})}if(K.arrows){H.append('<div class="vb-arrow vb-arrow-prev vb-prev" title="Previous Page"><div>Previous</div></div>');H.append('<div class="vb-arrow vb-arrow-next vb-next" title="Next Page"><div>Next</div></div>');t=H.find(".vb-arrow-next");s=H.find(".vb-arrow-prev");Y=H.find(".vb-arrow");if(K.direction=="RTL"){t.html("<div>Previous</div>").attr("title","Previous Page");s.html("<div>Next</div>").attr("title","Next Page")}}B=H.find(".vb-next");z=H.find(".vb-prev");B.click(function(i){i.preventDefault();v.next()});z.click(function(i){i.preventDefault();v.prev()});if(K.hovers){B.hover(function(){if(!ad&&K.curr+2<K.pTotal){R.attr("class","vb-wrap vb-wrap-left");if(K.closed&&K.curr+2>=K.pTotal-2){ai.hide();if(K.covers){R.removeClass("vb-wrap-left").addClass("vb-page-cover")}}an.stop().animate({width:K.pWidth-40},500,K.easing);aj.stop().animate({left:K.width-40,width:20,paddingLeft:10},500,K.easing)}},function(){if(!ad&&K.curr+2<K.pTotal){an.stop().animate({width:K.pWidth},500,K.easing);aj.stop().animate({left:K.width,width:0,paddingLeft:0},500,K.easing)}});z.hover(function(){if(!ad&&K.curr-2>=0){if(!K.closed||(K.closed&&K.curr-2>0)){P.show()}else{if(K.closed&&K.curr-2==0){P.hide()}}if(K.covers){I.attr("class","vb-wrap vb-wrap-right");if(K.closed&&K.curr-2==0){I.removeClass("vb-wrap-right").addClass("vb-page-cover")}}ap.stop().animate({left:10,width:K.pWidth-10},400,K.easing);w.stop().animate({left:"-10px"},400,K.easing);ar.stop().animate({left:10,width:30},400,K.easing);I.stop().animate({right:10},400,K.easing)}},function(){if(!ad&&K.curr-2>=0){ap.stop().animate({left:0,width:K.pWidth},400,K.easing);w.stop().animate({left:0},400,K.easing);ar.stop().animate({left:0,width:0},400,K.easing);I.stop().animate({right:0},400,K.easing)}})}if(K.arrows){if(f.support.opacity){B.hover(function(){t.find("div").stop().fadeTo("fast",1)},function(){t.find("div").stop().fadeTo("fast",0)});z.hover(function(){s.find("div").stop().fadeTo("fast",1)},function(){s.find("div").stop().fadeTo("fast",0)})}else{B.hover(function(){t.find("div").show()},function(){t.find("div").hide()});z.hover(function(){s.find("div").show()},function(){s.find("div").hide()})}}if(K.keyboard){f(document).keyup(function(i){if(i.keyCode==37){v.prev()}else{if(i.keyCode==39){v.next()}}})}if(K.hash){v.setupHash();clearInterval();setInterval(function(){v.pollHash()},250)}v.gotoPage(K.curr)}function e(h,g){h.append('<div class="vb-counter">'+(g)+"</div>")}function d(){var g=window.location.hash.split("/");if(g.length>1){return parseInt(g[2])-1}else{return""}}function a(g){g=g||0;var h=window.location.hash.split("/");if(h.length>0){return h[g]}else{return""}}function c(h,g){if(g.hash){window.location.hash="/page/"+h}}f.fn.viewbook.interfaces=[];f.fn.viewbook.defaults={name:null,width:600,height:400,speed:1000,direction:"LTR",startingPage:0,easing:"easeInOutQuad",easeIn:"easeInQuad",easeOut:"easeOutQuad",closed:false,closedFrontTitle:null,closedFrontChapter:null,closedBackTitle:null,closedBackChapter:null,covers:false,pagePadding:10,pageNumbers:true,hovers:true,overlays:true,tabs:false,tabWidth:60,tabHeight:20,arrows:false,cursor:"pointer",hash:false,keyboard:true,next:null,prev:null,menu:null,pageSelector:false,chapterSelector:false,shadows:true,shadowTopFwdWidth:166,shadowTopBackWidth:166,shadowBtmWidth:50,before:function(){},after:function(){}}})(jQuery);
