(function(b){var a=this;ConvertViewer=a.ConvertViewer=function(O,x){ConvertViewer.fn=ConvertViewer.prototype={init:function(X,W){if(X.nodeType){f=X;E=b(f);k=null;F=null;g=null;V=0;s=0;h=new Array();v=new Array();B=0;P=new u();b.extend(f,ConvertViewer.fn);b.extend(P,W);t=P.pageWidth;M();z();K();return f}if(typeof X=="string"){return ConvertViewer(document.getElementById(X),W)}return null},setOptions:function(W){b.extend(P,W)},scrollToPage:function(W){if(W>0&&W<=V&&typeof F!="undefined"&&typeof n!="undefined"){var X=parseInt((n.scrollWidth-n.clientWidth)/2);Q(h[W].top);s=W;F.trigger("scroll",{changeCurrentPage:false})}},appendPages:function(W){l(W);F.trigger("scroll",{changeCurrentPage:true});if(P.hasToolbar==true&&k!=null){k.find(".total-pages").html(" / "+V)}},getPageCount:function(){return V},zoomIn:function(){var W=Math.min(U.length-1,D+1);W=Math.max(0,W);k.find(".zoomSelect")[0].selectedIndex=W;r(W)},zoomOut:function(){var W=Math.min(U.length-1,D-1);W=Math.max(0,W);k.find(".zoomSelect")[0].selectedIndex=W;r(W)},redraw:function(){z()},CLASSNAME:"ConvertViewer"};var f,E,n,F,g,k,N;var P,w=0;var V,s,B,t;var h,v;var L,J;var S=false;var G=false;var U=[0.25,0.5,0.75,1,1.25,1.5,2,2.5,3];var D=3;return new ConvertViewer.fn.init(O,x);function u(){this.hasToolbar=true;this.pageHeight=200;this.pageWidth=200;this.pageBreakHeight=20;this.pageBorderSize=1;this.sentinelSize=500;this.imagePath="./files/web/";this.imageExt=".png";this.imagePrefix="books";this.imageLoading="/images/ajax-loader.gif";this.usePageCounter=true}function R(Y,X,W){this.width=X;this.height=W;this.bitmap=Y;this.isLoaded=false;this.Load=function(aa,Z){if(this.bitmap!=null&&this.bitmap.src==aa){if(typeof Z=="function"){Z(this.bitmap)}}else{if(this.bitmap==null){this.bitmap=new Image();var ab=this;this.bitmap.onload=function(){this.onload=function(){};ab.isLoaded=true;if(typeof Z=="function"){Z(this)}};ab.bitmap.src=aa}}};this.BuildHTML=function(){var Z="<img src='";if(this.isLoaded){Z+=this.bitmap.src}else{Z+=P.imageLoading}Z+="'";if(this.width>0&&this.height>0){Z+=" width='"+this.width+"' height='"+this.height+"'"}Z+=" />";return Z}}function T(X,Y,W){this.height=parseInt(W)+P.pageBorderSize*2;this.width=parseInt(Y)+P.pageBorderSize*2;this.top=0;if(X>1){this.top=h[X-1].top+W+P.pageBreakHeight}this.el=null;this.num=X;this.isRendered=false;this.pageImage=new R(null,0,0);this.BuildHTML=function(){return"<div class='page-wrap' style='top: "+this.top+"px; width: "+this.width+"px; height: "+this.height+"px;'><div id='page-"+this.num+"' class='page' >"+this.pageImage.BuildHTML()+"</div></div>"};this.Load=function(){this.isRendered=true;var aa=P.imagePath+P.imagePrefix+(P.usePageCounter?"_"+I(this.num.toString(),2,"0"):"")+P.imageExt;var ab=this;var Z=b(this.BuildHTML());this.el=Z;this.pageImage.Load(aa,function(ac){ab.pageImage.height=Math.round(ac.height*U[D]);ab.pageImage.width=Math.round(ac.width*U[D]);ab.SetSize(ab.pageImage.width+P.pageBorderSize*2,ab.pageImage.height+P.pageBorderSize*2);ab.el[0].innerHTML="<div id='page-"+ab.num+"' class='page' >"+ab.pageImage.BuildHTML()+"</div>"})};this.SetSize=function(ab,Z){if(this.width!=ab||this.height!=Z){var ad=Z-this.height;t=Math.max(ab,t);B+=ad;o(t,B);var aa=h[s].top-n.scrollTop;this.width=ab;this.height=Z;e();A();var ac=h[s].top-Math.floor(aa*U[D]);Q(ac)}}}function A(aa){var Z,X;for(var Y=0,W=v.length;Y<W;Y++){Z=v[Y];if(Z.el!=null){Z.el.css({top:Z.top,width:Z.width,height:Z.height})}if(typeof aa!="undefined"&&aa==true){X=Z.el.find("img");X.attr("width",Z.pageImage.width).attr("height",Z.pageImage.height)}}}function e(){for(var W=2,X=h.length;W<X;W++){h[W].top=h[W-1].top+h[W-1].height+P.pageBreakHeight}}function Q(X,W){G=true;if(typeof X!="undefined"&&n.scrollTop!=X){n.scrollTop=X}if(typeof W!="undefined"&&n.scrollLeft!=W){n.scrollLeft=W}G=false}function o(X,W){var Y=Math.floor((n.clientWidth-t)/2);if(Y<0){Y=0}g.css({left:Y,width:X,height:W});if(X<n.clientWidth){X=n.clientWidth}g.parent().css({width:X,height:W})}function r(W){var ac=null;W=Math.max(0,W);W=Math.min(U.length-1,W);if(W==D){return}D=W;var aa=0,X,af;var ae=t;t=0;var ad=n.scrollTop-h[s].top;for(var Z=1,ab=h.length;Z<ab;Z++){ac=h[Z];if(ac.pageImage.isLoaded){X=Math.round(ac.pageImage.bitmap.width*U[D]);ac.pageImage.width=X;af=Math.round(ac.pageImage.bitmap.height*U[D]);ac.pageImage.height=af}else{X=Math.round(P.pageWidth*U[D]);af=Math.round(P.pageHeight*U[D])}ac.width=X+2*P.pageBorderSize;ac.height=af+2*P.pageBorderSize;ac.top=aa;aa+=ac.height+P.pageBreakHeight;t=Math.max(ac.width,t)}B=aa;o(t,B);A(true);var Y=h[s].top+Math.floor(ad*U[D]);Q(Y)}function l(X){X=parseInt(X);for(var W=1;W<=X;W++){var Y=new T(V+W,P.pageWidth,P.pageHeight);h[V+W]=Y}V+=X;B+=X*(P.pageHeight+P.pageBreakHeight);o(t,B)}function C(){var X=[],W=0,Z=0;var Y=m();var aa;for(Z=0;Z<v.length;Z++){aa=v[Z];if(aa.isRendered&&(aa.num<Y.min||aa.num>Y.max)){X[W++]=Z;v[Z].isRendered=false;v[Z].el.remove();v[Z]=undefined}}for(Z=0;Z<X.length;Z++){v.splice(X[Z]-Z,1)}for(var ab=Y.max;ab>=Y.min;ab--){if(ab>0&&ab<=V){aa=h[ab];if(!aa.isRendered){aa.Load();aa.el.appendTo(g);v.push(aa)}}}}function m(){var W=new Object();W.min=q(n.scrollTop-P.sentinelSize);W.max=q(n.scrollTop+w+P.sentinelSize);return W}function q(X){if(V==0){return 0}var W=(typeof X=="undefined"?n.scrollTop:X);if(W<=0){return 1}if(W>n.scrollHeight){return V}var Y=W/(P.pageHeight+P.pageBreakHeight);Y=Math.max(1,Math.ceil(Y)+1);Y=Math.min(V,Y);while(Y+1<V&&h[Y].top<W){Y++}while(Y-1>0&&h[Y].top>W){Y--}return Y}function c(W){if(typeof W=="undefined"||parseInt(W)=="NaN"){W=s}N.value=s}function K(){F.bind("scroll",function(W){return d(W,{changeCurrentPage:true})});g.parent().mousedown(j);if(P.hasToolbar==true){k.find(".button .next").bind("click",function(){f.scrollToPage(s+1);return false});k.find(".button .begin").bind("click",function(){f.scrollToPage(1);return false});k.find(".button .end").bind("click",function(){f.scrollToPage(V);return false});k.find(".button .prev").bind("click",function(){f.scrollToPage(s-1);return false});k.find(".button .zoomin").bind("click",function(){f.zoomIn();return false});k.find(".button .zoomout").bind("click",function(){f.zoomOut();return false});k.find(".page-input").bind("keyup",y);k.find(".zoomSelect").bind("change",function(){r(this.options[this.selectedIndex].value)})}}function d(X,W){if(typeof X!="undefined"&&X){X.preventDefault()}if(G===true){return false}if(typeof W!="undefined"&&typeof W.changeCurrentPage!="undefined"&&W.changeCurrentPage===true){s=q()}C();c();return false}function y(W){switch(W.keyCode){case 13:f.scrollToPage(parseInt(W.currentTarget.value));return}}function j(X){g.parent().css("cursor",(b.browser.mozilla==true?"-moz-grabbing":"move"));S=true;L=X.pageX;J=X.pageY;var W=g.parent();W.bind("mouseup mouseleave",p).mousemove(i);X.preventDefault()}function p(X){g.parent().css("cursor",(b.browser.mozilla==true?"-moz-grab":"move"));S=false;X.preventDefault();var W=g.parent();W.unbind("mouseup mouseleave",p).unbind("mousemove",i);X.preventDefault()}function i(Y){if(S==true){var X=L-Y.pageX;var W=J-Y.pageY;L=Y.pageX;J=Y.pageY;Q(n.scrollTop+W,n.scrollLeft+X);Y.preventDefault();F.trigger("scroll",{changeCurrentPage:true})}}function z(){var X,W;w=E.height()-(P.hasToolbar==true?parseInt(k.css("height")):0);W=E.width();X=w;F.css({width:W,height:X});W=n.clientWidth;if(W<=0){W=parseInt(F.css("width"));if(W>0){W-=16}}g.parent().css({height:X});g.css({width:P.pageWidth,left:Math.floor((W-P.pageWidth)/2),height:0,top:0})}function M(){var W="";if(P.hasToolbar==true){W+=H()}W+='<div class="viewport"><div class="container-holder"><div class="container">';W+="</div></div></div>";f.innerHTML=W;k=E.find("#toolbar");N=k.find(".page-input")[0];F=E.find(".viewport");n=F[0];g=F.find(".container");F.css("cursor",(b.browser.mozilla==true?"-moz-grab":"move"))}function H(){var Z=-1,X=[];X[++Z]="<div id='toolbar-wrap'>";X[++Z]="<div id='viewer-status'></div>";X[++Z]="<div id='get-link'></div>";X[++Z]="<div id='toolbar'>";X[++Z]='<a href="#" class="inline-block button"><span class="begin"></span></a>';X[++Z]='<a href="#" class="inline-block button"><span class="prev"></span></a>';X[++Z]='<div class="inline-block input"><input type="text" class="page-input" value="0"/></div>';X[++Z]='<div class="inline-block text"><span class="total-pages"> / 0</span></div>';X[++Z]='<a href="#" class="inline-block button"><span class="next"></span></a>';X[++Z]='<a href="#" class="inline-block button"><span class="end"></span></a>';X[++Z]='<div class="inline-block separator"></div>';X[++Z]='<a href="#" class="inline-block button"><span class="zoomin"></span></a>';X[++Z]='<a href="#" class="inline-block button"><span class="zoomout"></span></a>';X[++Z]="<select name='zoomLevel' size='1' class='zoomSelect'>";for(var Y=0,W=U.length;Y<W;Y++){X[++Z]="<option value='"+Y;if(U[Y]==1){X[++Z]="' selected='selected"}X[++Z]="'>"+Math.round(U[Y]*100);X[++Z]="%</option>"}X[++Z]="</select>";X[++Z]="</div>";X[++Z]="<div class='clear'></div>";X[++Z]="</div>";return X.join("")}function I(aa,Y,ab){var Z="";var W=Y-aa.length;if(W>0){for(var X=0;X<W;X++){Z+=ab}aa=Z.concat(aa)}return aa}}})(jQuery);
