/* oneBook3d v 2.31; www.onebook3d.riadesign.ru swipe up,down,right,left (13.03.2015) automatic removal of old book in the target element; (29.10.2015) new options "startWithFullScreen"; (07.03.2017) fix chrome on macos without webgl; */ window['ONEBOOK3DTHEBEST'] = true; var ONEBOOK3D_ADDITIONAL_LANGUAGES = [{ lng:'it', save:'Salva', light:'Luminoso', dark:'Scuro', next:'Prossimo', prev:'Precedente', zoom:'Zoom', slope:'Inclina', fromfullscreen:'Rimpicciolisci', tofullscreen:'Ingrandisci', close:'Chiudi', left:'Sinistra', right:'Destra', toStart:'Alla Partenza', toEnd:'Alla Fine', goToHomelink:'Aprire home page', clickToOpen:'Clicca per aprire', useMousewheel:'Usa la rotellina del mouse', forEasyViewing:'Per visualizzare', askSaveImage:'Selezionare la pagina da salvare, per favore', or:'o' }]; (function($){ $.onebook = function (arrSrc,options,target) { var G_DATA = 'ONEBOOK3DGLOBALDATASTORAGE', target = target&&target!==$&&target.size?target:false; if(!window[G_DATA]){ window[G_DATA]={ FLIPS:{}, NUMBER:0, BOOKS:[], CURRENT:false, SUPERBOOK:false, SKIN:{}, queueBooksBuilding:[], buildNextBook:function(){ window[G_DATA].buildingNowFlag = true; var book = window[G_DATA].queueBooksBuilding.shift(); if(book){ if(book.target){ var oldbookName = $(book.target).attr('onebook3d'); if(oldbookName && window[G_DATA].BOOKS[oldbookName]){ var oldbook = window[G_DATA].BOOKS[oldbookName]; oldbook.exit(); } }; var BOOK_CONSTRUCTOR = $.extend( true, {}, OneBook3D ); BOOK_CONSTRUCTOR.init(book.arrSrc,book.options,book.target); }else{ window[G_DATA].buildingNowFlag = false; } }, GLOSSY:function(){ var gl, cnv = document.createElement('canvas'), names = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"]; for (var i=0;i0){ for (var i=0;i1?1:0; this.DARK_MODE = this.SKIN_ARRAY[targetSkin]==='light'?false:true; this.addStyle(); this.$gStage = this.getStage(); this.$gContainter = $('#'+this.divNames.book_container); this.$gBookLoader = $('#'+this.divNames.book_loader); this.$gGlossyContainter = $('#'+this.divNames.glossy_container); this.LNG = { save:['Save','Сохранить'], light:['Light','Светлый'], dark:['Dark','Темный'], prev:['Prev','Назад'], next:['Next','Далее'], zoom:['Zoom','Масштаб'], zoomclose:['Zoom','Масштаб'], slope:['Slope','Наклон'], fromfullscreen:['Smaller','Уменьшить'], tofullscreen:['Larger','Увеличить'], close:['Close','Закрыть'], left:['Left','Слева'], right:['Right','Справа'], toStart:['To start','В начало'], toEnd:['To end','В конец'], hlpGoToHomelink:['Open homepage','Открыть домашнюю страницу'], hlpClickToOpen:['Click to open','Открой меня'], hlpUseMousewheel:['Use mouse wheel
for easy viewing','Используйте колесо мыши
для листания'], hlpUseMousewheelGL:[['Use mouse wheel','for easy viewing'],['Используйте колесо','мыши для листания']], askSaveImage:['Select the page to save, please','Какое изображение сохранить?'], askSaveLinks:['Left or Right','Левое или Правое'] }; var lngs = ONEBOOK3D_ADDITIONAL_LANGUAGES; if(lngs && lngs.length>0){ for (var i=0;i'+lngs[i].forEasyViewing); this.LNG.hlpUseMousewheelGL.push([lngs[i].useMousewheel,lngs[i].forEasyViewing]); this.LNG.askSaveImage.push(lngs[i].askSaveImage); this.LNG.askSaveLinks.push(''+lngs[i].left+' '+lngs[i].or+' '+lngs[i].right+''); } }; this.BTNS_OFFSET = { save:[['-100px']], skin:[['-50px','0px'],['dark','light'],'DARK_MODE'], prev:[['-150px']], zoom:[['-200px']], next:[['-250px']], slope:[['-300px']], togglebook:[['-350px','-400px'],['toStart','toEnd'],'START_FROM_END'], close:[['-450px']], zoomclose:[['-450px']] }; this.BTNS_MINI_OFFSET = { save:[['-72px']], skin:[['-36px','0px'],['dark','light'],'DARK_MODE'], prev:[['-108px']], zoom:[['-144px']], next:[['-180px']], slope:[['-216px']], tofullscreen:[['-252px']], fromfullscreen:[['-288px']], togglebook:[['-324px','-360px'],['toStart','toEnd'],'START_FROM_END'], close:[['-396px']], zoomclose:[['-396px']] }; this.PANEL_TYPE = ''; this.LARGE_ICONS = false; this.FRDATA = FRDATA; this.FIRST_FRAME = 0; this.ARR_PAGES_SRC = []; this.ARR_PAGES_TITLE = []; this.getSrcAndTitles(this.IMAGES_SRC); if(!this.CFG.DIVIDE_IMAGES && this.ARR_PAGES_SRC.length%2>0){ this.ARR_PAGES_SRC.push(this.CFG.PAGE_DEFAULT_COLOR); }; this.START_FROM_END = 0; this.START_PAGE = this.options.startPage; this.GSCALE = 1; this.ALL_PAGES_MAP = []; this.ALLSHEETS = []; this.$ARR_SHEETS = []; this.GL_ARR_SHEETS = []; this.FIRST_IMAGE_SIZE = {w:0,h:0}; this.SHEETS_WAS_BUILT = []; this.SHEET_DISPLAYED = null; this.QUEUE_IMAGES_LOADED = []; this.IMG_NOW_LOADING = []; this.NOW_LOADING_COUNTER = 0; this.IMG_NOW_LOADING_FOR_ZOOM=[]; if(!this.options.cesh){ this.addCeshNames(Math.floor(Math.random()*10000)); }; this.ANIMATION_SLOPE = false; this.ZOOM_MODE = 0; this.STAGE = {width:0,height:0}; this.STAGE_CENTER = {top:0,left:0}; this.STAGE_BOUNDING_BOX = {width:0,height:0,top:0,left:0}; this.MAX_BOUNDS = {width:0,height:0,top:0,left:0}; this.ENVIRON = this.getEnviron(); var fn2 = { prepareAndStart:function(){ !_this.BOOK_INTERNAL && _this.build_background(); _this.prepareBookSize(); _this.prepareIconsPanelSize(); _this.prepareSkinImages(function(){ _this.findBookSizeByFirstImage(function(){ _this.fit3dDataToBookSize(); }); }); } }; var pause = this.options.startWithFullScreen ? 1000:100; setTimeout(function(){ fn2.prepareAndStart(); },pause); }, prepareBookSize:function(){ this.WINSIZE = {width:$(window).width(),height:$(window).height()}; this.TARGETSIZE = this.$TARGET?{left:this.$TARGET.offset().left,top:0,width:this.$TARGET.width(),height:100}:false; this.ZOOMSIZE = {height:this.WINSIZE.height,width:this.WINSIZE.width,top:0,left:0}; }, getString:function(arr){ var str=''; for(var i=0;idiv, \n', bookContainerName+' .back_image, \n', bookContainerName+' .back_image>div {', '-moz-transform-style: preserve-3d;', '-ms-transform-style: preserve-3d;', 'display:block;width:100%;height:100%;', 'top:0px;left:0px;position:absolute;', '-webkit-backface-visibility: hidden;', '-ms-backface-visibility: hidden;', '-moz-backface-visibility: hidden;', 'backface-visibility: hidden;}\n' ].join(''); styles += [ bookHelpLayer+'{', 'position:absolute;', 'outline: 1px solid transparent;', '-webkit-transform:translate3d(0px,0px,-1px);', '-moz-transform:translate3d(0px,0px,-1px);', '-ms-transform:translate3d(0px,0px,-1px);', 'transform:translate3d(0px,0px,-1px);', 'z-index:0;}\n' ].join(''); styles += bookHelpLayer + ' a {text-decoration:none;}'; styles += bookHelpLayer + ' a:hover {text-decoration:underline;}'; styles += bookHelpLayer + ' p {padding:20px 20px 20px 0px;margin:0px;}'; styles += bookHelpLayer + ' p span{display:block;margin-top:10px;}'; styles += bookHelpLayer + ' .hlpLeftSide {border:1px solid #cccccc;border-right:none;}\n'; styles += bookHelpLayer + ' .hlpRightSide {border:1px solid #cccccc;border-left:none;}\n'; styles += bookHelpLayer + ' .hlpLeftSide p span[name=home_link]{width:36px;height:30px;margin:10px 0px 0px auto;opacity:0.8;}'; styles += bookHelpLayer + ' .hlpLeftSide p span[name=click_to_open] a{font:21px arial;color:white;}'; styles += bookHelpLayer + ' .hlpLeftSide p span[name=use_mousewheel]{font:12px arial;color:#d4d4d4;}'; styles += bookHelpLayer + ' .hlpLeftSide p span[name=help_arrow]{width:55px;height:26px;margin:10px 0px 0px auto;opacity:0.8;}'; styles += bookHelpLayer + ' .hlpRightSide p span[name=goto_start] a{font:18px arial;color:white;}'; styles += bookHelpLayer + ' p.middleSize {padding:10px 10px 10px 0px;}'; styles += bookHelpLayer + ' p.middleSize span{margin-top:5px;}'; styles += bookHelpLayer + ' .hlpLeftSide p.middleSize span[name=click_to_open] a{font:16px arial;}'; styles += bookHelpLayer + ' .hlpRightSide p.middleSize span[name=goto_start] a{font:14px arial;}'; styles += bookHelpLayer + '.light .hlpLeftSide {border:1px solid #bfbfbf;border-right:none;}\n'; styles += bookHelpLayer + '.light .hlpRightSide {border:1px solid #bfbfbf;border-left:none;}\n'; styles += bookHelpLayer + '.light .hlpLeftSide p span[name=home_link]{opacity:0.4;}'; styles += bookHelpLayer + '.light .hlpLeftSide p span[name=click_to_open] a{color:#656565;}'; styles += bookHelpLayer + '.light .hlpLeftSide p span[name=use_mousewheel]{color:#656565;}'; styles += bookHelpLayer + '.light .hlpLeftSide p span[name=help_arrow]{opacity:0.4;}'; styles += bookHelpLayer + '.light .hlpRightSide p span[name=goto_start] a{color:#656565;}'; styles += [ bookLoaderName+'{', 'background:white url("'+this.AJAX_LOADER+'") center no-repeat;', 'position:absolute;top:0px;left:0px;width:90px;height:90px;', '-moz-border-radius:15px;', 'border-radius:15px;', 'opacity:0.5;display:none;', 'z-index:100;}\n' ].join(''); styles += [ zoomWaiter+'{', 'position:absolute;', 'width:100px;height:100px;', 'left:0px;top:0px;', 'z-index:300;}\n' ].join(''); styles += [ bookIconsPanel+'{', 'position:absolute;', 'top:0px;left:0px;text-align:center;', 'z-index:'+zIndex.bookIconsPanel+';}\n' ].join(''); styles += bookIconsPanel+' '+bookSpreadTitle+' p{font:14px arial;color:#aaaaaa;line-height:140%;margin:0px;}\n'; styles += bookIconsPanel+' '+bookSpreadTitle+' span{font:bold 14px arial;color:#ffffff;margin-right:8px;}\n'; styles += bookIconsPanel+'.light '+bookSpreadTitle+' p{color:#000000;}\n'; styles += bookIconsPanel+'.light '+bookSpreadTitle+' span{color:#888888;}\n'; styles += bookIconsPanel+' .btn_title{font:12px arial;color:#ffffff;padding:5px;white-space:nowrap;}\n'; styles += bookIconsPanel+'.light .btn_title{color:black;}\n'; styles += [ '.unselectable{', '-webkit-user-select:none;', '-khtml-user-select:none;', '-moz-user-select:none;', 'user-select: none;}\n' ].join(''); styles += [ '.noPointerEvents{', 'pointer-events:none;}\n' ].join(''); appendStyle(styles); }, getStage:function(){ var bookStageName = this.divNames.book_stage, bookContainerName = this.divNames.book_container, glossyContainer = this.divNames.glossy_container, bookLoaderName = this.divNames.book_loader, zoomWaiterName = this.divNames.zoom_waiter; var $gStage = $('#'+bookStageName); $gStage.size() && $gStage.remove(); var glossy = this.GLOSSY?'
':''; var tmpStage = [ '
', '
', glossy, '', '', "
" ].join(''); $('body').append(tmpStage); return $('#'+bookStageName); }, getGlStage:function(){ var gl = {}, width = this.$gStage.width(), height = this.$gStage.height(); this.$gGlossyContainter.css({width:width,height:height}); gl.container =document.getElementById(this.divNames.glossy_container); gl.renderer = new THREE.WebGLRenderer({ alpha: true , antialias: true}); gl.renderer.setSize(width, height); gl.container.appendChild(gl.renderer.domElement); gl.scene = new THREE.Scene(); var wh_ratio = width / height; gl.bookBase = new THREE.Object3D(); gl.bookBase.position.y = - (this.CFG.BOOK_GL_SIZE.height*this.CFG.ROTATE_CENTER_OFFSET_GL); gl.scene.add(gl.bookBase); gl.camera = new THREE.PerspectiveCamera( 33*2.25 / wh_ratio, wh_ratio, 0.1, 3000 ); gl.camera.position.z = 1200; gl.camera.position.y = 0; gl.scene.add(gl.camera); return gl; }, bookHide:function(){ this.$gStage.hide(); this.$gIconsPanel && this.$gIconsPanel.hide(); }, bookShow:function(){ this.$gStage.show(); this.$gIconsPanel && this.$gIconsPanel.show(); }, bgLoaderShow:function(show){ var $loader = this.$gBookBackground && this.$gBookBackground.find('div'); if(show){ if($loader && $loader.is(':hidden')){ $loader.show(); } }else{ if($loader && $loader.is(':visible')){ $loader.hide(); } } }, bookLoaderShow:function(show){ if(show){ if(this.$gBookLoader.is(':hidden')){ this.$gBookLoader.show(); } }else{ if(this.$gBookLoader.is(':visible')){ this.$gBookLoader.fadeOut(); } } }, exit:function(){ if(this.TMR_RESIZE){clearTimeout(this.TMR_RESIZE);this.TMR_RESIZE=null}; window[G_DATA].NUMBER-=1; window[G_DATA].SUPERBOOK=false; delete window[G_DATA].BOOKS[this.PRE_NAME]; this.zoomOut(); this.$gStage && this.$gStage.remove(); this.$gSaveMenu && this.$gSaveMenu.remove(); this.$gIconsPanel && this.$gIconsPanel.remove(); this.$gBookBackground && this.$gBookBackground.fadeOut('normal',function(){this.remove();}); this.CSS.remove(); $(window).unbind('.'+this.PRE_NAME); $(document).unbind('keyup.'+this.PRE_NAME); var parentBookName = this.options.parentBook; var currentSpread = this.CURRENT.spread; var currentSlopeMode = this.CURRENT.slope_mode; var updateOtherBooks = function(){ var books = window[G_DATA].BOOKS; for(var name in books){ if (books.hasOwnProperty(name)){ var parent = name === parentBookName; var BOOK = books[name]; var update = BOOK.isNeedResizeReposInternal(); if(parentBookName && parent){ var startPage = currentSpread?currentSpread*2:1; BOOK.START_PAGE = startPage; BOOK.slopeToggle(currentSlopeMode); window[G_DATA].CURRENT = BOOK.PRE_NAME; var gotoOtherSpread = BOOK.CURRENT.spread!==currentSpread; if(update==='resize'){ BOOK.restart(); }else{ update==='reposition' && BOOK.restart(update); gotoOtherSpread && BOOK.gotoSpread(currentSpread); } }else{ if(update){ BOOK.restart(update); } } } } }; updateOtherBooks(); }, restart:function(mode){ if(mode==='reposition'){ var targetSize = this.TARGETSIZE; var stageSize = this.STAGE; var left = Math.round ((targetSize.width-stageSize.width)/2 + targetSize.left); var ipWidth = this.getIconsPanelWidth(); var ipLeft = Math.round ((targetSize.width-ipWidth)/2 + targetSize.left); var menuLeft = Math.round ((targetSize.width-this.$gSaveMenu.width())/2 + targetSize.left); this.$gStage.css({left:left}); this.$gIconsPanel.css({left:ipLeft}); this.$gSaveMenu.css({left:menuLeft}); this.prepareBookSize(); this.calculateBounds(); }else{ this.zoomOut(); this.GSCALE = 1; this.SHEETS_WAS_BUILT = []; this.QUEUE_IMAGES_LOADED = []; this.IMG_NOW_LOADING = []; this.NOW_LOADING_COUNTER = 0; this.prepareBookSize(); this.prepareIconsPanelSize(); this.deleteAllGLSheets(); this.fit3dDataToBookSize(); //xxxx } }, deleteAllGLSheets:function(){ if(this.GLOSSY){ var sheetnums = []; for(var i in this.GL_ARR_SHEETS){ sheetnums.push(this.GL_ARR_SHEETS[i].num); }; for(var i=0;i', '', '
', '' ].join('')); }else{ var heightTitleSection = _this.CFG.ICONS_PANEL.titleSection; return $container = $([ '', '', '', '
 
' ].join('')); }; } }; var sizeMode = this.PANEL_TYPE; var iconsPanelWidth = this.getIconsPanelWidth(); var iconsPanelHeight = this.getIconsPanelHeight(); if(!sizeMode){ return; }; var $container = container.build(); var $panel = $('#'+bookIconsPanel); $panel.size() && $panel.remove(); var $panel = $('') .append($container).css({width:iconsPanelWidth,height:iconsPanelHeight}); $('body').append($panel); this.$gIconsPanel = $panel; !this.BOOK_INTERNAL && this.$gIconsPanel.mousewheel && this.$gIconsPanel.mousewheel(function(){return false;}); var $tmpl_br = $('
'); var $book3d_icons = $panel.find('.'+bookIconsContainer); this.$gSpreadTitle = $panel.find('.'+bookSpreadTitle); var fn = { skin:function(btnTitle){ _this.$gSaveMenu.hide(); if(!_this.ZOOM_MODE){ _this.toggleSkin(); } }, save:function(btnTitle){ if(!_this.ZOOM_MODE){ _this.saveImagesAs(); } }, next:function(btnTitle){ _this.gotoNext(); }, prev:function(btnTitle){ _this.gotoPrev(); }, zoom:function(btnTitle){ _this.$gSaveMenu.hide(); if(!_this.ZOOM_MODE){ _this.zoomIn(); } }, close:function(btnTitle){ _this.$gSaveMenu.hide(); if(!_this.ZOOM_MODE){ if(_this.fsapi.isFullScreen()){ _this.fsapi.exitFullScreen(); setTimeout(function(){ _this.exit(); },700); }else{ _this.exit(); } } }, fullScreen:function(btnTitle){ _this.$gSaveMenu.hide(); if(!_this.ZOOM_MODE){ if(_this.BOOK_INTERNAL){ //xxxx var options = $.extend(_this.options,{ startPage:_this.START_PAGE, parentBook:_this.PRE_NAME, slope:_this.CURRENT.slope_mode }); $.onebook(_this.IMAGES_SRC,options); }else{ if(_this.fsapi.isFullScreen()){ _this.fsapi.exitFullScreen(); }else{ _this.bookHide(); _this.bgLoaderShow(true); _this.fsapi.goFullScreen(); }; } } }, slope:function(btnTitle){ _this.$gSaveMenu.hide(); if(!_this.ZOOM_MODE){ _this.slopeAnimate(); } }, toggleBook:function(btnTitle){ _this.$gSaveMenu.hide(); _this.toggleBook(); } }; var fullscreenBtnTitle = _this.fsapi.isFullScreen()?'fromfullScreen':'tofullScreen'; if(sizeMode === 'tiny'){ var $centerIconSet = this.cloneIconsSet(); $centerIconSet.find('>div').append(this.buttonCreate('Prev',fn.prev)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Save',fn.save)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.pageNumbersCreate(sizeMode)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Slope',fn.slope)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate(fullscreenBtnTitle,fn.fullScreen)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Next',fn.next)); $book3d_icons.append($centerIconSet); $container.css({position:'absolute',zIndex:10,top:0,left:iconsPanelWidth/2-$centerIconSet.width()/2}); this.$gButtonsTitle = $panel.find('.btn_title'); }else if(sizeMode === 'small'){ var $leftIconSet = this.cloneIconsSet(); $leftIconSet.find('>div').append(this.buttonCreate('Save',fn.save)).append($tmpl_br.clone()); $leftIconSet.find('>div').append(this.pageNumbersCreate(sizeMode)).append($tmpl_br.clone()); $book3d_icons.append($leftIconSet.css({float:'left'})); var $centerIconSet = this.cloneIconsSet(); $centerIconSet.find('>div').append(this.buttonCreate('Prev',fn.prev)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Zoom',fn.zoom)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Next',fn.next)); $book3d_icons.append($centerIconSet); $centerIconSet.css({position:'absolute',zIndex:10,top:0,left:iconsPanelWidth/2-$centerIconSet.width()/2}); var $rightIconSet = this.cloneIconsSet(); $rightIconSet.find('>div').append(this.buttonCreate('togglebook',fn.toggleBook)).append($tmpl_br.clone()); $rightIconSet.find('>div').append(this.buttonCreate('Slope',fn.slope)).append($tmpl_br.clone()); $rightIconSet.find('>div').append(this.buttonCreate(fullscreenBtnTitle,fn.fullScreen)); $book3d_icons.append($rightIconSet.css({float:'right'})); this.$gButtonsTitle = $panel.find('.btn_title'); }else if(sizeMode === 'middle'){ var $leftIconSet = this.cloneIconsSet(); $leftIconSet.find('>div').append(this.buttonCreate('Save',fn.save)).append($tmpl_br.clone()); $leftIconSet.find('>div').append(this.buttonCreate('Skin',fn.skin)).append($tmpl_br.clone()); $leftIconSet.find('>div').append(this.pageNumbersCreate(sizeMode)).append($tmpl_br.clone()); $book3d_icons.append($leftIconSet.css({float:'left'})); var $centerIconSet = this.cloneIconsSet(); $centerIconSet.find('>div').append(this.buttonCreate('Prev',fn.prev)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Zoom',fn.zoom)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Next',fn.next)); $book3d_icons.append($centerIconSet); $centerIconSet.css({position:'absolute',zIndex:10,top:0,left:iconsPanelWidth/2-$centerIconSet.width()/2}); var $rightIconSet = this.cloneIconsSet(); $rightIconSet.find('>div').append(this.buttonCreate('togglebook',fn.toggleBook)).append($tmpl_br.clone()); $rightIconSet.find('>div').append(this.buttonCreate('Slope',fn.slope)).append($tmpl_br.clone()); $rightIconSet.find('>div').append(this.buttonCreate(fullscreenBtnTitle,fn.fullScreen)); $rightIconSet.find('>div').append($tmpl_br.clone()).append(this.buttonCreate('Close',fn.close)); $book3d_icons.append($rightIconSet.css({float:'right'})); this.$gButtonsTitle = $panel.find('.btn_title'); }else if(sizeMode === 'large'){ var $leftIconSet = this.cloneIconsSet(); $leftIconSet.find('>div').append(this.buttonCreate('Save',fn.save)).append($tmpl_br.clone()); $leftIconSet.find('>div').append(this.buttonCreate('Skin',fn.skin)).append($tmpl_br.clone()); $book3d_icons.append($leftIconSet.css({float:'left'})); var $centerIconSet = this.cloneIconsSet(); $centerIconSet.find('>div').append(this.buttonCreate('Prev',fn.prev)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Zoom',fn.zoom)).append($tmpl_br.clone()); $centerIconSet.find('>div').append(this.buttonCreate('Next',fn.next)); $book3d_icons.append($centerIconSet); $centerIconSet.css({position:'absolute',zIndex:10,top:0,left:iconsPanelWidth/2-$centerIconSet.width()/2}); var $rightIconSet = this.cloneIconsSet(); $rightIconSet.find('>div').append(this.buttonCreate('togglebook',fn.toggleBook)).append($tmpl_br.clone()); $rightIconSet.find('>div').append(this.buttonCreate('Slope',fn.slope)); if(!_this.$TARGET){ $rightIconSet.find('>div') .append($tmpl_br.clone()) .append(this.buttonCreate('Close',fn.close)); }; $book3d_icons.append($rightIconSet.css({float:'right'})); this.$gButtonsTitle = $panel.find('.btn_title'); }; this.changeSpreadTitle(); this.pageNumbersChange(); }, getHlpLayerGL:function(){ var skinMode = this.DARK_MODE?'dark':'light'; return { left:this.gGL&&this.gGL.helpLayers?this.gGL.helpLayers[skinMode].left:'', right:this.gGL&&this.gGL.helpLayers?this.gGL.helpLayers[skinMode].right:'' } }, toggleSkinHlpLayerGLTo:function(skinMode){ if(this.gGL&&this.gGL.helpLayers){ if(skinMode==='dark'){ this.gGL.helpLayers['dark'].left.material.opacity = 0; this.gGL.helpLayers['dark'].right.material.opacity = 0; this.gGL.helpLayers['light'].left.material.opacity = 1; this.gGL.helpLayers['light'].right.material.opacity = 1; }else{ this.gGL.helpLayers['dark'].left.material.opacity = 1; this.gGL.helpLayers['dark'].right.material.opacity = 1; this.gGL.helpLayers['light'].left.material.opacity = 0; this.gGL.helpLayers['light'].right.material.opacity = 0; } }; this.startRender(); }, toggleBook:function(){ if(!this.ZOOM_MODE && !this.ANIMATION_FLAG){ if(this.GLOSSY){ var glHlp = this.getHlpLayerGL(); }; if(this.START_FROM_END){ this.START_FROM_END = false; this.CURRENT.spread = 0; if(this.GLOSSY){ if(glHlp.left&&glHlp.right){ glHlp.left.material.opacity = 1; glHlp.right.material.opacity = 0; } }else{ this.$gHelpLayer.find('.hlpLeftSide').css({opacity:1}); this.$gHelpLayer.find('.hlpRightSide').css({opacity:0}); } }else{ this.START_FROM_END = true; this.CURRENT.spread = this.getTotalSheets(); if(this.GLOSSY){ if(glHlp.left&&glHlp.right){ glHlp.left.material.opacity = 0; glHlp.right.material.opacity = 1; } }else{ this.$gHelpLayer.find('.hlpLeftSide').css({opacity:0}); this.$gHelpLayer.find('.hlpRightSide').css({opacity:1}); } }; var arr = this.SHEETS_WAS_BUILT; for(var i in arr){ if (arr.hasOwnProperty(i)){ this.deleteSheet(i); } }; this.START_PAGE = this.CURRENT.spread*2?this.CURRENT.spread*2:1; this.buildAndPreloadSheets(); this.changeSpreadTitle(); this.pageNumbersChange(); this.$G_ARR_BUTTONS['togglebook'] && this.$G_ARR_BUTTONS['togglebook'].update(); } }, toggleSkin:function(){ var _this=this, $pageNumbers = $('#'+this.divNames.book_page_numbers), invertMode = this.DARK_MODE?'light':'dark', SKIN = window[G_DATA].SKIN; var fn = { btn_update:function(){ for(var i in _this.$G_ARR_BUTTONS){ _this.$G_ARR_BUTTONS[i].update(); }; }, hlp_update_images:function(){ if(!_this.GLOSSY){ _this.$gHelpLayer.find('span[name=home_link]').css({background:'url('+SKIN.HOME_LINK[invertMode].toDataURL()+') no-repeat center'}); _this.$gHelpLayer.find('span[name=help_arrow]').css({background:'url('+SKIN.HELP_ARROW[invertMode].toDataURL()+') no-repeat center'}); } } }; if(this.GLOSSY){ var glHlp = this.getHlpLayerGL(); }; if(this.DARK_MODE){ this.DARK_MODE = false; var bgImage = this.getHlpLayerBgImage(); this.$gBookBackground.addClass('light'); $pageNumbers.addClass('light'); this.$gIconsPanel.addClass('light'); if(this.GLOSSY){ this.toggleSkinHlpLayerGLTo('dark'); }else{ this.$gHelpLayer.addClass('light'); this.$gHelpLayer.find('.hlpLeftSide').css({background:'url('+bgImage.toDataURL()+')'}); this.$gHelpLayer.find('.hlpRightSide').css({background:'url('+bgImagetoDataURL()+')'}); }; fn.hlp_update_images(); fn.btn_update(); }else{ this.DARK_MODE = true; var bgImage = this.getHlpLayerBgImage(); this.$gBookBackground.removeClass('light'); $pageNumbers.removeClass('light'); this.$gIconsPanel.removeClass('light'); if(this.GLOSSY){ this.toggleSkinHlpLayerGLTo('light'); }else{ this.$gHelpLayer.removeClass('light'); this.$gHelpLayer.find('.hlpLeftSide').css({background:'url('+bgImage.toDataURL()+')'}); this.$gHelpLayer.find('.hlpRightSide').css({background:'url('+bgImage.toDataURL()+')'}); }; fn.hlp_update_images(); fn.btn_update(); }; }, cloneIconsSet:function(){ var $tmpl_icon_set = $('
'); return $tmpl_icon_set.clone(); }, pageNumbersCreate:function(sizeMode){ var id = this.divNames.book_page_numbers, p = this.CFG.ICONS_PANEL[sizeMode], width = p.pageNumbers.width, fontSize = p.pageNumbers.fontSize, light = !this.DARK_MODE?'class="light" ':'', $pn = $([ '
', '
' ].join('')); return $pn; }, pageNumbersChange:function(){ var id = this.divNames.book_page_numbers, from = this.CURRENT.spread, total_spreads = this.getTotalSheets(), currfrom = from+' / '+total_spreads; $('#'+id).find('span').html(currfrom); }, buttonCreate:function(title,fn,skinMode){ this.$G_ARR_BUTTONS = this.$G_ARR_BUTTONS?this.$G_ARR_BUTTONS:[]; var _this=this, title = title.toLowerCase(), skin = skinMode?skinMode.mode:(this.DARK_MODE?'dark':'light'); if(this.LARGE_ICONS){ var ICONS = window[G_DATA].SKIN.ICONS, B_OFFSET = this.BTNS_OFFSET, ic = this.CFG.ICONS_SIZE.big, book_btn = [ '', '', '
', '
', '
-
' ].join(''); }else{ var ICONS = window[G_DATA].SKIN.ICONS_MINI, B_OFFSET = this.BTNS_MINI_OFFSET, ic = this.CFG.ICONS_SIZE.small, book_btn = [ '
', '
', '' ].join(''); }; var getBtnParam = function(){ var param = B_OFFSET[title][0], multiple = param.length>1; if(multiple){ var conditionName = B_OFFSET[title][2], mode = _this[conditionName]?0:1, offset = B_OFFSET[title][0][mode], btnsTitle = B_OFFSET[title][1][mode]; }else{ var offset = param, btnsTitle = title; }; return { offset:offset, lngTitle:_this.getLNG(btnsTitle) } }; var btnOpacity = function(mode){ var opacityMode = _this.DARK_MODE?{start:0.7,end:1}:{start:0.8,end:0.5}; return opacityMode[mode]; }; var param = getBtnParam(), iconBackground = 'url('+ICONS[skin].toDataURL()+') no-repeat '+param.offset+' 0px', $tmpl_btn = $('
'+book_btn+'
'), $btn = $tmpl_btn.clone(), $div = $btn.find('.btn_image').css({background:iconBackground,opacity:btnOpacity('end')}).attr({title:param.lngTitle}), $title = $btn.find('.btn_title').html(param.lngTitle); $btn.hover(function(){$div.css({opacity:btnOpacity('start')})},function(){$div.css({opacity:btnOpacity('end')})}) .mousedown(function(){$div.css({backgroundPosition:param.offset+' 1px'});}) .mouseup(function(){ $div.css({backgroundPosition:param.offset+' 0px'}); fn&&fn(title); }); $btn.update = function(){ var param = getBtnParam(), skin = _this.DARK_MODE?'dark':'light', iconBackground = 'url('+ICONS[skin].toDataURL()+') no-repeat '+param.offset+' 0px', $div = this.find('.btn_image').css({background:iconBackground,opacity:btnOpacity('end')}).attr({title:param.lngTitle}); $div = this.find('.btn_title').html(param.lngTitle); }; this.$G_ARR_BUTTONS[title] = $btn; return $btn; }, gotoNext:function(){ this.$gSaveMenu.hide(); if(!this.ZOOM_MODE){ if(!this.ANIMATION_FLAG && !this.startDrag){ if(this.isDirectionCorrect('next')){ this.animateSheet('next'); } }else{ this.ORDER_TO_ANIMATE = 'next'; } } }, gotoPrev:function(){ this.$gSaveMenu.hide(); if(!this.ZOOM_MODE){ if(!this.ANIMATION_FLAG && !this.startDrag){ if(this.isDirectionCorrect('prev')){ this.animateSheet('prev'); } }else{ this.ORDER_TO_ANIMATE = 'prev'; } } }, zoomIn:function(coord){ var _this=this; if(this.ZOOM_MODE || this.ANIMATE_ZOOM){return false;}; this.ANIMATE_ZOOM = true; this.ZOOM_MODE = 1; var nm = this.divNames.zoom_layer; var $zoomLayer = $('#'+nm); $zoomLayer.size() && $zoomLayer.remove(); this.ZOOMSIZE = {height:$(window).height(),width:$(window).width(),top:0,left:0}; var s = this.ZOOMSIZE; s.top = $(document).scrollTop(); var zoomk = 0.8; var pre = {width:s.width*zoomk,height:s.height*zoomk}; pre.top = Math.floor(s.top+((s.height-pre.height)/2)); pre.left = Math.floor(s.left+((s.width-pre.width)/2)); var fn = { buildZoomLayer:function(){ var $zoomLayer = $('
') .css({ border:'1px solid white',position:'absolute', top:pre.top,left:pre.left,width:pre.width,height:pre.height, cursor:'pointer',opacity:0.5,zIndex:_this.CFG.ZINDEX.zoomLayer }).click(function(){ if(!_this.ANIMATE_ZOOM){ _this.zoomOut(); } }); $('body').append($zoomLayer); _this.$gZoomLayer = $('#'+nm); fn.animateZoomLayerAppear(); }, animateZoomLayerAppear:function(){ var w = s.width; var h = s.height; _this.$gZoomLayer.animate({ top:s.top,left:s.left, width:w,height:h,opacity:1 },200,function(){ $(this).css({opacity:0,border:'0px none',background:'#e5e5e5'}) .animate({opacity:1},300,function(){ _this.ANIMATE_ZOOM = false; _this.showZoomContent(coord); }); }); } }; fn.buildZoomLayer(); }, showZoomContent:function(firstCoord){ var _this = this, firstCoord = firstCoord, total_spreads = this.getTotalSheets(), cs = this.CURRENT.spread, isFirstPage = cs == 0, isLastPage = cs == total_spreads, zSize = this.ZOOMSIZE, borderSpace = 250, titleHeight = 85, cSize = {width:zSize.width,height:zSize.height-titleHeight,left:zSize.left,top:zSize.top}, pagesAmount = !isFirstPage && !isLastPage ?2:1; var bookSize = { height:this.CFG.BOOK_UNSCALED.height, width:this.CFG.BOOK_UNSCALED.width*pagesAmount }; var bookSmallerThanContent = bookSize.width', '
 
', '
 
', '
', '', '', '', '
'+this.CURRENT.spreadTitle+'
', '
' ].join(''); this.$gZoomLayer.html(tplContent); var $zoomContent = this.$gZoomLayer.find('.'+zoomContentClassName); var $zoomBehavior = this.$gZoomLayer.find('.'+zoomBehaviorSection).css({height:cSize.height}); var $zoomTitle = this.$gZoomLayer.find('.'+zoomTitleSpread).css({height:titleHeight}); var $zoomButtons = this.$gZoomLayer.find('.'+zoomButtonsClassName); var fn = { buttonsInsert:function(){ var $rightIconSet = _this.cloneIconsSet(); $rightIconSet.append(_this.buttonCreate('zoomClose',function(){},{mode:'light'})); $zoomButtons.append($rightIconSet.css({float:'right',margin:'8px 8px 0px 0px'})); }, calculateCoord:function(mouseCoord){ var coord = {x:mouseCoord.x-cSize.left,y:mouseCoord.y-cSize.top}; var percents = {vertical:100/(cSize.height/coord.y),horizontal:100/(cSize.width/coord.x)}; var top = percentSize.vertical*(percents.vertical)*-1+borderSpace; var left = percentSize.horizontal*(percents.horizontal)*-1+borderSpace; return {top:top,left:left}; }, moveContent:function(targetCoord){ $zoomPages.css({marginTop:targetCoord.top+'px',marginLeft:targetCoord.left+'px'}); }, contentToCenter:function(){ var frames = 20; var startX = parseFloat($zoomPages.css('marginLeft'))||0; var startY = parseFloat($zoomPages.css('marginTop'))||0; if(firstCoord && !bookSmallerThanContent){ var endCoord = this.calculateCoord(firstCoord); var endX = endCoord.left; var endY = endCoord.top; }else{ var endX = (bookSize.width-cSize.width)/2*-1; var endY = bookSize.height':''; }; var html = [ '', pages, '' ].join(''); $zoomContent.html(html); $zoomPages = $zoomContent.find('.zoom_pages'); fn.behaviors(); fn.insertSelfShadow(); fn.choosePageForLoading(); }, insertSelfShadow:function(){ var shadow = _this.SELFSHADOW_UNSCALED; var height=$zoomPages.height(); $zoomPages.find('.page_back').html('
 
'); $zoomPages.find('.page_front').html('
 
'); $zoomPages.fadeIn('normal'); fn.contentToCenter(); }, insertImageToZoomPage:function(image){ var page_class = image.side=='left'?'.page_back':'.page_front'; var sheet = image.side=='left'?cs-1:cs; var imgBackground = _this.buildResizedImage(_this.CFG.BOOK_UNSCALED,1,{ img:image.img, page:image.side=='left'?0:1, sheet:sheet },false); if(_this.CFG.DIVIDE_IMAGES){ var leftMargin = image.side=='left'?0:_this.CFG.BOOK_UNSCALED.width*-1; $zoomPages.find(page_class).css({background:'url("'+imgBackground.toDataURL()+'") '+leftMargin+'px 0px no-repeat'}); }else{ $zoomPages.find(page_class).css({background:'url("'+imgBackground.toDataURL()+'") no-repeat'}); } }, loadImageForZoomPage:function(src,side){ if(!_this.TMR_ZOOM){_this.TMR_ZOOM={};}; if(src.indexOf('.png')>-1 || src.indexOf('.jpg')>-1 || src.indexOf('.gif')>-1){ var img = new Image(); img.onload = function(){ var image = {img:this,src:src,side:side}; setTimeout(function(){ fn.insertImageToZoomPage(image) },10); }; _this.IMG_NOW_LOADING_FOR_ZOOM.push(img); img.src = src; } }, choosePageForLoading:function(){ if(!cs){ var pageNumber = 0; var src = _this.ARR_PAGES_SRC[pageNumber]; fn.loadImageForZoomPage(src,'right'); }else if(cs == total_spreads){ var pageNumber = total_spreads*2-1; var src = _this.ARR_PAGES_SRC[pageNumber]; fn.loadImageForZoomPage(src,'left'); }else{ var pageNumber = cs*2-1; var src = _this.ARR_PAGES_SRC[pageNumber]; fn.loadImageForZoomPage(src,'left'); var pageNumber = cs*2; var src = _this.ARR_PAGES_SRC[pageNumber]; fn.loadImageForZoomPage(src,'right'); } } }; fn.buttonsInsert(); fn.showEmptyPages(); }, zoomOut:function(){ if(!this.ZOOM_MODE){return false;}; this.ZOOM_MODE = 0; this.$gZoomLayer && this.$gZoomLayer.remove(); }, rotate_x_to:function(degree){ if(this.GLOSSY){ if(this.gGL ){ this.gGL.bookBase.rotation.x = degree*Math.PI/180 * (-1); this.startRender(); } }; var transform = 'translate3d(' + this.OFFSET.left + 'px,' + this.OFFSET.top + 'px,0px) rotateX('+degree+'deg)'; this.$gContainter.css({'transform':transform,'-webkit-transform':transform,'-moz-transform':transform,'-ms-transform':transform}); }, slopeAnimate:function(){ var _this=this; if(this.ANIMATION_SLOPE){return false;}; this.ANIMATION_SLOPE = true; var total = this.CFG.ARR_SLOPE_ANGLES.length; var curr = _this.CURRENT.slope_mode; var from = this.CFG.ARR_SLOPE_ANGLES[curr]; this.CURRENT.slope_mode = curr+1from?1:-1; var rotateRecursive = function(){ from+=k; setTimeout(function(){ if(from!=to){ _this.rotate_x_to(from); rotateRecursive(); }else{ _this.rotate_x_to(from); _this.ANIMATION_SLOPE = false; } },10); }; rotateRecursive(); }, slopeAnimateTo:function(direction){ var _this=this; if(this.ANIMATION_SLOPE){return false;}; this.ANIMATION_SLOPE = true; var total = this.CFG.ARR_SLOPE_ANGLES.length; var curr = _this.CURRENT.slope_mode; var from = this.CFG.ARR_SLOPE_ANGLES[curr]; if(direction==='up'){ if(curr+10){ this.CURRENT.slope_mode = curr-1; }else{ _this.ANIMATION_SLOPE = false; return false; } }; this.CFG.START_SLOPE_MODE = this.CURRENT.slope_mode; var to = this.CFG.ARR_SLOPE_ANGLES[this.CURRENT.slope_mode]; var k = to>from?1:-1; var rotateRecursive = function(){ from+=k; setTimeout(function(){ if(from!=to){ _this.rotate_x_to(from); rotateRecursive(); }else{ _this.rotate_x_to(from); _this.ANIMATION_SLOPE = false; } },10); }; rotateRecursive(); }, slopeToggle:function(num){ var _this=this, num = parseInt(num,10), angles = this.CFG.ARR_SLOPE_ANGLES; if(num0?(bookSize.width-1)/2:bookSize.width/2; }; var spaceSize = !this.$TARGET?this.WINSIZE:this.TARGETSIZE; if(this.BOOK_INTERNAL){ spaceSize.height = this.CFG.MAX_SCREEN_SIZE.height;}; var iconsPanelHeight = this.getIconsPanelHeight(); var screenSize = { w:Math.min(this.CFG.MAX_SCREEN_SIZE.width,spaceSize.width)-space.horizontal, h:Math.min(this.CFG.MAX_SCREEN_SIZE.height,spaceSize.height)-iconsPanelHeight - space.vertical }; var boundingBox = { w:2*bookSize.width + 2*this.CFG.PASPARTU_BEHAVIORS_PARAM.width, h:bookSize.height + 2*this.CFG.PASPARTU_BEHAVIORS_PARAM.height }; if(boundingBox.w>screenSize.w || boundingBox.h > screenSize.h){ var x_ratio = screenSize.w / boundingBox.w; var y_ratio = screenSize.h / boundingBox.h; var ratio = Math.min(x_ratio, y_ratio); }else{ var ratio = 1; }; this.GSCALE = ratio; bookUnscaled = {width:bookSize.width,height:bookSize.height}; bookSize.width = Math.round(bookSize.width*this.GSCALE); bookSize.height = Math.round(bookSize.height*this.GSCALE); var bookGLSize = {width:800,height:Math.round(bookSize.height*800/bookSize.width)}; var bezieArrayLength = this.FRAMES[0][0].bezie.length; var dataWidth = Math.abs(this.FRAMES[0][0].bezie[bezieArrayLength-1].x); var kscaled = bookSize.width/dataWidth; var kGLscaled = bookGLSize.width/dataWidth; var calculate = function(frames,k){ for(var i=0;i2.2?2.2:k; k = k<0.8?0.8:k; if(side==='left'){ ctx.beginPath(); ctx.moveTo(size.width,0); ctx.lineTo(0,0); ctx.lineTo(0,size.height); ctx.lineTo(size.width,size.height); ctx.stroke(); var hlpLeftImage = fn.hlpLeftImage(skin); ctx.drawImage(hlpLeftImage,size.width-hlpImageSize.width*k-20,size.height-hlpImageSize.height*k-20,hlpImageSize.width*k,hlpImageSize.height*k); }else{ ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(size.width,0); ctx.lineTo(size.width,size.height); ctx.lineTo(0,size.height); ctx.stroke(); var hlpRightImage = fn.hlpRightImage(skin); ctx.drawImage(hlpRightImage,size.width-hlpImageSize.width*k-20,size.height-hlpImageSize.height*k-20,hlpImageSize.width*k,hlpImageSize.height*k); }; return cnv.toDataURL(); }, hlpLeftImage:function(skin){ var lngHlpClickToOpen = _this.getLNG('hlpClickToOpen'), lngHlpUseMousewheel = _this.getLNG('hlpUseMousewheelGL'); var cnv = document.createElement('canvas'); cnv.width = hlpImageSize.width; cnv.height = hlpImageSize.height; var ctx = cnv.getContext("2d"); ctx.fillStyle = skin==='dark'?'rgba(255,255,255,1)':'rgba(0,0,0,1)'; ctx.font = "bold 20pt Arial"; ctx.textAlign = 'right'; ctx.fillText(lngHlpClickToOpen, hlpImageSize.width-10, hlpImageSize.height-155); ctx.fillStyle = skin==='dark'?'rgba(255,255,255,0.5)':'rgba(0,0,0,.5)'; ctx.font = "18pt Arial"; ctx.fillText(lngHlpUseMousewheel[0], hlpImageSize.width-10, hlpImageSize.height-110); ctx.fillText(lngHlpUseMousewheel[1], hlpImageSize.width-10, hlpImageSize.height-80); var arrowImage = SKIN.HELP_ARROW[skin], k=1.5; ctx.drawImage(arrowImage,cnv.width-arrowImage.width*k-10,cnv.height-arrowImage.height*k-20,arrowImage.width*k,arrowImage.height*k); return cnv; }, hlpRightImage:function(skin){ var lngHlpToStart = _this.getLNG('toStart'); var cnv = document.createElement('canvas'); cnv.width = hlpImageSize.width; cnv.height = hlpImageSize.height; var ctx = cnv.getContext("2d"); ctx.fillStyle = skin==='dark'?'rgba(255,255,255,1)':'rgba(0,0,0,1)'; ctx.font = "20pt Arial"; ctx.textAlign = 'right'; ctx.fillText(lngHlpToStart, hlpImageSize.width-10, hlpImageSize.height-10); return cnv; } }; var layerLeftLight = fn.PlainTextured({ src:fn.backgroundImage('left','light'), side:'left', skin:'light', onReady:function(plainMesh){ plainMesh.position.y = size.height*_this.CFG.ROTATE_CENTER_OFFSET_GL; plainMesh.position.z = -5; plainMesh.position.x = - size.width*0.5; _this.gGL.bookBase.add(plainMesh); } }); var layerRightLight = fn.PlainTextured({ src:fn.backgroundImage('right','light'), side:'right', skin:'light', onReady:function(plainMesh){ plainMesh.position.y = size.height*_this.CFG.ROTATE_CENTER_OFFSET_GL; plainMesh.position.z = -5; plainMesh.position.x = size.width*0.5; _this.gGL.bookBase.add(plainMesh); } }); var layerLeftDark = fn.PlainTextured({ src:fn.backgroundImage('left','dark'), side:'left', skin:'dark', onReady:function(plainMesh){ plainMesh.position.y = size.height*_this.CFG.ROTATE_CENTER_OFFSET_GL; plainMesh.position.z = -5; plainMesh.position.x = - size.width*0.5; _this.gGL.bookBase.add(plainMesh); } }); var layerRightDark = fn.PlainTextured({ src:fn.backgroundImage('right','dark'), side:'right', skin:'dark', onReady:function(plainMesh){ plainMesh.position.y = size.height*_this.CFG.ROTATE_CENTER_OFFSET_GL; plainMesh.position.z = -5; plainMesh.position.x = size.width*0.5; _this.gGL.bookBase.add(plainMesh); } }); this.gGL.helpLayers = {light:{left:layerLeftLight,right:layerRightLight},dark:{left:layerLeftDark,right:layerRightDark}}; }, correctStartPage:function(){ var verify_range = function(num,min,max){ if(nummax){num=max}; return num; }; this.START_PAGE = verify_range(this.START_PAGE,1,this.getTotalSheets()*2); this.CURRENT.spread = (this.START_PAGE - this.START_PAGE%2)/2; this.START_FROM_END = this.CURRENT.spread===this.getTotalSheets(); }, calculateSheets:function(){ if(!this.ALLSHEETS || !this.ALLSHEETS.length){ this.ALL_PAGES_MAP = []; var Sheets = []; if(!this.CFG.DIVIDE_IMAGES){ var totalPages = this.ARR_PAGES_SRC.length; }else{ if(this.ARR_PAGES_SRC.length<2){this.ARR_PAGES_SRC.push(this.CFG.PAGE_DEFAULT_COLOR);}; var totalPages = this.ARR_PAGES_SRC.length*2; var arr = []; arr.push(this.ARR_PAGES_SRC[0]); for(var i=1;i-1||this.ARR_PAGES_SRC[i].indexOf('.png')>-1 ||this.ARR_PAGES_SRC[i].indexOf('.gif')>-1; this.ALL_PAGES_MAP[i] = isImage?'image':'color'; }; var amountOfSheets = totalPages%2>0? (totalPages+1)/2 : totalPages/2; if(totalPages-1 || imgSrc.indexOf('.jpg')>-1 || imgSrc.indexOf('.gif')>-1){ this.ARR_PAGES_SRC[i] += ('?cash='+rnd); } }; }, getClonedData:function(){ return $.extend(true,{},{arr:this.FRDATA}).arr; }, getLNG:function(str){ var s = this.LNG[str]||this.LNG[str.toLowerCase()]; return s?s[this.CFG.LANGUAGE]:'unknown'; }, findBookSizeByFirstImage:function(nextFoo){ var _this=this; var firstImageSrc = ''; for(var i=0;i-1 || imgSrc.indexOf('.jpg')>-1 || imgSrc.indexOf('.gif')>-1){ firstImageSrc = imgSrc; } }; if(firstImageSrc!=''){ var image = new Image(); image.onload = function(){ _this.FIRST_IMAGE_SIZE = {w:this.width,h:this.height}; nextFoo&&nextFoo(); }; image.src = firstImageSrc; }else{ } }, isNeedResizeReposInternal:function(){ if(this.BOOK_INTERNAL){ var $t = this.$TARGET; var newsize = {top:0,left:$t.offset().left,width:$t.width(),height:100}; var oldsize = this.TARGETSIZE; this.TARGETSIZE = newsize; if(newsize.width!==oldsize.width){ return 'resize'; }else if(newsize.left!==oldsize.left){ return 'reposition'; }else{ return false; } }else{ return false; } }, behavior:function(){ var _this=this; this.startDrag = false; if(!this.HAS_BEHAVIORS){ $(window).bind('resize.'+this.PRE_NAME,function(){ _this.zoomOut(); if(_this.TMR_RESIZE){clearTimeout(_this.TMR_RESIZE);_this.TMR_RESIZE=null}; _this.TMR_RESIZE = setTimeout(function(){ if(_this.BOOK_INTERNAL){ if(!window[G_DATA].SUPERBOOK){ var update = _this.isNeedResizeReposInternal(); update && _this.restart(update); } }else{ _this.restart(); } },300); }); $(document).bind('keyup.'+this.PRE_NAME,function(event){ if(window[G_DATA].CURRENT === _this.PRE_NAME){ if(event.keyCode===39){ _this.gotoNext(); }else if(event.keyCode===37){ _this.gotoPrev(); } } }); this.HAS_BEHAVIORS=true; }; var zoomWaiterCanvas = { id:this.PRE_NAME+'canvasZoomWaiter', size:this.CFG.ZOOM_WAITER_SIZE, create:function(){ _this.$gZoomWaiter = $('#'+_this.divNames.zoom_waiter).css({width:this.size,height:this.size}); _this.$gZoomWaiter.html(''); _this.gZoomWaiterContext = document.getElementById(this.id) && document.getElementById(this.id).getContext('2d'); } }; zoomWaiterCanvas.create(); var waiter = { size:this.CFG.ZOOM_WAITER_SIZE, radius:25, draw:function(gr){ var s = this.size; var r = this.radius; var drawCircle = function(ctx){ ctx.clearRect(0,0,s,s); ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = '#c7c7c7'; var center = s/2; var ang = (gr-90)*Math.PI/180; var ang1= -1.5707963267948966; ctx.arc(center,center,r,ang1,ang); ctx.stroke(); }; _this.gZoomWaiterContext && drawCircle(_this.gZoomWaiterContext); }, show:function(){ var stageSize = _this.STAGE_BOUNDING_BOX; var m = _this.MOUSE.startDragCoord; _this.$gZoomWaiter.css({top:m.y-30-stageSize.top,left:m.x-30-stageSize.left}).show(); }, hide:function(){ _this.$gZoomWaiter.hide(); } }; var waiting_zoom = function(stop){ var i=0,tmr,p={time:20,start:5,pause:40},k=360/(p.time-p.start),started=false; (waiting_zoom = function(stop){ var fn = { stop_waiting:function(){ if(started){ started = false; waiter.hide(); if(i){ i=0; tmr && clearTimeout(tmr); tmr = null; } } }, verify:function(){ if(stop){ this.stop_waiting(); }else if(i>p.time-1){ this.stop_waiting(); if(!_this.GLOSSY){ _this.getSheetByIndex(_this.CURRENT.dragged_sheet).find('.wholeimage').show(); }; _this.ORDER_TO_ANIMATE = false; _this.stop_drag(); _this.zoomIn(_this.MOUSE.startDragCoord); }else{ started = true; i++; if(i===(p.start+1)){waiter.show()}; if(i>p.start){waiter.draw(k*(i-p.start))}; tmr = setTimeout(function(){waiting_zoom();},p.pause); } } }; fn.verify(); })(stop); }; var $bookStage = $('#'+_this.divNames.book_stage); $bookStage.unbind(); $bookStage.swipeMePls({ preventDefault: true, enableMouse: false, distance: 100, onSwipe:function(opt){ if(opt.direction==='right' || opt.direction==='left'){ var go = opt.direction==='right'?'gotoPrev':'gotoNext'; _this.clickSpeedIsOk()&&_this[go](); }else if(opt.direction==='up' || opt.direction==='down'){ _this.slopeAnimateTo(opt.direction); } } }); $bookStage .hover(function(){ _this.MOUSE.isOverStage = true; },function(){ _this.MOUSE.isOverStage = false; if(!_this.ANIMATION_FLAG){ if(_this.startDrag){ _this.stop_drag_and_animate(); } }; }); $bookStage .mousedown(function(e){ _this.LAST.mousemoved = false; if(!_this.ZOOM_MODE){ if(_this.ANIMATION_FLAG || !_this.isMouseOverPage()){ return false; }else{ waiting_zoom(); _this.start_drag(e); return false; } }else{ return false; } }); $bookStage .mouseup(function(){ if(!_this.ZOOM_MODE){ waiting_zoom('stop'); var direction = _this.CURRENT.hoverside==='front'?'next':'back'; if(_this.ANIMATION_FLAG){ if(!_this.LAST.mousemoved){ _this.ORDER_TO_ANIMATE = direction; }; return false; }else{ if(_this.startDrag){ _this.stop_drag_and_animate(); }; if(_this.GLOSSY && _this.GL_LINK_TO_START){ _this.gotoSpread(0); }; } }else{ return false; } }); $bookStage .mousemove(function(e){ _this.MOUSE.oldCoord = _this.MOUSE.lastCoord; _this.MOUSE.lastCoord = {x:e.pageX,y:e.pageY}; _this.calculateSideAndFrame(_this.MOUSE.lastCoord); _this.LAST.mousemoved = true; !_this.ZOOM_MODE && waiting_zoom('stop'); if(_this.ANIMATION_FLAG){ return false;}; if(_this.startDrag){ var mouseSpeedX = Math.abs(_this.MOUSE.oldCoord.x-_this.MOUSE.lastCoord.x); if(mouseSpeedX > _this.CFG.MAX_MOUSE_SPEED_X){ _this.stop_drag_and_animate(); return; }; var deltaX = Math.abs(_this.MOUSE.startDragCoord.x - _this.MOUSE.lastCoord.x); var drag_persent = Math.round(deltaX/_this.CFG.DRAG_PARAM.px_per_persent); var goto_frame = drag_persent + _this.START_DRAG_FRAME || 0; if(goto_frame > _this.CFG.MAX_FRAME_DRAGGABLE){ _this.stop_drag_and_animate(); return; }; _this.drag_sheet(goto_frame); } }); $bookStage.mousewheel && $bookStage.mousewheel(function(e,d){ if(_this.ANIMATION_FLAG || _this.startDrag){ return false; }else{ var go = d>0?'gotoPrev':'gotoNext'; if(_this.clickSpeedIsOk()){ _this[go](); }; return false; } }); }, clickSpeedIsOk:function(){ var newTime = new Date().getTime(); if(!this.G_TMR_SPEED_CLICK){ this.G_TMR_SPEED_CLICK = newTime; return true; }else{ var oldtime = this.G_TMR_SPEED_CLICK; var delta = newTime-oldtime; if(delta>1100){ this.G_TMR_SPEED_CLICK = newTime; return true; }else{ return false; } } }, start_drag:function(e){ this.MOUSE.startDragCoord = {x:e.pageX,y:e.pageY}; this.START_DRAG_FRAME = this.CURRENT.frame; this.startDrag = this.CURRENT.hoverside; var s = this.CURRENT.spread; this.CURRENT.dragged_sheet = this.startDrag=='front'?s:s-1; }, stop_drag_and_animate:function(){ var go = this.startDrag=='front'?'gotoNext':'gotoPrev'; this.CURRENT.dragged_sheet = -1; this.startDrag = false; this[go](); }, stop_drag:function(){ this.CURRENT.dragged_sheet = -1; this.startDrag = false; }, changeSpreadTitle:function(){ var cs = this.CURRENT.spread; var total = this.ARR_PAGES_TITLE.length; var titles = {left:"",right:""}; var spreadTitle = ''; if(cs===0){ var first_page = true; titles.right = this.ARR_PAGES_TITLE[0]||''; }else if(cs*2-1 == total){ var last_page = true; titles.left = this.ARR_PAGES_TITLE[cs*2-1]||''; }else{ titles.left = this.ARR_PAGES_TITLE[cs*2-1]||''; titles.right = this.ARR_PAGES_TITLE[cs*2]||''; }; if(first_page){ spreadTitle = '

'+titles.right+'

'; }else if(last_page){ spreadTitle = '

'+titles.left+'

'; }else{ var strLeft = this.getLNG('left'); var strRight = this.getLNG('right'); if(titles.left && titles.right){ spreadTitle = [ '

'+strLeft+': '+titles.left+'
', ''+strRight+': '+titles.right+'

' ].join(''); }else if(titles.left){ spreadTitle = '

'+strLeft+': '+titles.left+'

'; }else if(titles.right){ spreadTitle = '

'+strRight+': '+titles.right+'

'; }; }; this.CURRENT.spreadTitle = spreadTitle; this.$gSpreadTitle.html(spreadTitle); }, calculateBounds:function(){ var _this=this, p = _this.CFG.ICONS_PANEL, iconsPanelHeight = _this.getIconsPanelHeight(), s = _this.STAGE, d = !_this.$TARGET?_this.WINSIZE:_this.TARGETSIZE, targetPos = !_this.$TARGET?{top:0,left:0}:{top:_this.$TARGET.offset().top,left:_this.$TARGET.offset().left}, pasp_height = _this.CFG.PASPARTU_BEHAVIORS_PARAM.height * _this.GSCALE, icons_panel_offset = pasp_height*p.overlay_pr, top = Math.round((d.height - ( s.height + iconsPanelHeight - icons_panel_offset ))*0.5); top = !_this.BOOK_INTERNAL?top+$(document).scrollTop():0; this.STAGE_OFFSET = offset = { left:Math.round(d.width*0.5-s.width*0.5)+targetPos.left, top:top+targetPos.top }; this.STAGE_CENTER = { top:Math.round(offset.top + s.height*0.5), left:Math.round( offset.left + s.width*0.5 ) }; this.STAGE_BOUNDING_BOX = { width:s.width,height:s.height, top:offset.top,left:offset.left }; var iconsPanelRealWidth = this.$gIconsPanel.width(); this.ICONS_PANEL_BOUNDS = ipb = { width:iconsPanelRealWidth, height:this.$gIconsPanel.height(), left:d.width*0.5-iconsPanelRealWidth*0.5 + targetPos.left, top:offset.top + _this.STAGE.height - icons_panel_offset }; this.MAX_BOUNDS = { width:Math.max(_this.STAGE_BOUNDING_BOX.width,ipb.width), height:Math.round(ipb.top + ipb.height -_this.STAGE_BOUNDING_BOX.top), top:_this.STAGE_BOUNDING_BOX.top, left:Math.min(_this.STAGE_BOUNDING_BOX.left,ipb.left) }; }, stageToCenter:function(){ var _this=this; if(!this.STAGE){return;} if(this.tmrToCenter){clearTimeout(this.tmrToCenter);} this.$gStage.hide(); this.tmrToCenter = setTimeout(function(){ _this.calculateBounds(); _this.$gStage.css({top:_this.STAGE_OFFSET.top,left:_this.STAGE_OFFSET.left}).show(); _this.bgLoaderShow(false); var ipb = _this.ICONS_PANEL_BOUNDS, loader = {width:_this.$gBookLoader.width(),height:_this.$gBookLoader.height()}, saveMenu = {width:_this.$gSaveMenu.width(),height:_this.$gSaveMenu.height()}, stage = _this.STAGE; _this.$gIconsPanel.css({top:ipb.top,left:ipb.left,visibility:'visible'}); _this.$gBookLoader.css({top:stage.height*0.5-loader.height*0.5,left:stage.width*0.5-loader.width*0.5}); _this.$gSaveMenu.css({top:stage.height*0.5-saveMenu.height*0.5+_this.STAGE_OFFSET.top,left:stage.width*0.5-saveMenu.width*0.5+_this.STAGE_OFFSET.left}); _this.correctTargetHeight(); },100); }, correctTargetHeight:function(){ if(this.BOOK_INTERNAL){ this.$TARGET.css({height:this.MAX_BOUNDS.height}); this.$TARGET.attr('onebook3d',this.PRE_NAME); }; window[G_DATA].buildNextBook(); }, drag_sheet:function(frame){ var frame = frame<100?frame:100, sheet = this.CURRENT.dragged_sheet; if(this.GLOSSY){ var gl_sheet = this.getSheetByIndex(sheet), gl_edges = this.getEdgesFormSheet(sheet), forward = this.startDrag=='front'?1:0, SHEET_PARAM = {gl_sheet:gl_sheet,gl_edges:gl_edges,forward:forward}; }else{ var $sheet = this.getSheetByIndex(sheet), $edges = this.getEdgesFormSheet(sheet), forward = this.startDrag=='front'?1:0, SHEET_PARAM = {sheet:sheet,$edges:$edges,forward:forward}; if(this.SHEET_DISPLAYED===null){ this.SHEET_DISPLAYED = sheet; $sheet.find('.all_edges').show(); $sheet.find('.wholeimage').hide(); } }; this.moveSheetTo(frame,SHEET_PARAM); }, moveSheetTo:function(frame,param,DBG_NAME){ var _this = this, frame = frame||0, sheet = param.sheet, forward = param.forward, edgeOffset = 2, edges3d = _this.GLOSSY?this.FRAMES_GL_SCALED[forward][frame].edges3d:this.FRAMES[forward][frame].edges3d; if(!this.GLOSSY){ var $hlpLeft = this.$gHelpLayer.find('.hlpLeftSide'), $hlpRight = this.$gHelpLayer.find('.hlpRightSide'), totalSheets = this.getTotalSheets(); if(_this.startDrag && !sheet && forward){ $hlpLeft.css({opacity:(100-frame)/100}); }else if(_this.startDrag && sheet===totalSheets-1 && !forward){ $hlpRight.css({opacity:(100-frame)/100}); }; }else{ var glHlp = this.getHlpLayerGL(); var totalSheets = this.getTotalSheets(); if(glHlp.left&&glHlp.right){ if(_this.startDrag && !sheet && forward){ glHlp.left.material.opacity = (100-frame)/100; }else if(_this.startDrag && sheet===totalSheets-1 && !forward){ glHlp.right.material.opacity = (100-frame)/100; }; } }; if(this.GLOSSY){ var gl_edges = param.gl_edges; this.CURRENT.frame = frame; for(var m=0;m 50?100:mouse_over.y*2; }; if(absDeltaX>widthSensitive){mouse_over.x = Math.floor((this.STAGE_HALF.width-(absDeltaX-1))/kWidth);}; if(mouse_over.x > 100){mouse_over.x = 100}; var strong = Math.round((mouse_over.x*0.8+20)/100*mouse_over.y); this.CURRENT.hoverside = deltaX<0?'back':'front'; this.CURRENT.hoverframe = Math.round(this.CFG.SHEETS_SENSIVITY/100*strong); this.LAST.sheet = this.CURRENT.sheet; this.CURRENT.sheet = this.CURRENT.hoverside === 'front'?this.CURRENT.spread:this.CURRENT.spread-1; if(this.GLOSSY){ if(this.CURRENT.sheet == this.ALLSHEETS.length){ if(deltaX > this.CFG.BOOK_SIZE.width*0.75 && deltaY > this.STAGE_HALF.height*0.5){ _this.$gStage.addClass('pointer'); _this.GL_LINK_TO_START = true; }else{ _this.GL_LINK_TO_START = false; _this.$gStage.removeClass('pointer'); } } } }catch(e){ } }, getEdgesFormSheet:function(sheetIndex){ if(this.GLOSSY){ var gl_sheet = this.GL_ARR_SHEETS[sheetIndex]; if(gl_sheet && gl_sheet.mesh){ gl_sheet.mesh.position.z = 1*this.CFG.GL_DEPTH_STEP; return gl_sheet.mesh.children; }else{ return false; } }else{ var $sheet = this.$ARR_SHEETS[sheetIndex]; if($sheet && $sheet.size()){ $sheet.css({zIndex:20000}); return $sheet.find('div'); }else{ return false; } } }, getSheetByIndex:function(sheetIndex){ return this.GLOSSY? this.GL_ARR_SHEETS[sheetIndex] : this.$ARR_SHEETS[sheetIndex]; }, isMouseOverPage:function(){ if(!this.MOUSE.isOverStage){ return false; }; var isFirstPage = this.CURRENT.spread == 0; var isLastPage = this.CURRENT.spread == this.getTotalSheets(); if(!isFirstPage && !isLastPage){ return true; }else if(isFirstPage && this.CURRENT.hoverside=='front'){ return true; }else if(isLastPage && this.CURRENT.hoverside=='back'){ return true; }else{ return false; } }, isDirectionCorrect:function(direction){ var dirNext = direction==='next'?1:0, maxspreads = this.ALLSHEETS.length; if(this.CURRENT.spread===0 && !dirNext){ return false; }else if(this.CURRENT.spread===maxspreads && dirNext){ return false; }else{ return true; } }, startOffsetDepth:function(forward,sheet){ var _this = this; if(this.GLOSSY){ var gl_sheet = this.getSheetByIndex(sheet), gl_sorted = this.getSheetsSortedBySide(); if(forward){ gl_sorted.sidesRight[0].mesh.position.z = 1*_this.CFG.GL_DEPTH_STEP; $.each(gl_sorted.sidesRight,function(i){ if(i){ this.mesh.position.z = ((i-1)*-1*_this.CFG.GL_DEPTH_STEP); } }); }else{ var size = gl_sorted.sidesLeft.length, count = 1; if(size){ for(var i=size;i>0;i--){ gl_sorted.sidesLeft[i-1].mesh.position.z = count*_this.CFG.GL_DEPTH_STEP; count-=1; } } } }else{ var $sheet = this.getSheetByIndex(sheet), $sidesLeft = this.$gContainter.find('.side-left'), $sidesRight = this.$gContainter.find('.side-right'); if(forward){ $sidesRight.eq(0).css({ '-webkit-transform':'translate3d(0px,0px,1px)', '-moz-transform':'translate3d(0px,0px,1px)', '-ms-transform':'translate3d(0px,0px,1px)', 'transform':'translate3d(0px,0px,1px)' }); $sidesRight.each(function(i){ if(i){ $(this).css({ '-webkit-transform':'translate3d(0px,0px,'+((i-1)*-1)+'px)', '-moz-transform':'translate3d(0px,0px,'+((i-1)*-1)+'px)', '-ms-transform':'translate3d(0px,0px,'+((i-1)*-1)+'px)', 'transform':'translate3d(0px,0px,'+((i-1)*-1)+'px)' }); }; }); }else{ var size = $sidesLeft.size(), count = 1; if(size){ for(var i=size;i>0;i--){ $sidesLeft.eq(i-1).css({ '-webkit-transform':'translate3d(0px,0px,'+count+'px)', '-moz-transform':'translate3d(0px,0px,'+count+'px)', '-ms-transform':'translate3d(0px,0px,'+count+'px)', 'transform':'translate3d(0px,0px,'+count+'px)' }); count-=1; } } } }; }, startRender:function(){ if(this.GLOSSY){ this.renderStartedAt = new Date(); } }, renderGL:function(){ var _this=this; requestAnimationFrame( function(){ var now = new Date(), time = now.getTime() - (_this.renderStartedAt.getTime()||0); if(time<3000){ _this.gGL.renderer.render(_this.gGL.scene,_this.gGL.camera); } _this.renderGL(); } ); }, getSheetsSortedBySide:function(){ if(this.GLOSSY){ var arr = this.GL_ARR_SHEETS, sidesLeft = [], sidesRight = []; for (var i in arr){ if(arr.hasOwnProperty(i)){ if(arr[i].sideClass === 'sideLeft'){ sidesLeft.push(arr[i]); }else{ sidesRight.push(arr[i]); } } }; return {sidesLeft:sidesLeft,sidesRight:sidesRight}; } }, endOffsetDepth:function(forward,sheet){ var _this = this; if(this.GLOSSY){ var gl_sheet = this.getSheetByIndex(sheet), gl_sorted = this.getSheetsSortedBySide(); if(this.GL_ARR_SHEETS.length){ if(forward){ var size = gl_sorted.sidesLeft.length; if(size){ for(var i=size;i>0;i--){ gl_sorted.sidesLeft[size-i].mesh.position.z = i*-1*_this.CFG.GL_DEPTH_STEP; }; }; gl_sorted.sidesRight[0].mesh.position.z = 0; }else{ var size = gl_sorted.sidesRight.length, count = size*-1; if(size){ for(var i=size;i>0;i--){ gl_sorted.sidesRight[i-1].mesh.position.z = count * _this.CFG.GL_DEPTH_STEP; count+=1; } }; gl_sorted.sidesLeft[gl_sorted.sidesLeft.length-1].mesh.position.z = 0; } } }else{ var $sheet = this.getSheetByIndex(sheet), $sidesLeft = this.$gContainter.find('.side-left'), $sidesRight = this.$gContainter.find('.side-right'); if(forward){ var size = $sidesLeft.size(); if(size){ for(var i=size;i>0;i--){ $sidesLeft.eq(size-i).css({ '-webkit-transform':'translate3d(0px,0px,'+(i*-1)+'px)', '-moz-transform':'translate3d(0px,0px,'+(i*-1)+'px)', '-ms-transform':'translate3d(0px,0px,'+(i*-1)+'px)', 'transform':'translate3d(0px,0px,'+(i*-1)+'px)' }); }; }; $sidesRight.eq(0).css({ '-webkit-transform':'translate3d(0px,0px,0px)', '-moz-transform':'translate3d(0px,0px,0px)', '-ms-transform':'translate3d(0px,0px,0px)', 'transform':'translate3d(0px,0px,0px)' }); }else{ var size = $sidesRight.size(), count = size*-1; if(size){ for(var i=size;i>0;i--){ $sidesRight.eq(i-1).css({ '-webkit-transform':'translate3d(0px,0px,'+count+'px)', '-moz-transform':'translate3d(0px,0px,'+count+'px)', '-ms-transform':'translate3d(0px,0px,'+count+'px)', 'transform':'translate3d(0px,0px,'+count+'px)' }); count+=1; } }; $sidesLeft.last().css({ '-webkit-transform':'translate3d(0px,0px,0px)', '-moz-transform':'translate3d(0px,0px,0px)', '-ms-transform':'translate3d(0px,0px,0px)', 'transform':'translate3d(0px,0px,0px)' }); } } }, animateSheet:function(direction){ if(!this.isDirectionCorrect(direction)){return;}; var _this=this, actualSheet = direction==='next'?this.CURRENT.spread:this.CURRENT.spread-1, forward = direction==='next'?1:0; var calculate = function(){ var frame = currenframe+1; var restframes = 100-frame; var r = restframes%step; restframes = r?restframes-r:restframes; var startframe = 100 - restframes; return startframe; }; if(_this.GLOSSY){ var gl_sheet = this.getSheetByIndex(actualSheet); }else{ var $sheet = this.getSheetByIndex(actualSheet); }; this.SHEET_DISPLAYED = actualSheet; this.ANIMATION_FLAG = true; var step = 4, currenframe = this.CURRENT.frame, sheet = forward?this.CURRENT.spread:this.CURRENT.spread-1, speed = this.ANIMATION.SPEED, totalSheets = this.getTotalSheets(); this.startOffsetDepth(forward,sheet); var frame = calculate(); if(_this.GLOSSY){ var gl_edges = _this.getEdgesFormSheet(sheet); var SHEET_PARAM = {sheet:sheet,gl_edges:gl_edges,forward:forward}; }else{ var $edges = _this.getEdgesFormSheet(sheet); var SHEET_PARAM = {sheet:sheet,$edges:$edges,forward:forward}; }; var fadeOutHelpLeft = this.CURRENT.spread===0 & forward, fadeInHelpLeft = this.CURRENT.spread===1 & !forward, fadeOutHelpRight = this.CURRENT.spread===totalSheets & !forward, fadeInHelpRight = this.CURRENT.spread===(totalSheets-1) & forward; if(!_this.GLOSSY){ var $hlpLeft = this.$gHelpLayer.find('.hlpLeftSide'); var $hlpRight = this.$gHelpLayer.find('.hlpRightSide'); }else{ var glHlp = this.getHlpLayerGL(); }; var animate = function(){ if(frame<101){ _this.moveSheetTo(frame,SHEET_PARAM); if(!_this.GLOSSY){ if(fadeOutHelpLeft){$hlpLeft.css({opacity:(100-frame)/100})}; if(fadeInHelpLeft){$hlpLeft.css({opacity:frame/100})}; if(fadeOutHelpRight){$hlpRight.css({opacity:(100-frame)/100})}; if(fadeInHelpRight){$hlpRight.css({opacity:frame/100})}; }else{ if(glHlp.left&&glHlp.right){ if(fadeOutHelpLeft){ glHlp.left.material.opacity = (100-frame)/100 ; }; if(fadeInHelpLeft){ glHlp.left.material.opacity = frame/100; }; if(fadeOutHelpRight){ glHlp.right.material.opacity = (100-frame)/100;}; if(fadeInHelpRight){ glHlp.right.material.opacity = frame/100; }; } }; setTimeout(function(){ frame+=step; animate(); },speed); }else{ _this.endOffsetDepth(forward,sheet); _this.switchCurrents(SHEET_PARAM); } }; if(this.GLOSSY){ animate(); }else{ $sheet.find('.all_edges').fadeIn('fast',function(){ $sheet.find('.wholeimage').hide(); animate(); }); } }, switchCurrents:function(SHEET_PARAM){ var _this = this, sheet = SHEET_PARAM.sheet, forward = SHEET_PARAM.forward, zIndex = forward?(sheet+1)*10:((this.ALLSHEETS.length-sheet))*10, prevSpread = this.CURRENT.spread; this.LAST.forward = forward; this.LAST.moved.forward = forward?0:1; if(_this.GLOSSY){ var gr = !forward?0:180, gl_sheet = this.getSheetByIndex(sheet); gl_sheet.sideClass = gl_sheet.sideClass==='sideLeft'?'sideRight':'sideLeft'; }else{ var gr = !forward?0:180, $sheet = this.getSheetByIndex(sheet), $wholeimage = $sheet.find('.wholeimage'), $all_edges = $sheet.find('.all_edges'); $sheet.css({zIndex:zIndex}).toggleClass('side-right').toggleClass('side-left'); $wholeimage.css({'transform':'rotateY('+gr+'deg)','-webkit-transform':'rotateY('+gr+'deg)','-moz-transform':'rotateY('+gr+'deg)','-ms-transform':'rotateY('+gr+'deg)'}); }; this.CURRENT.spread += forward?1:-1; this.CURRENT.frame = 0; this.START_PAGE = _this.CURRENT.spread*2?_this.CURRENT.spread*2:1; this.buildAndPreloadSheets(); this.changeSpreadTitle(); this.pageNumbersChange(); this.bookLoaderShow(!this.didSpreadLoaded(this.CURRENT.spread)); var cs = this.CURRENT.spread; var total = this.ARR_PAGES_SRC.length; if(cs===0){ var first_page = true; }else if(cs*2 === total){ var last_page = true; }; // if(this.GLOSSY){ // if(last_page || first_page){ // this.$gHelpLayer.removeClass('noPointerEvents'); // }else{ // this.$gHelpLayer.addClass('noPointerEvents'); // }; // }; var orderDirection = this.ORDER_TO_ANIMATE; if(orderDirection && this.isDirectionCorrect(orderDirection)){ if(_this.GLOSSY){ _this.ORDER_TO_ANIMATE = false; _this.animateSheet(orderDirection); }else{ $wholeimage.fadeIn('fast',function(){ _this.SHEET_DISPLAYED = null; $all_edges.hide(); _this.ORDER_TO_ANIMATE = false; _this.animateSheet(orderDirection); }); } }else{ if(_this.GLOSSY){ _this.ORDER_TO_ANIMATE = false; _this.ANIMATION_FLAG = false; var isLastSpread = _this.CURRENT.spread===_this.getTotalSheets(); var btnToggleBook = _this.$G_ARR_BUTTONS['togglebook']; if(isLastSpread){ _this.START_FROM_END = true; btnToggleBook && btnToggleBook.update(); }else if(_this.CURRENT.spread===0){ _this.START_FROM_END = false; btnToggleBook && btnToggleBook.update(); } }else{ $wholeimage.fadeIn('fast',function(){ _this.SHEET_DISPLAYED = null; $all_edges.hide(); _this.ORDER_TO_ANIMATE = false; _this.ANIMATION_FLAG = false; var isLastSpread = _this.CURRENT.spread===_this.getTotalSheets(); var btnToggleBook = _this.$G_ARR_BUTTONS['togglebook']; if(isLastSpread){ _this.START_FROM_END = true; btnToggleBook && btnToggleBook.update(); }else if(_this.CURRENT.spread===0){ _this.START_FROM_END = false; btnToggleBook && btnToggleBook.update(); } }); } }; }, didSpreadLoaded:function(spread){ if(this.GLOSSY){ var gl_pageLeft = spread>0?this.GL_ARR_SHEETS[spread-1]:false; var gl_pageRight = spread0?this.$gContainter.find('.sheet'+(spread-1)):false; var $pageRight = spread', '
', '', '
', '
' ].join(''); $('body').append(tmpStage); this.$gBookBackground = $('#'+bookBgName); this.$gBookBackground.mousewheel && this.$gBookBackground.mousewheel(function(){return false;}); this.bgLoaderShow(true); }, buildSaveMenuLayer:function(){ this.$gSaveMenu&&this.$gSaveMenu.remove(); var _this=this, className = this.divNames.save_menu, widthMin = 230, width = this.STAGE.width*0.5, width = width', '

'+_this.getLNG('askSaveImage')+'

', '

'+_this.getLNG('askSaveLinks')+'

', '' ].join(''); this.$gSaveMenu = $(menuHtml); $('body').append(this.$gSaveMenu); }, buildHelpLayer:function(){ var _this=this, book = this.CFG.BOOK_SIZE, lngHlpGoToHomelink = this.getLNG('hlpGoToHomelink'), lngHlpClickToOpen = this.getLNG('hlpClickToOpen'), lngHlpUseMousewheel = this.getLNG('hlpUseMousewheel'), lngHlpToStart = this.getLNG('toStart'), sizeClass = book.width<150?'class="middleSize"':'', sizeMini = book.height<130, skinMode = this.DARK_MODE?'dark':'light', SKIN = window[G_DATA].SKIN; var hlpStart = []; hlpStart.push('

'); if(!sizeMini && !this.CFG.FV){ hlpStart.push('') }; hlpStart.push(''+lngHlpClickToOpen+''); hlpStart.push(''+lngHlpUseMousewheel+''); if(!sizeMini){hlpStart.push('')}; hlpStart.push('

'); hlpStart = hlpStart.join(''); var hlpEnd = []; hlpEnd.push('

'); hlpEnd.push(''+lngHlpToStart+''); hlpEnd.push('

'); hlpEnd = hlpEnd.join(''); var leftOpacity = this.START_PAGE<2?1:0; var rightOpacity = this.START_FROM_END?1:0; var bgImage = this.getHlpLayerBgImage(); var helpHTML = [ '
', '
'+hlpStart+'
', '
'+hlpEnd+'
', '
' ].join(''); var light = this.DARK_MODE?'':'class="light"'; this.$gHelpLayer = $('
') .css({ top:0,left:(book.width*-1)+'px', width:(book.width*2-2)+'px', height:(book.height-1)+'px' }).html(helpHTML) .find('span[name=click_to_open]').click(function(){_this.gotoNext();return false;}).end() .find('span[name=goto_start]').click(function(){_this.gotoSpread(0);return false;}).end(); this.$gContainter.html(this.$gHelpLayer); }, getHlpLayerBgImage:function(skinMode){ var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 100; var ctx = canvas.getContext('2d'); if(skinMode){ ctx.fillStyle = skinMode==='dark'?'rgba(0,0,0,0.2)':'rgba(255,255,255,0.2)'; }else{ ctx.fillStyle = this.DARK_MODE?'rgba(0,0,0,0.2)':'rgba(255,255,255,0.2)'; }; ctx.fillRect(0,0,canvas.width, canvas.height); return canvas; }, buildAndPreloadSheets:function(){ var _this=this; var fn = { buildColorSheet:function($sheet,colors,num_sheet){ var frame = 0, fw = num_sheet===currentSpread || num_sheet>currentSpread ?1:0, edges3d = _this.FRAMES[fw][frame].edges3d, $tplsheet = $(''); for(var m=0;m'; var frontEdge = ''; var $div = $('
' + backEdge + frontEdge+'
') .css({ position:'absolute',top:'0px',left:'0px',width:width+'px',height:_this.CFG.BOOK_SIZE.height+'px', 'transform':transform,'-webkit-transform':transform,'-moz-transform':transform,'-ms-transform':transform }); $tplsheet.append($div); }; $sheet.html($tplsheet); var wholeimage = [ '
', '
' ].join(''); var gr = fw?0:180; var size = _this.CFG.BOOK_SIZE; $sheet.append([ ''+wholeimage+'' ].join('')); }, fillSheetWithDefaultImages:function(i){ var isImages = [_this.ALLSHEETS[i].front,_this.ALLSHEETS[i].back]; for(var n=0;n-1 || imgSrc.indexOf('.jpg')>-1 || imgSrc.indexOf('.gif')>-1){ _this.createImageFromColor(_this.CFG.PAGE_DEFAULT_COLOR,i,n); }else{ _this.createImageFromColor(imgSrc,i,n); } } }, startLoadImagesForSheet:function(i){ var isImages = [_this.ALLSHEETS[i].front,_this.ALLSHEETS[i].back]; for(var n=0;n-1 || imgSrc.indexOf('.jpg')>-1 || imgSrc.indexOf('.gif')>-1){ _this.loadImageForPage(imgSrc,i,n); } } } }; var fnGL = { PlainTextured:function(options){ var white = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="; var transparent = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; var src = options.imageSrc || white; var color = options.color?options.color:0xffffff; var side = options.backSide ? THREE.BackSide:THREE.FrontSide; var plainMesh = new THREE.Mesh( new THREE.PlaneGeometry( options.size[0], options.size[1] ), new THREE.MeshBasicMaterial({map:THREE.ImageUtils.loadTexture( white ), side:side }) ); THREE.ImageUtils.loadTexture(src,undefined,function(texture){ plainMesh.material.map = texture; options.onReady && options.onReady(plainMesh); }); return plainMesh; }, buildColorSheet:function(sheet,colors){ var frame = 0, fw = sheet.num===currentSpread || sheet.num>currentSpread ?1:0, edges3d = _this.FRAMES_GL_SCALED[fw][frame].edges3d, height = _this.CFG.BOOK_GL_SIZE.height, zindex3d = sheet.zindex3d, total_edges = edges3d.length*2; if(!_this.READY_GL_EDGES){_this.READY_GL_EDGES=[]}; _this.READY_GL_EDGES[sheet.num]=[]; var fillsheet = function(numSheet){ _this.READY_GL_EDGES[numSheet].push(1); if(total_edges === _this.READY_GL_EDGES[numSheet].length){ fn.fillSheetWithDefaultImages(sheet.num); fn.startLoadImagesForSheet(sheet.num); } }; for(var m=0;mcurrentSpread, sideClass = fw?'sideRight':'sideLeft', sideName = fw?'right':'left', zindex3d = amountSheet[sideName]*-1*_this.CFG.GL_DEPTH_STEP; var sheet = { num:n, sideClass:sideClass, zindex3d:zindex3d, mesh:new THREE.Object3D(), }; var colors = _this.getColorsBySheet(n); _this.GL_ARR_SHEETS[n] = sheet; amountSheet[sideName]+=1; fnGL.buildColorSheet(sheet,colors); }; }; var buildSheets = function(n){ if(!_this.SHEETS_WAS_BUILT[n]){ _this.SHEETS_WAS_BUILT[n] = true; var fw = n===currentSpread || n>currentSpread, zIndex = fw?(_this.ALLSHEETS.length-n)*10:(n+1)*10, sideClass = fw?'side-right':'side-left', sideName = fw?'right':'left', zindex3d = amountSheet[sideName]*-1; var $sheet = $([ '
' ].join('')); if(fw){ _this.$gContainter.append($sheet); }else{ _this.$gHelpLayer.after($sheet); }; amountSheet[sideName]+=1; _this.$ARR_SHEETS[n] = $sheet; var colors = _this.getColorsBySheet(n); fn.buildColorSheet($sheet,colors,n); fn.fillSheetWithDefaultImages(n); fn.startLoadImagesForSheet(n); } }; var offset = 1.2, forward = this.LAST.forward, gif = this.GIF, numPreload = this.CFG.NUMBEROF_PRELOAD_SHEETS, totalSheets = this.ALLSHEETS.length, currentSpread = this.CURRENT.spread, isLastSpread = currentSpread == totalSheets, minSheet = currentSpread - numPreload, maxSheet = currentSpread + numPreload; if(this.GLOSSY){ var getCount = function(side){ var counter = 0, arr = _this.GL_ARR_SHEETS; for(var i in arr){ if (arr.hasOwnProperty(i)){ if(arr[i].sideClass===side){counter++;} } }; return counter; }; var amountSheet = { left:getCount('sideLeft'), right:getCount('sideRight') } }else{ var amountSheet = { left:this.$gContainter.find('.side-left').size(), right:this.$gContainter.find('.side-right').size() } }; if(isLastSpread){minSheet--}; minSheet = minSheet<0?0:minSheet; maxSheet = maxSheetcurrentSpread){ arrPageRight.push(i); }else{ arrPageleft.push(i); } }; return arrPageleft.reverse().concat(arrPageRight); }; var arr = getArraySheetNumbers(); for(var i=0;ithis.ALLSHEETS.length-1 || !this.SHEETS_WAS_BUILT[num]){return false}; this.SHEETS_WAS_BUILT[num] = false; if(this.IMG_NOW_LOADING[num*2]){ this.IMG_NOW_LOADING[num*2].src = this.GIF; this.IMG_NOW_LOADING[num*2].onload = false; }; if(this.IMG_NOW_LOADING[num*2+1]){ this.IMG_NOW_LOADING[num*2+1].src = this.GIF; this.IMG_NOW_LOADING[num*2+1].onload = false; }; if(this.GLOSSY){ var sheet = this.getSheetByIndex(num); if(sheet){ this.gGL.bookBase.remove(sheet.mesh); delete this.GL_ARR_SHEETS[num]; } }else{ this.$gContainter.find('div.sheet'+num).remove(); } }, getColorsBySheet:function(index){ var defaultColor = this.CFG.PAGE_DEFAULT_COLOR; var front = this.ALLSHEETS[index].front; front = front.indexOf('.')>-1 ? defaultColor:front; var back = this.ALLSHEETS[index].back; back = back.indexOf('.')>-1 ? defaultColor:back; var colors = {front:front,back:back}; return colors; }, createImageFromColor:function(src,sheet,page){ var _this = this; var colorImage = function(){ var canvas = document.createElement('canvas'); var w = _this.CFG.BOOK_SIZE.width, h = _this.CFG.BOOK_SIZE.height; canvas.width = !_this.CFG.DIVIDE_IMAGES?w:w*2; canvas.height = h; var ctx = canvas.getContext('2d'); ctx.fillStyle = 'rgba(0,0,0,0)'; ctx.fillRect(0,0,canvas.width, canvas.height); return canvas; }; this.shredAndFill({img:colorImage(),src:src,sheet:sheet,page:page}); }, loadImageForPage:function(src,sheet,page){ var _this = this; var pageNumber = sheet*2+page; this.NOW_LOADING_COUNTER++; this.IMG_NOW_LOADING[pageNumber] = new Image(); this.IMG_NOW_LOADING[pageNumber].onload = function(){ _this.NOW_LOADING_COUNTER--; _this.update_queue_loaded_images({img:this,src:src,sheet:sheet,page:page}); }; setTimeout(function(){ if(_this.IMG_NOW_LOADING && _this.IMG_NOW_LOADING[pageNumber]){ _this.IMG_NOW_LOADING[pageNumber].src = src; } },500); }, update_queue_loaded_images:function(imgWithParam){ var _this=this; var shift_queue = function(){ if(!_this.ANIMATION_FLAG){ var currentImgWithParam = _this.QUEUE_IMAGES_LOADED.shift() if(currentImgWithParam){_this.shredAndFill(currentImgWithParam);} }; if(_this.QUEUE_IMAGES_LOADED.length){ _this.TMR_QUEUE = setTimeout(function(){shift_queue();},10); } }; if(this.TMR_QUEUE){clearTimeout(this.TMR_QUEUE)}; this.QUEUE_IMAGES_LOADED.push(imgWithParam); shift_queue(); }, buildResizedImage:function(bookSize,scale,imgWithParam,isSelfShadow){ var str = this.getString([76,73,77,73,84,69,68,0,76,73,71,72,84,0,86,69,82,83,73,79,78]); var img = imgWithParam.img; var side = imgWithParam.page>0?'back':'front'; var colors = this.getColorsBySheet(imgWithParam.sheet); var sh = imgWithParam.sheet; var bgImage = document.createElement('canvas'); var w = bookSize.width; var h = bookSize.height; w = !this.CFG.DIVIDE_IMAGES?w:w*2; bgImage.width = w; bgImage.height = h; var ctx = bgImage.getContext('2d'); ctx.fillStyle = colors[side]; ctx.fillRect(0,0,w,h); var border = this.CFG.BORDER*scale; var insideWidth = bgImage.width - 2*border; var insideHeight = bgImage.height - 2*border; if(img.width>insideWidth || img.height > insideHeight){ var x_ratio = insideWidth / img.width; var y_ratio = insideHeight / img.height; var ratio = Math.min(x_ratio, y_ratio); var use_x_ratio = (x_ratio == ratio); var new_width = use_x_ratio ? insideWidth : Math.floor(img.width*ratio); var new_height = !use_x_ratio ? insideHeight : Math.floor(img.height*ratio); }else{ var new_width = img.width, new_height = img.height; }; ctx.drawImage(img,border,border,new_width,new_height); var total_spreads = this.getTotalSheets(), isFirstPage = imgWithParam.sheet===0 && imgWithParam.page===0, isLastPage = imgWithParam.sheet === total_spreads-1 && imgWithParam.page===1; if(isSelfShadow){ var imgShadow = this.SELFSHADOW[side]; if(!this.CFG.DIVIDE_IMAGES){ if(!isFirstPage && !isLastPage){ ctx.drawImage(imgShadow,0,0); } }else{ ctx.drawImage(imgShadow,imgWithParam.page>0?0:this.CFG.BOOK_SIZE.width,0); } }; if(this.GLOSSY){ var fv = this.CFG.FV; if(!fv && sh>parseInt(String.fromCharCode(50),10)){ var k=.7, w2 = 300, h2 = 82, vline = 20, hline = 30; var cnv2 = document.createElement('canvas'); cnv2.width = w2; cnv2.height = h2; var ctx2 = cnv2.getContext("2d"); ctx2.fillStyle = 'rgba(200,200,200,.4)'; ctx2.fillRect(10,10,cnv2.width-20, cnv2.height-20); ctx2.lineWidth = 10; ctx2.strokeStyle = 'rgba(200,200,200,.4)'; ctx2.beginPath(); ctx2.moveTo(hline,0);ctx2.lineTo(0,0);ctx2.lineTo(0,vline); ctx2.moveTo(w2-hline,0);ctx2.lineTo(w2,0);ctx2.lineTo(w2,vline); ctx2.moveTo(w2,h2-vline);ctx2.lineTo(w2,h2);ctx2.lineTo(w2-hline,h2); ctx2.moveTo(0,h2-vline);ctx2.lineTo(0,h2);ctx2.lineTo(hline,h2); ctx2.stroke(); ctx2.fillStyle = '#ffffff'; ctx2.font = "16pt Arial"; ctx2.textAlign = 'center'; ctx2.fillText(str, cnv2.width/2, 50); ctx.drawImage(cnv2,(bgImage.width)/2-cnv2.width*k/2,(bgImage.height)/2-cnv2.height*k/2,cnv2.width*k,cnv2.height*k); }; }; return bgImage; }, shredAndFill:function(imgWithParam){ var _this=this; if(!this.CFG.BOOK_SIZE.width || !this.CFG.BOOK_SIZE.height){ return false; }; var fn = { switchSheetLoadingStatus:function(){ var pageNumber = sheet*2+page; var noNeedImage = _this.ALL_PAGES_MAP[pageNumber]==='color'; if(_this.GLOSSY){ if(gl_sheet){ if(gl_sheet[side+'Loading']){ delete gl_sheet[side+'Loading']; gl_sheet[side+'Filled'] = true; }else{ if(noNeedImage){ gl_sheet[side+'Filled'] = true; }else{ gl_sheet[side+'Loading'] = true; } } } }else{ if($sheet.hasClass(side+'-loading')){ $sheet.removeClass(side+'-loading').addClass(side+'-filled'); }else{ if(noNeedImage){ $sheet.addClass(side+'-filled'); }else{ $sheet.addClass(side+'-loading'); } } } }, cutImagesAndInsertIntoEdges:function(img){ var sum = 0, imgHeight = img.height, imgWidth = img.width, left,width,cropWidth; for(var i=0;i imgWidth ? imgWidth-left : width; }else{ sum += width; left = imgWidth-sum; cropWidth = width; if(left<0){ cropWidth = width+left; left = 0; } } }else{ }; var canvas = document.createElement('canvas'); canvas.width=cropWidth; canvas.height=imgHeight; var ctx = canvas.getContext('2d'); if(_this.GLOSSY && side==='back'){ ctx.translate(cropWidth, 0) ctx.scale(-1,1); }; ctx.drawImage(img,left,0,cropWidth,imgHeight,0,0,cropWidth,imgHeight); var src = canvas.toDataURL(); var newimage = document.createElement('img'); newimage.src = src; sheetImages.push(newimage); }; if(_this.GLOSSY){ if(gl_sheet && gl_sheet.mesh){ var gl_edges = gl_sheet.mesh.children; $.each(gl_edges,function(i){ var edge = this.getObjectByName( side ); THREE.ImageUtils.loadTexture(sheetImages[i].src,undefined,function(texture){ if(edge){ edge.material.map = texture; } }); }); } }else{ var $wholeimage = $sheet.find('.wholeimage .'+side+'_image'), $wholeimage_inside = $wholeimage.find('div'), $edges = $sheet.find('.'+side), x_bg = side==='back'?-1:1; $wholeimage_inside.css({background:'url('+img.toDataURL()+') '+x_bg+'px 0px no-repeat'}); $wholeimage.css({background:'url('+img.toDataURL()+') 0px 0px no-repeat'}); $edges.each(function(i){ $(this).css({background:'url('+sheetImages[i].src+') no-repeat',backgroundSize:'100% 100%'}); }); }; } }; var edges3d = _this.FRAMES[0][this.FIRST_FRAME].edges3d; var sheetImages = []; var img = imgWithParam.img var page = imgWithParam.page; var sheet = imgWithParam.sheet; var side = page>0?'back':'front'; if(this.GLOSSY){ var gl_sheet = _this.GL_ARR_SHEETS[sheet]; }else{ var $sheet = this.$ARR_SHEETS[sheet]; }; this.startRender(); fn.switchSheetLoadingStatus(); var resizedImage = this.buildResizedImage(this.CFG.BOOK_SIZE,this.GSCALE,imgWithParam,'selfShadow'); fn.cutImagesAndInsertIntoEdges(resizedImage); this.bookLoaderShow(!this.didSpreadLoaded(this.CURRENT.spread)); }, saveImagesAs:function(){ var _this=this; var canvas2Blob = function(canvas){ var parts = canvas.toDataURL().match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/), binStr = atob(parts[3]), buf = new ArrayBuffer(binStr.length), view = new Uint8Array(buf); for (var i = 0; i < view.length; i++){view[i] = binStr.charCodeAt(i);}; return new Blob([view], {'type': parts[1]}); }; var fn = { loadImage:function(src){ var img = new Image(); img.onload = function(){ var canvas = document.createElement('canvas'); canvas.width = this.width; canvas.height = this.height; var ctx = canvas.getContext('2d'); ctx.drawImage(this,0,0,this.width,this.height); fn.saveImage(canvas); }; img.src = src; }, saveImage:function(canvas){ var URL = window.URL || webkitURL; var a = document.createElement('a'); var blob = canvas2Blob(canvas); a.download = "photo.png"; a.href = URL.createObjectURL(blob); document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function(){ URL.revokeObjectURL(blob); },100); }, showMenu:function(){ _this.$gSaveMenu.toggle(); } }; var isFirstPage = this.CURRENT.spread == 0, isLastPage = this.CURRENT.spread == this.getTotalSheets(), arrSrc = this.ARR_PAGES_SRC; if(isFirstPage){ fn.loadImage(arrSrc[0]); }else if(isLastPage){ fn.loadImage(arrSrc[arrSrc.length-1]); }else{ _this.$gSaveMenu.find('a').unbind().each(function(i){ $(this).click(function(){ var index = i?_this.CURRENT.spread*2:_this.CURRENT.spread*2-1; arrSrc[index] && fn.loadImage(arrSrc[index]); fn.showMenu(); return false; }) }); fn.showMenu(); } } }; var OneBookEditor = { init:function(options){ this.MATH = OneBookEditorMath.init(); this.onReady = options.onReady; this.ARR_ANIMATIONS = []; this.CURRENT_FLIP_NAME = options.flip||''; this.FLIP_NAMES = []; this.CURRENT_KEYFRAME = 1; this.CURRENT_LINE = 0; this.CFG = { SPEED_ANIMATION:15, BOOK_HEIGHT:300, YSCALETOP:0.3, YSCALE:0.08, BEZIE_ROUGH:window[G_DATA].GLOSSY?10:4, BOOK_ROTATE_X:0, ARR_BOOK_WIDTH:[] }; this.ARR_ANI = [ '