var $estr = function() { return js.Boot.__string_rec(this,''); }; function $extend(from, fields) { function inherit() {}; inherit.prototype = from; var proto = new inherit(); for (var name in fields) proto[name] = fields[name]; return proto; } var CData = function() { }; CData.__name__ = true; CData.prototype = { __class__: CData } var FlipBook = function() { this.bFlipping = false; this.bShowBottomBar = true; this.bCanGestureZoom = true; this.bStartNoteGesture = false; this.currentNote = null; this.bStartNote = false; this.bStartHighLightGesture = false; this.currentHighLight = null; this.bStartHighLight = false; this.gestureLastY = -1; this.gestureLastX = -1; this.gestureMoveY = 0; this.gestureMoveX = 0; this.currentMoveY = 0; this.currentMoveX = 0; this.init_moveY = 0; this.init_moveX = 0; this.totalLast = 0; this.totalDistance = 0; this.last_moveY = 0; this.last_moveX = 0; this.page_offsetY = 0; this.page_offsetX = 0; this.realScale = 1; this.totalGeustureScale = 0; this.gestureScale = 1; this.startFingerDistance = 0; this.rightPageNum = -1; this.leftPageNum = -1; this.bookContext = new core.BookContext(); this.tweener = new core.Tweener(); this.currentPageNum = 0; this.zoomStatus = core.ZoomStatus.normal; }; FlipBook.__name__ = true; FlipBook.prototype = { f_sort: function(x,y) { if(x.pageNum > y.pageNum) return 1; if(x.pageNum == y.pageNum) return 0; return -1; } ,onButtonBookmark: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnBookMark) { this.hideTopBar(); return; } this.resetAndShowTopBar("bookmarks"); this.setTopTitle("BookmarkView"); this.currentTopBarButton = this.btnBookMark; var bookmarks = RunTime.book.bookmarks; var lv = !this.checkIfExistBookmark(this.leftPageNum) && this.leftPageNum != -1; var rv = !this.checkIfExistBookmark(this.rightPageNum) && this.rightPageNum != -1; bookmarks.sort($bind(this,this.f_sort)); var html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,lv,rv); if(RunTime.book.rightToLeft) html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,rv,lv); this.topBarContent.innerHTML = html; this.HideBarOnPhone(); } ,resetHighlightButton: function() { this.bStartHighLight = false; this.btnMask.style.backgroundColor = ""; } ,onAboutUsClick: function(e) { if(this.topMenuBarBg.style.opacity == 0) return; this.stopFlip(); if(this.currentTopBarButton == this.btnAboutUs) { this.hideTopBar(); return; } this.resetAndShowTopBar("about"); this.currentTopBarButton = this.btnAboutUs; this.setTopTitle("AboutUs"); if(RunTime.contentInfo != null) { var html = core.HtmlHelper.toAboutHtml(RunTime.aboutInfo,RunTime.bookInfo); this.topBarContent.innerHTML = html; this.topBarContent.style.display = "block"; } this.HideBarOnPhone(); } ,resetNoteButton: function() { this.bStartNote = false; this.btnNote.style.backgroundColor = ""; } ,onButtonNoteClick: function(e) { this.resetHighlightButton(); this.bStartNote = !this.bStartNote; if(this.bStartNote) this.btnNote.style.backgroundColor = "#ff00ff"; else this.btnNote.style.backgroundColor = ""; this.HideBarOnPhone(); } ,onButtonMaskClick: function(e) { this.resetNoteButton(); this.bStartHighLight = !this.bStartHighLight; if(this.bStartHighLight) this.btnMask.style.backgroundColor = "#ff00ff"; else this.btnMask.style.backgroundColor = ""; this.HideBarOnPhone(); } ,resetZoom: function() { this.startFingerDistance = 0; this.page_offsetX = 0; this.page_offsetY = 0; this.last_moveX = 0; this.last_moveY = 0; this.init_moveX = 0; this.init_moveY = 0; } ,updateVideoLayout: function() { var list = this.findVideoHtmlDoms(); var videos = new Array(); var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var dom = list[i]; var _g3 = 0, _g2 = RunTime.book.videos.length; while(_g3 < _g2) { var j = _g3++; var video = RunTime.book.videos[j]; if(video.id == dom.id) video.updateLayout(dom); } } } ,findVideoHtmlDoms: function() { var list = new Array(); if(this.cvsVideo != null) { var c = this.cvsVideo.childNodes; var _g1 = 0, _g = c.length; while(_g1 < _g) { var i = _g1++; list.push(c[i]); } } return list; } ,hackHtmlDom: function(item) { item.onclick = $bind(this,this.forbidden); item.ontouchstart = $bind(this,this.forbidden); item.ontouchmove = $bind(this,this.forbidden); item.ontouchend = $bind(this,this.forbidden); item.ontouchcancel = $bind(this,this.forbidden); item.gestureend = $bind(this,this.forbidden); item.gesturestart = $bind(this,this.forbidden); item.gesturechange = $bind(this,this.forbidden); item.onscroll = $bind(this,this.forbidden); item.onmousewheel = $bind(this,this.forbidden); item.ondblclick = $bind(this,this.forbidden); } ,attachVideoTouchEvents: function() { var list = this.findVideoHtmlDoms(); var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; } } ,showPopupAudio: function(item) { item.url = item.destination; var pageNum = item.pageNum; var audio = new core.AudioInfo(); audio.pageNum = pageNum; audio.url = item.destination; this.cvsLeftPageBgAudio.innerHTML = ""; this.cvsLeftPageBgAudio.innerHTML = core.HtmlHelper.toPopupPageAudiosHtml(audio,true); var item1 = js.Lib.document.getElementById("cvsLeftPageBgAudio").getElementsByTagName("audio")[0]; item1.play(); } ,loadCtxNotes: function() { var notes = new Array(); if(RunTime.book != null && RunTime.book.notes != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.notes.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.notes[i]; if(item.pageNum == current) notes.push(item); } } this.bookContext.notes = notes; } ,loadCtxHighLights: function() { var highlights = new Array(); if(RunTime.book != null && RunTime.book.highlights != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.highlights.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.highlights[i]; if(item.pageNum == current) highlights.push(item); } } this.bookContext.highlights = highlights; } ,loadCurrentBookmark: function() { var bms = new Array(); if(RunTime.book != null && RunTime.book.bookmarks != null) { var _g1 = 0, _g = RunTime.book.bookmarks.length; while(_g1 < _g) { var i = _g1++; var bm = RunTime.book.bookmarks[i]; if(bm.pageNum == this.currentPageNum + 1) bms.push(bm); } } this.bookContext.bookmarks = bms; } ,loadCtxButtons: function() { var buttons = new Array(); if(RunTime.book != null && RunTime.book.buttons != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.buttons.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.buttons[i]; if(item.pageNum == current) buttons.push(item); else if(item.layer == "foreground") buttons.push(item); } } this.bookContext.buttons = buttons; } ,updateAudios: function() { var audios = this.getCurrentPageAudios(); if(audios.left != null || audios.right != null) { this.cvsLeftPageBgAudio.innerHTML = core.HtmlHelper.toPopupPageAudiosHtml(audios.left,true); this.cvsRightPageBgAudio.innerHTML = core.HtmlHelper.toPopupPageAudiosHtml(audios.right,false); } else RunTime.clearBgAudio(); } ,renderVideo: function(item) { this.cvsVideo.innerHTML += core.HtmlHelper.toVideoHtml(item); } ,updateVideos: function() { this.loadCtxVideos(); var videos = this.bookContext.videos; if(videos != null) { var _g1 = 0, _g = videos.length; while(_g1 < _g) { var i = _g1++; var item = videos[i]; this.renderVideo(item); } } this.attachVideoTouchEvents(); } ,clearVideos: function() { this.cvsVideo.innerHTML = ""; } ,renderSlideshow: function(item) { this.cvsSlideshow.innerHTML += core.HtmlHelper.toSlideshow(item); } ,updateSlideshow: function() { var slides = this.bookContext.slideshow; if(slides != null) { var _g1 = 0, _g = slides.length; while(_g1 < _g) { var i = _g1++; var item = slides[i]; this.renderSlideshow(item); item.startTweener(); } } } ,clearSlideshow: function() { this.cvsSlideshow.innerHTML = ""; var slides = this.bookContext.slideshow; if(slides != null) { var _g1 = 0, _g = slides.length; while(_g1 < _g) { var i = _g1++; var item = slides[i]; item.stopTweener(); } } } ,getElementTop: function(e) { var offset = e.offsetTop; if(e.offsetParent != null) offset += this.getElementTop(e.offsetParent); return offset; } ,showBottomBar: function(e) { this.topMenuBarBg.style.cssText = "opacity:" + RunTime.bottomBarAlpha + "; -webkit-transition: 0.3s ease-out; "; this.bottomBar.style.cssText = "opacity:" + 1 + "; -webkit-transition: 0.0s ease-out; "; this.bottomBar.style.display = "inline-block"; this.bottomBarBg.style.opacity = RunTime.bottomBarAlpha; this.topMenuBar.style.display = "inline-block"; this.bCanGestureZoom = false; RunTime.saveBottomBarVisible(true); this.bShowBottomBar = true; var t = js.Lib.window.navigator.userAgent; if(t.indexOf("CPU iPhone OS ") != -1) { var iosVar = HxOverrides.substr(t,t.indexOf("CPU iPhone OS ") + 14,1); if(iosVar == "7") { if(RunTime.clientWidth >= 480) this.bottomBar.style.top = "170px"; } } var t1 = js.Lib.window.navigator.userAgent; if(t1.indexOf("CPU iPhone OS ") != -1) { var iosVar = HxOverrides.substr(t1,t1.indexOf("CPU iPhone OS ") + 14,1); if(iosVar == "7") { if(RunTime.clientWidth >= 480) { var tid = new haxe.Timer(300); tid.run = function() { if(js.Lib.document.body.scrollTop != 0) js.Lib.document.body.scrollTop = 0; }; } } } } ,getCurrentBBV: function() { if(this.bottomBar.style.display == "inline-block") return "1"; else return "0"; } ,hideBottomBar: function(e,animate,atOnce) { if(atOnce == null) atOnce = false; if(animate == null) animate = true; if(e != null) { var t = e.target; if(t == this.btnAutoFlip || t == this.btnContents || t == this.btnFirstPage || t == this.btnLastPage || t == this.btnNextPage || t == this.btnPrevPage || t == this.btnSearch || t == this.btnThumbs || t == this.tbPage || t == this.imgLogo) return; } if(atOnce) { this.topMenuBarBg.style.cssText = "opacity:0 ; "; this.bottomBar.style.cssText = "opacity: 0 ;"; } else { this.topMenuBarBg.style.cssText = "opacity:0 ; -webkit-transition: 0.3s ease-out; "; this.bottomBar.style.cssText = "opacity: 0 ; -webkit-transition: 0.0s ease-out; "; this.bCanGestureZoom = false; } if(e != null) this.bShowBottomBar = false; RunTime.saveBottomBarVisible(false); } ,getCurrentPageAudios: function() { var audios = RunTime.book.audios; var match = { left : null, right : null}; var pg = this.getCurrentPageNum(); var _g1 = 0, _g = audios.length; while(_g1 < _g) { var i = _g1++; var item = audios[i]; if(item.pageNum == pg) match.left = item; } return match; } ,getFullText: function(pages) { var result = ""; var pg = this.getCurrentPageNum(); var _g1 = 0, _g = pages.length; while(_g1 < _g) { var i = _g1++; var item = pages[i]; if(item.num == pg) { result += "<br />"; result += "<br />"; result += "==== Page " + Std.string(pg + 1) + " ===="; result += "<br />"; result += "<br />"; result += item.content; result += "<br />"; result += "<br />"; break; } } result = StringTools.replace(result,"\n","<br />"); return result; } ,updateFullTextCore: function(pages) { var result = this.getFullText(pages); this.topFullTextContent.innerHTML = result; this.topFullTextContent.scrollTop = 0; } ,updateFullText: function() { RunTime.invokePageContentsAction($bind(this,this.updateFullTextCore)); } ,showTxtCore: function(pages) { var result = this.getFullText(pages); this.resetAndShowTopBar("text"); this.setTopTitle("FullText"); this.currentTopBarButton = this.btnShowTxt; this.topFullTextContent.innerHTML = result; this.topFullTextContent.scrollTop = 0; } ,onShowTxtClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnShowTxt) { this.hideTopBar(); return; } this.HideBarOnPhone(); RunTime.invokePageContentsAction($bind(this,this.showTxtCore)); } ,onZoomClick: function(e) { this.zoomAt(null,null); } ,onAutoFlipClick: function(e) { if(this.zoomLeftPage.src != "") { this.zoomLeftPage.src = ""; this.zoomLeftPage.style.display = "none"; } if(this.zoomRightPage.src != "") { this.zoomRightPage.src = ""; this.zoomRightPage.style.display = "none"; } this.stopFlip(false); this.hideTopBar(); if(this.isAutoFliping == true) { this.isAutoFliping = false; this.btnAutoFlip.style.opacity = 1; } else { this.isAutoFliping = true; this.btnAutoFlip.style.opacity = RunTime.autoflipButtonUnselectedAlpha; this.flipTweener = new core.Tweener(); var self = this; var countOfClip = 50 * RunTime.book.autoFlipSecond; this.flipTweener.onChange = function(count) { if(count % countOfClip != 0) return; if(self.isAutoFliping == false) return; if(self.canTurnRight() == true) { if(RunTime.book.rightToLeft) self.turnPage(-1); else self.turnPage(1); } else self.stopFlip(); }; this.flipTweener.start(1000000); } } ,canTurnRight: function() { var num = this.getCurrentPageNum(); return num < RunTime.book.pages.length - 1; } ,preloadPages: function(num) { if(RunTime.enablePreload == false) return; RunTime.book.preloadPages(num); } ,stopFlip: function(resetFlipFlag) { if(resetFlipFlag == null) resetFlipFlag = true; if(this.flipTweener != null) { this.flipTweener.onChange = null; this.flipTweener.stop(); this.flipTweener = null; } if(resetFlipFlag == true) { this.isAutoFliping = false; this.btnAutoFlip.style.opacity = 1; } } ,checkIfExistBookmark: function(pageNum) { var i = 0; var _g1 = 0, _g = RunTime.book.bookmarks.length; while(_g1 < _g) { var i1 = _g1++; if(pageNum == RunTime.book.bookmarks[i1].pageNum) return true; } return false; } ,addBookmark: function(layout,text) { if(layout == null) layout = 0; var bookmark = new core.Bookmark(); if(layout == -1) { if(RunTime.book.rightToLeft) bookmark.pageNum = this.rightPageNum; else bookmark.pageNum = this.leftPageNum; } else if(layout == 1) { if(RunTime.book.rightToLeft) bookmark.pageNum = this.leftPageNum; else bookmark.pageNum = this.rightPageNum; } else if(layout == 0) bookmark.pageNum = this.getCurrentPageNum() + 1; bookmark.text = text; bookmark.save(); RunTime.book.bookmarks.push(bookmark.clone()); var bookmarks = RunTime.book.bookmarks; var lv = !this.checkIfExistBookmark(this.leftPageNum) && this.leftPageNum != -1; var rv = !this.checkIfExistBookmark(this.rightPageNum) && this.rightPageNum != -1; var html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,lv,rv); if(RunTime.book.rightToLeft) html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,rv,lv); this.topBarContent.innerHTML = html; } ,removeBookmark: function(pageNum) { var i = 0; var tmp = new Array(); var currentBookmark = null; var _g1 = 0, _g = RunTime.book.bookmarks.length; while(_g1 < _g) { var i1 = _g1++; haxe.Log.trace(RunTime.book.bookmarks[i1].pageNum,{ fileName : "FlipBook.hx", lineNumber : 1722, className : "FlipBook", methodName : "removeBookmark"}); if(pageNum + 1 != RunTime.book.bookmarks[i1].pageNum) tmp.push(RunTime.book.bookmarks[i1]); else currentBookmark = RunTime.book.bookmarks[i1]; } if(currentBookmark != null) currentBookmark.remove(); RunTime.book.bookmarks = tmp; var bookmarks = RunTime.book.bookmarks; var lv = !this.checkIfExistBookmark(this.leftPageNum) && this.leftPageNum != -1; var rv = !this.checkIfExistBookmark(this.rightPageNum) && this.rightPageNum != -1; var html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,lv,rv); if(RunTime.book.rightToLeft) html = core.HtmlHelper.toBookmarksHtml(bookmarks,RunTime.singlePage,rv,lv); this.topBarContent.innerHTML = html; } ,getCurrentPageNum: function() { var num = 0; if(this.currentPageNum != null) num = this.currentPageNum; return num; } ,searchInPages: function(pages) { var results = []; var _g1 = 0, _g = pages.length; while(_g1 < _g) { var i = _g1++; var item = pages[i]; if(item.content == null || item.content == "") continue; if(item.contentLowerCase == null) item.contentLowerCase = item.content.toLowerCase(); var posList = orc.utils.Util.searchPos(item.contentLowerCase,this.searchWord); results = results.concat(orc.utils.Util.createSearchResults(item.content,this.searchWord,posList,Std.parseInt(item.id))); } return results; } ,searchCore: function(pages) { if(this.searchWord == "") return; var list = this.searchInPages(pages); var dom = this.topBarContent; var resultsDom = dom.getElementsByTagName("div")[1]; if(list == null || list.length == 0) resultsDom.innerHTML = "0 " + L.s("SearchResults","Search Results") + "."; else resultsDom.innerHTML = core.HtmlHelper.toSearchResultHtml(list); } ,getSearchInputDom: function() { var dom = this.topBarContent; var inputDom = dom.getElementsByTagName("input")[0]; return inputDom; } ,unlockPage: function() { var dom = this.cvsOthers; var inputDom = dom.getElementsByTagName("input")[0]; var word = inputDom.value; word = StringTools.trim(word); RunTime.tryUnlock(word); } ,inputPwd: function() { var dom = this.cvsOthers; var inputDom = dom.getElementsByTagName("input")[0]; var word = inputDom.value; word = StringTools.trim(word); RunTime.tryPwd(word); } ,search: function() { var input = this.getSearchInputDom(); var word = input.value; word = StringTools.trim(word); if(word == "") return; this.searchWord = word.toLowerCase(); RunTime.requestSearch($bind(this,this.searchCore)); RunTime.logSearch(this.searchWord); } ,onTbPageFocus: function(e) { this.stopFlip(); var obj = this.tbPage; obj.value = ""; } ,onSearchClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnSearch) { this.hideTopBar(); return; } this.resetAndShowTopBar("search"); this.setTopTitle("Search"); this.currentTopBarButton = this.btnSearch; var html = core.HtmlHelper.toSearchHtml(); this.topBarContent.innerHTML = html; this.HideBarOnPhone(); } ,onThumbsClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnThumbs) { this.hideTopBar(); return; } this.resetAndShowTopBar("thumbs"); this.setTopTitle("ThumbnailView"); this.currentTopBarButton = this.btnThumbs; var html = core.HtmlHelper.toThumbsHtml(RunTime.book.pages); this.topBarContent.innerHTML = html; this.HideBarOnPhone(); } ,HideBarOnPhone: function() { var hide = false; if(RunTime.clientWidth < 600) hide = true; if(js.Lib.window.navigator.userAgent.indexOf("iPhone") != -1) hide = true; if(hide) this.hideBottomBar(); } ,onContentsClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnContents) { this.hideTopBar(); return; } this.resetAndShowTopBar("toc"); this.currentTopBarButton = this.btnContents; this.setTopTitle("TableOfContents"); if(RunTime.contentInfo != null) { var html = core.HtmlHelper.toContentsHtml(RunTime.contentInfo); this.topBarContent.innerHTML = html; } this.HideBarOnPhone(); } ,onSnsClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnSns) { this.hideTopBar(); return; } this.resetAndShowTopBar("sns"); this.currentTopBarButton = this.btnSns; this.setTopTitle("ShareOnSocialNetwork"); if(RunTime.contentInfo != null) { var html = core.HtmlHelper.toSnsHtml(RunTime.shareInfo); this.topBarContent.innerHTML = html; } this.HideBarOnPhone(); } ,onEmailClick: function(e) { this.stopFlip(); if(this.currentTopBarButton == this.btnEmail) { this.hideTopBar(); return; } this.resetAndShowTopBar("email"); this.currentTopBarButton = this.btnEmail; this.setTopTitle("ShareThisFlipBook"); if(RunTime.contentInfo != null) { var html = core.HtmlHelper.toEmailHtml(); this.topBarContent.innerHTML = html; } this.HideBarOnPhone(); } ,focusSearchInput: function() { var t = new core.Tweener(); var self = this; t.start(10); t.onChange = function(count) { if(count == 10) { var input = self.getSearchInputDom(); input.focus(); } }; } ,resetAndShowTopBar: function(type) { if(type == null) type = ""; this.resetNoteButton(); this.resetHighlightButton(); var dom = this.topBar; dom.style.height = "0px"; var step = 30; var height = 300; this.setVisible(this.topBarContent,false); this.setVisible(this.topFullTextContent,false); if(type == "text") { HtmlDomHelper.setTopBarMaxSize(dom); HtmlDomHelper.setTopFullTextContentMaxSize(this.topFullTextContent); height = RunTime.clientHeight - 45 | 0; step = step / 10 | 0; } else HtmlDomHelper.setTopBarDefaultSize(dom); var t = new core.Tweener(); var self = this; self.setVisible(self.topBarContent,false); t.start(10); t.onChange = function(count) { if(count < 10) dom.style.height = Std.string(count * step) + "px"; else { dom.style.height = Std.string(height) + "px"; if(type == "text") self.setVisible(self.topFullTextContent,true); else self.setVisible(self.topBarContent,true); if(type == "search") self.focusSearchInput(); } }; this.setVisible(this.topBar,true); this.topBarContent.innerHTML = ""; } ,setTopTitle: function(val) { var dom = js.Lib.document.getElementById("topTitle"); dom.innerHTML = L.s(val); } ,setVisible: function(dom,val) { if(val == true) dom.style.display = "inline"; else dom.style.display = "none"; } ,hideTopBar: function() { //this.setVisible(this.topBar,true); this.setVisible(this.topBar,false); this.currentTopBarButton = null; this.topMenuBarBg.style.cssText = "opacity:1"; this.bottomBar.style.cssText = "opacity: 1"; } ,loadCtxVideos: function() { var videos = new Array(); if(RunTime.book != null && RunTime.book.videos != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.videos.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.videos[i]; if(item.pageNum == current) videos.push(item); } } this.bookContext.videos = videos; } ,loadCtxHotlinks: function() { var links = new Array(); if(RunTime.book != null && RunTime.book.hotlinks != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.hotlinks.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.hotlinks[i]; if(item.pageNum == current) links.push(item); } } this.bookContext.hotlinks = links; } ,loadCtxSlideshow: function() { var slides = new Array(); if(RunTime.book != null && RunTime.book.slideshows != null) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; var _g1 = 0, _g = RunTime.book.slideshows.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.slideshows[i]; if(item.pageNum == current) slides.push(item); } } this.bookContext.slideshow = slides; this.updateSlideshow(); } ,clearCtxNote: function() { this.bookContext.notes = null; } ,clearCtxHighLight: function() { this.bookContext.highlights = null; } ,clearCtxButtons: function() { this.bookContext.buttons = null; } ,clearCtxHotlinks: function() { this.bookContext.hotlinks = null; } ,onTopBarTouchMove: function(e) { e.preventDefault(); var obj = e; var touch = obj.touches.item(0); var offset = this.touchTopBarY - touch.pageY; this.topBarContent.scrollTop += Math.round(offset) | 0; this.topFullTextContent.scrollTop += Math.round(offset) | 0; } ,onTopBarTouchEnd: function(e) { this.touchTopBarActive = false; } ,onTopBarTouchStart: function(e) { this.touchTopBarActive = true; var obj = e; var touch = obj.touches.item(0); this.touchTopBarY = touch.pageY; } ,onGestureEnd: function(e) { e.stopPropagation(); } ,onGestureChange: function(e) { e.stopPropagation(); } ,onGestureStart: function(e) { e.stopPropagation(); } ,move: function(offsetX,offsetY) { this.bookContext.offsetX += offsetX; this.bookContext.offsetY += offsetY; this.updateVideoLayout(); this.bookContext.render(); } ,onTouchMove: function(e) { if(RunTime.isPopupModal()) return; if(this.bStartHighLight) { e.preventDefault(); var obj = e; var touch = obj.touches[0]; this.gestureLastX = touch.pageX; this.gestureLastY = touch.pageY; if(Math.abs(this.gestureLastX - this.currentHighLight.tx) <= 10 || Math.abs(this.gestureLastY - this.currentHighLight.ty) <= 10) return; this.currentHighLight.twidth = this.gestureLastX - this.currentHighLight.tx; this.currentHighLight.theight = this.gestureLastY - this.currentHighLight.ty; var h = js.Lib.window.document.body.clientHeight; this.getHighLightContext().clearRect(0,0,js.Lib.window.document.body.clientWidth,h); this.bookContext.render(); this.currentHighLight.draw(this.getHighLightContext()); return; } if(this.bStartNote) { e.preventDefault(); var obj = e; var touch = obj.touches[0]; this.gestureLastX = touch.pageX; this.gestureLastY = touch.pageY; this.currentNote.twidth = 32; this.currentNote.theight = 32; var h = js.Lib.window.document.body.clientHeight; if(h == 276 || h == 320) h = 208; this.getNoteContext().clearRect(0,0,js.Lib.window.document.body.clientWidth,h); this.bookContext.render(); this.currentNote.draw(this.getNoteContext()); return; } var obj = e; var touch = obj.touches[0]; var touch2 = obj.touches[1]; var date = new Date(); var offsetX = touch.clientX - this.touchStartX; var offsetY = touch.clientY - this.touchStartY; if(!this.checkCanZoom() && obj.touches.length == 2) obj.preventDefault(); if(obj.touches.length == 2 && this.checkCanZoom()) { this.zoomAt(touch,touch2); return; } if(obj.touches.length == 1 && Math.abs(js.Lib.window.innerWidth - RunTime.clientWidth) < 10) { this.zoomLeftPage.src = ""; this.zoomLeftPage.style.display = "none"; this.zoomRightPage.src = ""; this.zoomRightPage.style.display = "none"; if(offsetX > 0) { this.turnToPrevPage(null); this.touchActive = false; this.bFlipping = true; } else if(offsetX < 0) { this.turnToNextPage(null); this.touchActive = false; this.bFlipping = true; } this.zoomAt(null,null); obj.preventDefault(); } this.lastTouchX = touch.clientX; this.lastTouchY = touch.clientY; } ,checkCanZoom: function() { var num = 0; if(this.currentPageNum != null) num = this.currentPageNum; var page = RunTime.getPage(num); return page.canZoom; } ,onReadyTouchEnd: function(e) { } ,onTouchEnd: function(e) { this.onReadyTouchEnd(e); if(this.bStartHighLight && this.gestureLastX != -1 && this.gestureLastY != -1) { var obj = e; e.preventDefault(); if(this.gestureLastX < this.currentHighLight.tx) { this.currentHighLight.tx = this.gestureLastX; this.currentHighLight.twidth = Math.abs(this.currentHighLight.twidth); } if(this.gestureLastY < this.currentHighLight.ty) { this.currentHighLight.ty = this.gestureLastY; this.currentHighLight.theight = Math.abs(this.currentHighLight.theight); } this.currentHighLight.save(); RunTime.book.highlights.push(this.currentHighLight.clone()); this.loadCtxHighLights(); this.bookContext.render(); this.gestureLastX = -1; this.gestureLastY = -1; this.currentHighLight.tx = 0; this.currentHighLight.ty = 0; this.currentHighLight.twidth = 0; this.currentHighLight.theight = 0; this.currentHighLight.tpageNum = this.getCurrentPageNum(); this.currentHighLight = null; this.onButtonMaskClick(null); return; } if(this.bStartNote && this.gestureLastX != -1 && this.gestureLastY != -1) { var obj = e; e.preventDefault(); this.currentNote.twidth = 32; this.currentNote.theight = 32; this.currentNote.save(); var saveObj = this.currentNote.clone(); RunTime.book.notes.push(saveObj); this.loadCtxNotes(); this.bookContext.render(); this.gestureLastX = -1; this.gestureLastY = -1; this.currentNote.tx = 0; this.currentNote.ty = 0; this.currentNote.twidth = 0; this.currentNote.theight = 0; this.currentNote.tpageNum = this.getCurrentPageNum(); this.onButtonNoteClick(null); RunTime.currentNote = saveObj; RunTime.currentNote.click(); return; } this.totalDistance += this.totalLast; if(this.totalDistance <= 0) { } this.bFlipping = false; e.stopPropagation(); this.touchActive = false; this.startFingerDistance = 0; return; } ,getFullUrl: function() { return RunTime.urlIndex + "?page=" + Std.string(this.currentPageNum) + "&bbv=" + this.getCurrentBBV() + "&pcode=" + RunTime.pcode; } ,resizeContainer: function(w,h,l,t) { } ,getDistance: function(touch1,touch2) { var x1 = touch1.clientX; var x2 = touch2.clientX; var y1 = touch1.clientY; var y2 = touch2.clientY; return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); } ,zoomIn: function(page,point0,point1) { if(page == null) return; if(!page.locked) this.zoomLeftPage.src = page.getBigPageUrl(); else { } this.zoomLeftPage.style.display = "inline"; } ,zoomOut: function() { if(this.bShowBottomBar) this.showBottomBar(null); } ,zoomAt: function(point0,point1) { var num = 0; if(this.currentPageNum != null) num = this.currentPageNum; var page = RunTime.getPage(num); if(point0 == null || point1 == null) this.zoomOut(); else this.zoomIn(page,point0,point1); } ,fillImg: function(urlPage) { this.zoomLeftPage.src = urlPage; } ,onTouchStart: function(e) { if(this.zoomStatus == core.ZoomStatus.zoomed) this.hideBottomBar(); var obj = e; var touch = obj.touches[0]; if(this.onHighLightClick(touch.pageX,touch.pageY)) return; if(this.onNoteClick(touch.pageX,touch.pageY)) return; if(this.bStartHighLight) { this.currentHighLight = new core.HighLight(); this.currentHighLight.tx = touch.pageX; this.currentHighLight.ty = touch.pageY; if(RunTime.singlePage) this.currentHighLight.tpageNum = this.getCurrentPageNum(); else if(RunTime.book.rightToLeft) { if(this.currentHighLight.tx > RunTime.clientWidth / 2) this.currentHighLight.tpageNum = this.leftPageNum - 1; else this.currentHighLight.tpageNum = this.rightPageNum - 1; } else if(this.currentHighLight.tx > RunTime.clientWidth / 2) this.currentHighLight.tpageNum = this.rightPageNum - 1; else this.currentHighLight.tpageNum = this.leftPageNum - 1; return; } if(this.bStartNote) { this.currentNote = new core.NoteIcon(); this.currentNote.tx = touch.pageX; this.currentNote.ty = touch.pageY; this.gestureLastX = touch.pageX; this.gestureLastY = touch.pageY; if(RunTime.singlePage) this.currentNote.tpageNum = this.getCurrentPageNum(); else if(RunTime.book.rightToLeft) { if(this.currentNote.tx > RunTime.clientWidth / 2) this.currentNote.tpageNum = this.leftPageNum - 1; else this.currentNote.tpageNum = this.rightPageNum - 1; } else if(this.currentNote.tx > RunTime.clientWidth / 2) this.currentNote.tpageNum = this.rightPageNum - 1; else this.currentNote.tpageNum = this.leftPageNum - 1; return; } var date = new Date(); if(obj.touches.length == 2) { } if(this.lastTouchTime != null && obj.touches.length == 1) { var lastTime = this.lastTouchTime.getTime(); var newTime = date.getTime(); } this.lastTouchTime = date; this.stopFlip(); this.touchActive = true; if(this.zoomStatus == core.ZoomStatus.zoomed) this.touchActive = false; this.onButtonLinkClick(touch.pageX,touch.pageY); this.touchStartX = touch.clientX; this.touchStartY = touch.clientY; this.lastTouchX = this.touchStartX; this.lastTouchY = this.touchStartY; } ,onMouseMove: function(e) { e.stopPropagation(); if(this.zoomStatus == core.ZoomStatus.zoomed) { } } ,onDblClick: function(e) { e.stopPropagation(); } ,setCurrentPage: function(val) { var t = this.tbPage; t.value = Std.string(val); } ,setPageCount: function(val) { this.tbPageCount.innerHTML = "/ " + Std.string(val); } ,cPage: function() { this.zoomAt(0,0); } ,onEnterPage: function() { this.updateFullText(); this.updateAudios(); var cid = haxe.Timer.delay($bind(this,this.cPage),1000); } ,TansRightToLeft: function() { this.turnToPage(RunTime.book.pages.length - 1); } ,turnToLastPage: function(e) { this.clearZoom(); this.stopFlip(); if(RunTime.book.rightToLeft) this.turnToPage(0); else this.turnToPage(RunTime.book.pages.length - 1); } ,turnToFirstPage: function(e) { this.clearZoom(); this.stopFlip(); if(RunTime.book.rightToLeft) this.turnToPage(RunTime.book.pages.length - 1); else this.turnToPage(0); } ,turnToPrevPage: function(e) { this.clearZoom(); this.stopFlip(); this.turnPage(-1); } ,clearZoom: function() { if(this.zoomLeftPage.src != "") { this.zoomLeftPage.src = ""; this.zoomLeftPage.style.display = "none"; } if(this.zoomRightPage.src != "") { this.zoomRightPage.src = ""; this.zoomRightPage.style.display = "none"; } RunTime.clearPopupContents(); this.resetNoteButton(); this.resetHighlightButton(); } ,turnToNextPage: function(e) { this.clearZoom(); this.stopFlip(); this.turnPage(1); } ,updateAds: function() { } ,turnToPage: function(pageNum) { this.clearZoom(); this.preloadPages(pageNum); var page = RunTime.getPage(pageNum); if(page == null) return; this.setCurrentPage(pageNum + 1); this.currentPageNum = pageNum; this.hideTopBar(); RunTime.flipBook.rightPageLock.style.display = "none"; RunTime.flipBook.leftPageLock.style.display = "none"; if(page != null && page.locked && RunTime.bLocked) RunTime.flipBook.leftPageLock.style.display = "block"; this.clearSlideshow(); this.loadCtxHotlinks(); this.loadCtxSlideshow(); this.loadCtxButtons(); this.loadCtxHighLights(); this.loadCtxNotes(); this.loadCurrentBookmark(); this.clearVideos(); this.bookContext.removeAllPages(); this.bookContext.resetLayoutParams(); this.bookContext.addPage(page); this.bookContext.pageOffset = 0; this.bookContext.render(); this.updateVideos(); RunTime.logPageView(pageNum + 1); } ,turnPage: function(pageOffset) { if(this.bFlipping) return; if(pageOffset == 0) return; if(RunTime.book.rightToLeft) pageOffset = 0 - pageOffset; if(RunTime.book == null || RunTime.book.pages == null) return; var dstPageNum = this.currentPageNum + pageOffset; var dstPage = RunTime.getPage(dstPageNum); if(dstPage == null) return; this.resetZoom(); this.setCurrentPage(dstPageNum + 1); var self = this; this.bookContext.removeAllPages(); this.bookContext.resetLayoutParams(); this.bookContext.addPage(RunTime.getPage(this.currentPageNum,0)); this.bookContext.addPage(RunTime.getPage(this.currentPageNum,1)); this.bookContext.addPage(RunTime.getPage(this.currentPageNum,-1)); this.bookContext.pageOffset = 0; if(this.tweener != null) this.tweener.stop(); var maxCount = 8; this.tweener.onChange = function(count) { var ratio = count / maxCount; if(RunTime.book.rightToLeft) self.bookContext.pageOffset = pageOffset * ratio * ratio; else self.bookContext.pageOffset = -pageOffset * ratio * ratio; if(count == maxCount) self.bookContext.pageOffset = -pageOffset; if(count == maxCount) { self.currentPageNum = dstPageNum; self.loadCtxHotlinks(); self.loadCtxSlideshow(); self.loadCtxButtons(); self.loadCtxHighLights(); self.loadCtxNotes(); self.loadCurrentBookmark(); self.updateVideos(); RunTime.flipBook.rightPageLock.style.display = "none"; RunTime.flipBook.leftPageLock.style.display = "none"; if(dstPage != null && dstPage.locked && RunTime.bLocked) RunTime.flipBook.leftPageLock.style.display = "block"; RunTime.logPageView(dstPageNum + 1); RunTime.clearPopupContents(); self.onEnterPage(); } self.bookContext.render(); }; this.clearCtxHotlinks(); this.clearCtxButtons(); this.clearVideos(); this.clearSlideshow(); this.tweener.start(maxCount | 0); } ,onMouseDown: function(e) { e.stopPropagation(); if(this.bStartHighLight || this.bStartNote) return; if(Math.abs(js.Lib.window.innerWidth - RunTime.clientWidth) < 10) { if(this.topMenuBarBg.style.opacity != RunTime.bottomBarAlpha) this.showBottomBar(e); else this.hideBottomBar(e); } } ,onMouseUp: function(e) { } ,onNoteClick: function(x,y) { var note = this.bookContext.getNoteAt(x,y); if(note != null && this.bStartNote) { RunTime.currentNote = note; note.click(); return true; } else RunTime.currentNote = null; return false; } ,onHighLightClick: function(x,y) { var highlight = this.bookContext.getHighLightAt(x,y); if(highlight != null) { RunTime.currentHighLight = highlight; highlight.click(); return true; } else RunTime.currentHighLight = null; return false; } ,onButtonLinkClick: function(x,y) { var hotlink = this.bookContext.getHotLinkAt(x,y); if(hotlink != null) { hotlink.click(); return true; } var button = this.bookContext.getButtonAt(x,y); if(button != null) { button.click(); return true; } return false; } ,loadPage: function(index) { RunTime.flipBook.rightPageLock.style.display = "none"; this.preloadPages(index); this.currentPageNum = index; this.loadCtxHotlinks(); this.loadCtxSlideshow(); this.loadCurrentBookmark(); var page = RunTime.getPage(this.currentPageNum); this.bookContext.addPage(page); if(page != null && page.locked && RunTime.bLocked) RunTime.flipBook.leftPageLock.style.display = "block"; this.bookContext.render(); var p = this.currentPageNum; if(p == null) p = 0; RunTime.logPageView(p + 1); this.onEnterPage(); } ,afterInit: function() { } ,forbidden: function(e) { e.preventDefault(); e.stopPropagation(); } ,attachActions: function() { if(this.root == null) return; this.mask.ontouchstart = $bind(this,this.onTouchStart); this.mask.ontouchmove = $bind(this,this.onTouchMove); this.mask.ontouchend = $bind(this,this.onTouchEnd); this.mask.ontouchcancel = $bind(this,this.onTouchEnd); this.mask.gestureend = $bind(this,this.onGestureEnd); this.mask.gesturestart = $bind(this,this.onGestureStart); this.mask.gesturechange = $bind(this,this.onGestureChange); this.mask.onscroll = $bind(this,this.forbidden); this.mask.onmousewheel = $bind(this,this.forbidden); this.cvsVideo.onclick = $bind(this,this.onMouseDown); this.cvsVideo.ontouchstart = $bind(this,this.onTouchStart); this.cvsVideo.ontouchmove = $bind(this,this.onTouchMove); this.cvsVideo.ontouchend = $bind(this,this.onTouchEnd); this.cvsVideo.ontouchcancel = $bind(this,this.onTouchEnd); this.cvsVideo.gestureend = $bind(this,this.onGestureEnd); this.cvsVideo.gesturestart = $bind(this,this.onGestureStart); this.cvsVideo.gesturechange = $bind(this,this.onGestureChange); this.maskPopup.onscroll = $bind(this,this.forbidden); this.maskPopup.onmousewheel = $bind(this,this.forbidden); if(js.Lib.window.navigator.userAgent.indexOf("iPad") != -1) { this.topBarContent.ontouchstart = $bind(this,this.onTopBarTouchStart); this.topBarContent.ontouchmove = $bind(this,this.onTopBarTouchMove); this.topBarContent.ontouchend = $bind(this,this.onTopBarTouchEnd); this.topBarContent.ontouchcancel = $bind(this,this.onTopBarTouchEnd); this.topFullTextContent.ontouchstart = $bind(this,this.onTopBarTouchStart); this.topFullTextContent.ontouchmove = $bind(this,this.onTopBarTouchMove); this.topFullTextContent.ontouchend = $bind(this,this.onTopBarTouchEnd); this.topFullTextContent.ontouchcancel = $bind(this,this.onTopBarTouchEnd); } this.btnNextPage.ontouchstart = $bind(this,this.turnToNextPage); this.btnPrevPage.ontouchstart = $bind(this,this.turnToPrevPage); this.btnFirstPage.ontouchstart = $bind(this,this.turnToFirstPage); this.btnLastPage.ontouchstart = $bind(this,this.turnToLastPage); this.btnContents.onclick = $bind(this,this.onContentsClick); this.btnEmail.onclick = $bind(this,this.onEmailClick); this.btnSns.onclick = $bind(this,this.onSnsClick); this.btnThumbs.onclick = $bind(this,this.onThumbsClick); this.btnSearch.ontouchstart = $bind(this,this.onSearchClick); this.btnAutoFlip.ontouchstart = $bind(this,this.onAutoFlipClick); this.btnShowTxt.ontouchstart = $bind(this,this.onShowTxtClick); this.tbPage.onfocus = $bind(this,this.onTbPageFocus); this.btnZoom.ontouchstart = $bind(this,this.onZoomClick); this.btnMask.ontouchstart = $bind(this,this.onButtonMaskClick); this.btnBookMark.ontouchstart = $bind(this,this.onButtonBookmark); this.btnNote.ontouchstart = $bind(this,this.onButtonNoteClick); this.btnAboutUs.onclick = $bind(this,this.onAboutUsClick); } ,requestMainAd: function() { } ,getBookmarkContext: function() { return this.cvsBookmark.getContext("2d"); } ,getNoteContext: function() { return this.cvsNote.getContext("2d"); } ,getHighLightContext: function() { return this.cvsHighLight.getContext("2d"); } ,getButtonContext: function() { return this.cvsButton.getContext("2d"); } ,getContext: function() { return this.canvas.getContext("2d"); } ,__class__: FlipBook } var DoubleFlipBook = function() { this.mainAdLayout = "center"; this.mainAdDockPos = "halfpage"; FlipBook.call(this); }; DoubleFlipBook.__name__ = true; DoubleFlipBook.__super__ = FlipBook; DoubleFlipBook.prototype = $extend(FlipBook.prototype,{ loadCtxNotes: function() { var pair = this.getCurrentPair(); var notes = new Array(); if(RunTime.book != null && RunTime.book.notes != null) { var _g1 = 0, _g = RunTime.book.notes.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.notes[i]; var match = pair.match(item.pageNum); if(match != 0) { item.pageLayoutType = match; notes.push(item); } } } this.bookContext.notes = notes; } ,loadCtxHighLights: function() { var pair = this.getCurrentPair(); var highlights = new Array(); if(RunTime.book != null && RunTime.book.highlights != null) { var _g1 = 0, _g = RunTime.book.highlights.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.highlights[i]; var match = pair.match(item.pageNum); if(match != 0) { item.pageLayoutType = match; highlights.push(item); } } } this.bookContext.highlights = highlights; } ,loadCtxButtons: function() { var buttons = new Array(); if(RunTime.book != null && RunTime.book.buttons != null) { var pair = this.getCurrentPair(); var _g1 = 0, _g = RunTime.book.buttons.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.buttons[i]; var match = pair.match(item.pageNum); if(match != 0 && item.layer == "onpage") { item.pageLayoutType = match; buttons.push(item); } else if(item.layer == "foreground") { if((item.pageNum + 1) % 2 != 0) item.pageLayoutType = 1; else item.pageLayoutType = -1; buttons.push(item); } else if(item.layer == "background") { if(pair.leftPage == null && (item.pageNum + 1) % 2 == 0) { item.pageLayoutType = -1; buttons.push(item); } if(pair.rightPage == null && (item.pageNum + 1) % 2 != 0) { item.pageLayoutType = 1; buttons.push(item); } } } } this.bookContext.buttons = buttons; } ,canTurnRight: function() { var num = this.getCurrentPageNum(); var count = RunTime.book.pages.length; if(num % 2 == 1) num++; return num < count - 1; } ,showPopupAudio: function(item) { item.url = item.destination; var pageNum = item.pageNum; var audio = new core.AudioInfo(); audio.pageNum = pageNum; audio.url = item.destination; if(pageNum % 2 == 1) { this.cvsLeftPageBgAudio.innerHTML = ""; this.cvsLeftPageBgAudio.innerHTML = core.HtmlHelper.toPopupPageAudiosHtml(audio,true); var item1 = js.Lib.document.getElementById("cvsLeftPageBgAudio").getElementsByTagName("audio")[0]; item1.play(); } else { this.cvsRightPageBgAudio.innerHTML = ""; this.cvsRightPageBgAudio.innerHTML = core.HtmlHelper.toPopupPageAudiosHtml(audio,false); var item1 = js.Lib.document.getElementById("cvsRightPageBgAudio").getElementsByTagName("audio")[0]; item1.play(); } } ,turnPage: function(pageOffset) { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; if(RunTime.book.rightToLeft) pageOffset = 0 - pageOffset; current = current + pageOffset * 2; if(current < 0) current = 0; if(current >= RunTime.book.pages.length) current = RunTime.book.pages.length - 1; this.turnToPage(current); } ,setCurrentPage: function(val) { var count = RunTime.book.pages.length; var t = this.tbPage; if(val == 1) { t.value = Std.string(val); this.leftPageNum = -1; this.rightPageNum = val; } else if(val % 2 == 0 && val == count) { t.value = Std.string(val); this.leftPageNum = val; this.rightPageNum = -1; } else { var v0 = val - val % 2; var v1 = v0 + 1; this.leftPageNum = v0; this.rightPageNum = v1; t.value = Std.string(v0) + "-" + Std.string(v1); } } ,loadCtxVideos: function() { var videos = new Array(); if(RunTime.book != null && RunTime.book.videos != null) { var pair = this.getCurrentPair(); var _g1 = 0, _g = RunTime.book.videos.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.videos[i]; var match = pair.match(item.pageNum); if(match != 0) { item.pageLayoutType = match; videos.push(item); } } } this.bookContext.videos = videos; } ,loadCtxHotlinks: function() { var links = new Array(); if(RunTime.book != null && RunTime.book.hotlinks != null) { var pair = this.getCurrentPair(); var _g1 = 0, _g = RunTime.book.hotlinks.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.hotlinks[i]; var match = pair.match(item.pageNum); if(match != 0) { item.pageLayoutType = match; links.push(item); } } } this.bookContext.hotlinks = links; } ,loadCtxSlideshow: function() { var slides = new Array(); if(RunTime.book != null && RunTime.book.slideshows != null) { var pair = this.getCurrentPair(); var _g1 = 0, _g = RunTime.book.slideshows.length; while(_g1 < _g) { var i = _g1++; var item = RunTime.book.slideshows[i]; var match = pair.match(item.pageNum); if(match != 0) { item.pageLayoutType = match; slides.push(item); } } } this.bookContext.slideshow = slides; this.updateSlideshow(); } ,zoomAt: function(point0,point1) { var num = 0; if(this.currentPageNum != null) num = this.currentPageNum; var pair = this.getCurrentPair(); if(point0 == null || point1 == null) this.pageZoomOut(); else this.pageZoomIn(pair,point0,point1); } ,pageZoomIn: function(page,point0,point1) { this.zoomStatus = core.ZoomStatus.zoomed; if(page == null) return; if(page.leftPage != null) { if(!page.leftPage.locked) this.zoomLeftPage.src = page.leftPage.getBigPageUrl(); else { } this.zoomLeftPage.style.display = "inline"; } if(page.rightPage != null) { if(!page.rightPage.locked) this.zoomRightPage.src = page.rightPage.getBigPageUrl(); else { } this.zoomRightPage.style.display = "inline"; } } ,pageZoomOut: function() { this.zoomStatus = core.ZoomStatus.normal; this.page_offsetX = 0; this.page_offsetY = 0; if(this.bShowBottomBar) this.showBottomBar(null); } ,getCurrentPair: function() { var current = 0; if(this.currentPageNum != null) current = this.currentPageNum; return new core.PagePair(current); } ,onReadyTouchEnd: function(e) { } ,getRealValue: function(value) { if(value == null || value == "") return 0; return Std.parseInt(value.substring(0,value.lastIndexOf("px"))); } ,updateAds: function() { try { if(this.currentPageNum == 0) this.mainAdHtml.style.display = "block"; else this.mainAdHtml.style.display = "none"; } catch( ex ) { } } ,requestMainAd: function() { this.mainAdHtml = js.Lib.document.getElementById("mainAdhtml"); var an = js.Lib.document.getElementById("mainAdInner"); this.mainAdInner = an; var img = js.Lib.document.getElementById("mainAdimg"); this.mainAdImg = img; try { var ad = null; try { ad = new haxe.xml.Fast(RunTime.bookInfo.firstElement().elementsNamed("mainAd").next()); } catch( e ) { } if(ad != null) { if(ad.has.resolve("dockPos")) this.mainAdDockPos = ad.att.resolve("dockPos"); this.mainAdHtml.style.display = "block"; this.mainAdHtml.style.marginRight = 0; this.mainAdHtml.style.height = RunTime.clientHeight + "px"; if(this.mainAdDockPos == "halfpage") { this.mainAdHtml.style.width = RunTime.imagePageWidth + "px"; this.mainAdHtml.style.left = RunTime.clientWidth / 2 - RunTime.imagePageWidth + "px"; this.mainAdHtml.style.right = RunTime.clientWidth / 2 + "px"; } else if(this.mainAdDockPos == "halfscreen") { this.mainAdHtml.style.left = "0px"; this.mainAdHtml.style.width = RunTime.clientWidth / 2 + "px"; } var isHtmlAD = false; try { if(ad.getInnerData() != null && StringTools.trim(ad.getInnerData()) != "") isHtmlAD = true; } catch( err ) { } if(isHtmlAD) { this.mainAdHtml.style.overflow = "hide"; this.mainAdHtml.innerHTML = ad.getInnerData(); } else if(ad.has.resolve("url")) { this.mainAdInner.style.styleFloat = "right"; this.mainAdImg.src = ad.att.resolve("url"); if(ad.has.resolve("layout")) this.mainAdLayout = ad.att.resolve("layout"); if(ad.has.resolve("href")) { this.mainAdHref = ad.att.resolve("href"); this.mainAdInner.href = this.mainAdHref; this.mainAdInner.target = ad.has.resolve("target")?ad.att.resolve("target"):"_blank"; } if(this.mainAdLayout == "center") { this.mainAdInner.style.top = (RunTime.clientHeight - this.getRealValue(this.mainAdImg.style.height)) / 4 + "px"; this.mainAdInner.style.verticalAlign = "middle"; this.mainAdInner.style.textAlign = "right"; this.mainAdImg.style.maxHeight = this.mainAdHtml.style.height; this.mainAdImg.style.maxWidth = this.mainAdHtml.style.width; } else if(this.mainAdLayout == "stretch") { this.mainAdImg.style.height = this.mainAdHtml.style.height; this.mainAdImg.style.width = this.mainAdHtml.style.width; } else { this.mainAdInner.style.top = (RunTime.clientHeight - this.getRealValue(this.mainAdImg.style.height)) / 4 + "px"; this.mainAdInner.style.verticalAlign = "middle"; this.mainAdInner.style.textAlign = "right"; this.mainAdImg.style.maxHeight = this.mainAdHtml.style.height; this.mainAdImg.style.maxWidth = this.mainAdHtml.style.width; } } } } catch( e ) { js.Lib.alert(e); } } ,turnToPage: function(pageNum) { var _g = this; this.preloadPages(pageNum); var current = this.getCurrentPageNum(); if(current < 0 || current >= RunTime.book.pages.length) return; if(pageNum < 0 || pageNum >= RunTime.book.pages.length) return; var oldPair = new core.PagePair(current); var newPair = new core.PagePair(pageNum); var oldNum = oldPair.getNumInDoubleMode(); var newNum = newPair.getNumInDoubleMode(); if(newNum < 0 || oldNum == newNum) return; this.bookContext.removeAllPages(); this.bookContext.resetLayoutParams(); this.setCurrentPage(pageNum + 1); this.bookContext.addPage(oldPair.leftPage); this.bookContext.addPage(oldPair.rightPage); this.bookContext.addPage(newPair.leftPage); this.bookContext.addPage(newPair.rightPage); if(newPair.leftPage != null) RunTime.logPageView(newPair.leftPage.num + 1); if(newPair.rightPage != null) RunTime.logPageView(newPair.rightPage.num + 1); this.bookContext.pageOffset = 0; var pageOffset = 0; var offset = 0; var dstPageOffset = newNum > oldNum?1:-1; var ldp = RunTime.getDrawParams(-1); var rdp = RunTime.getDrawParams(1); var update = function(val) { var downLeft = oldPair.leftPage; var downRight = oldPair.rightPage; var upLeft = newPair.leftPage; var upRight = newPair.rightPage; if(dstPageOffset > 0) { if(RunTime.book.rightToLeft) { if(downLeft != null) { if(val <= 0.5) downLeft.drawParams = ldp; else downLeft.drawParams = ldp.sliceRight(2 - val * 2); } if(downRight != null) { } if(upLeft != null) upLeft.drawParams = ldp.sliceRight(val,-ldp.dw * 2 * (1 - val)); if(upRight != null) upRight.drawParams = rdp.sliceLeft(val); } else { if(downLeft != null) { if(val <= 0.5) downLeft.drawParams = ldp; else downLeft.drawParams = ldp.sliceLeft(2 - val * 2); } if(downRight != null) { } if(upLeft != null) upLeft.drawParams = ldp.sliceLeft(val,ldp.dw * 2 * (1 - val)); if(upRight != null) upRight.drawParams = rdp.sliceRight(val); } } else { val = -val; if(RunTime.book.rightToLeft) { if(downLeft != null) { if(val <= 0.5) downLeft.drawParams = ldp.sliceLeft(1 - 2 * val); else downLeft.drawParams = null; } if(downRight != null) { if(val <= 0.5) downRight.drawParams = rdp; else downRight.drawParams = rdp.sliceLeft(2 - val * 2); } if(upLeft != null) upLeft.drawParams = ldp.sliceRight(val); if(upRight != null) upRight.drawParams = rdp.sliceLeft(val,rdp.dw * 2 * (1 - val)); } else { if(downLeft != null) { if(val <= 0.5) downLeft.drawParams = ldp.sliceRight(1 - 2 * val); else downLeft.drawParams = null; } if(downRight != null) { if(val <= 0.5) downRight.drawParams = rdp; else downRight.drawParams = rdp.sliceRight(2 - val * 2); } if(upLeft != null) upLeft.drawParams = ldp.sliceLeft(val); if(upRight != null) upRight.drawParams = rdp.sliceRight(val,-rdp.dw * 2 * (1 - val)); } } }; update(0); if(this.tweener != null) this.tweener.stop(); var self = this; var ctx = this.bookContext; var maxCount = 8; this.tweener.onChange = function(count) { var ratio = count / maxCount; offset = dstPageOffset * ratio * ratio * ratio; update(offset); if(count == maxCount) { ctx.clear(true); ctx.addPage(newPair.leftPage); ctx.addPage(newPair.rightPage); self.currentPageNum = pageNum; self.loadCtxHotlinks(); self.loadCtxSlideshow(); self.loadCtxButtons(); self.loadCtxHighLights(); self.loadCtxNotes(); self.loadCurrentBookmark(); self.updateVideos(); self.onEnterPage(); RunTime.flipBook.rightPageLock.style.display = "none"; RunTime.flipBook.leftPageLock.style.display = "none"; if(newPair.rightPage != null && newPair.rightPage.locked && RunTime.bLocked) RunTime.flipBook.rightPageLock.style.display = "block"; if(newPair.leftPage != null && newPair.leftPage.locked && RunTime.bLocked) RunTime.flipBook.leftPageLock.style.display = "block"; } self.bookContext.render(); _g.updateAds(); }; this.clearCtxHotlinks(); this.clearCtxButtons(); this.clearCtxNote(); this.clearCtxHighLight(); this.clearVideos(); this.clearSlideshow(); this.tweener.start(maxCount | 0); this.hideTopBar(); } ,getCurrentPageAudios: function() { var audios = RunTime.book.audios; var match = { left : null, right : null}; var lftPg = -1; var rtPg = -1; var p = this.getCurrentPair(); if(p.leftPage != null) lftPg = p.leftPage.num; if(p.rightPage != null) rtPg = p.rightPage.num; var _g1 = 0, _g = audios.length; while(_g1 < _g) { var i = _g1++; var item = audios[i]; if(item.pageNum == lftPg) match.left = item; else if(item.pageNum == rtPg) match.right = item; } return match; } ,getFullText: function(pages) { var lftPg = -1; var rtPg = -1; var p = this.getCurrentPair(); if(p.leftPage != null) lftPg = p.leftPage.num; if(p.rightPage != null) rtPg = p.rightPage.num; if(lftPg > rtPg) { var tmp = rtPg; rtPg = lftPg; lftPg = tmp; } var result = ""; var _g1 = 0, _g = pages.length; while(_g1 < _g) { var i = _g1++; var item = pages[i]; if(item.num == lftPg) { result += "<br />"; result += "<br />"; result += "==== Page " + Std.string(lftPg + 1) + " ===="; result += "<br />"; result += "<br />"; result += item.content; result += "<br />"; result += "<br />"; } else if(item.num == rtPg) { result += "<br />"; result += "<br />"; result += "==== Page " + Std.string(rtPg + 1) + " ===="; result += "<br />"; result += "<br />"; result += item.content; result += "<br />"; result += "<br />"; } } result = StringTools.replace(result,"\n","<br />"); return result; } ,loadPage: function(index) { this.preloadPages(index); this.currentPageNum = index; this.loadCtxHotlinks(); this.loadCtxSlideshow(); this.loadCtxButtons(); this.loadCtxHighLights(); this.loadCtxNotes(); this.loadCurrentBookmark(); this.updateVideos(); var p = this.getCurrentPair(); this.bookContext.addPage(p.leftPage); this.bookContext.addPage(p.rightPage); if(p.rightPage != null && p.rightPage.locked && RunTime.bLocked) RunTime.flipBook.rightPageLock.style.display = "block"; if(p.leftPage != null && p.leftPage.locked && RunTime.bLocked) RunTime.flipBook.leftPageLock.style.display = "block"; this.bookContext.render(); if(p.leftPage != null) RunTime.logPageView(p.leftPage.num + 1); if(p.rightPage != null) RunTime.logPageView(p.rightPage.num + 1); this.onEnterPage(); if(index != null) this.updateAds(); } ,checkCanZoom: function() { var p = this.getCurrentPair(); if(p.leftPage != null) { if(!p.leftPage.canZoom) return false; } if(p.rightPage != null) { if(!p.rightPage.canZoom) return false; } return true; } ,afterInit: function() { this.tbPage.style.width = "60px"; } ,__class__: DoubleFlipBook }); var EReg = function(r,opt) { opt = opt.split("u").join(""); this.r = new RegExp(r,opt); }; EReg.__name__ = true; EReg.prototype = { customReplace: function(s,f) { var buf = new StringBuf(); while(true) { if(!this.match(s)) break; buf.b += Std.string(this.matchedLeft()); buf.b += Std.string(f(this)); s = this.matchedRight(); } buf.b += Std.string(s); return buf.b; } ,replace: function(s,by) { return s.replace(this.r,by); } ,split: function(s) { var d = "#__delim__#"; return s.replace(this.r,d).split(d); } ,matchedPos: function() { if(this.r.m == null) throw "No string matched"; return { pos : this.r.m.index, len : this.r.m[0].length}; } ,matchedRight: function() { if(this.r.m == null) throw "No string matched"; var sz = this.r.m.index + this.r.m[0].length; return this.r.s.substr(sz,this.r.s.length - sz); } ,matchedLeft: function() { if(this.r.m == null) throw "No string matched"; return this.r.s.substr(0,this.r.m.index); } ,matched: function(n) { return this.r.m != null && n >= 0 && n < this.r.m.length?this.r.m[n]:(function($this) { var $r; throw "EReg::matched"; return $r; }(this)); } ,match: function(s) { if(this.r.global) this.r.lastIndex = 0; this.r.m = this.r.exec(s); this.r.s = s; return this.r.m != null; } ,__class__: EReg } var Hash = function() { this.h = { }; }; Hash.__name__ = true; Hash.prototype = { toString: function() { var s = new StringBuf(); s.b += Std.string("{"); var it = this.keys(); while( it.hasNext() ) { var i = it.next(); s.b += Std.string(i); s.b += Std.string(" => "); s.b += Std.string(Std.string(this.get(i))); if(it.hasNext()) s.b += Std.string(", "); } s.b += Std.string("}"); return s.b; } ,iterator: function() { return { ref : this.h, it : this.keys(), hasNext : function() { return this.it.hasNext(); }, next : function() { var i = this.it.next(); return this.ref["$" + i]; }}; } ,keys: function() { var a = []; for( var key in this.h ) { if(this.h.hasOwnProperty(key)) a.push(key.substr(1)); } return HxOverrides.iter(a); } ,remove: function(key) { key = "$" + key; if(!this.h.hasOwnProperty(key)) return false; delete(this.h[key]); return true; } ,exists: function(key) { return this.h.hasOwnProperty("$" + key); } ,get: function(key) { return this.h["$" + key]; } ,set: function(key,value) { this.h["$" + key] = value; } ,__class__: Hash } var HtmlDomHelper = function() { } HtmlDomHelper.__name__ = true; HtmlDomHelper.setTopBarDefaultSize = function(dom) { dom.style.width = Std.string(RunTime.clientWidth | 0) + "px"; // dom.style.width = "500px"; // dom.style.left = Std.string((RunTime.clientWidth - 500) / 2 | 0) + "px"; dom.style.left = "0px"; } HtmlDomHelper.setTopBarMaxSize = function(dom) { dom.style.width = Std.string(RunTime.clientWidth | 0) + "px"; dom.style.left = "0px"; } HtmlDomHelper.setTopFullTextContentMaxSize = function(dom) { dom.style.width = Std.string((RunTime.clientWidth | 0) - 20) + "px"; dom.style.top = "35px"; dom.style.height = Std.string((RunTime.clientHeight | 0) - 80) + "px"; dom.style.left = "0px"; } var HxOverrides = function() { } HxOverrides.__name__ = true; HxOverrides.dateStr = function(date) { var m = date.getMonth() + 1; var d = date.getDate(); var h = date.getHours(); var mi = date.getMinutes(); var s = date.getSeconds(); return date.getFullYear() + "-" + (m < 10?"0" + m:"" + m) + "-" + (d < 10?"0" + d:"" + d) + " " + (h < 10?"0" + h:"" + h) + ":" + (mi < 10?"0" + mi:"" + mi) + ":" + (s < 10?"0" + s:"" + s); } HxOverrides.strDate = function(s) { switch(s.length) { case 8: var k = s.split(":"); var d = new Date(); d.setTime(0); d.setUTCHours(k[0]); d.setUTCMinutes(k[1]); d.setUTCSeconds(k[2]); return d; case 10: var k = s.split("-"); return new Date(k[0],k[1] - 1,k[2],0,0,0); case 19: var k = s.split(" "); var y = k[0].split("-"); var t = k[1].split(":"); return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]); default: throw "Invalid date format : " + s; } } HxOverrides.cca = function(s,index) { var x = s.charCodeAt(index); if(x != x) return undefined; return x; } HxOverrides.substr = function(s,pos,len) { if(pos != null && pos != 0 && len != null && len < 0) return ""; if(len == null) len = s.length; if(pos < 0) { pos = s.length + pos; if(pos < 0) pos = 0; } else if(len < 0) len = s.length + len - pos; return s.substr(pos,len); } HxOverrides.remove = function(a,obj) { var i = 0; var l = a.length; while(i < l) { if(a[i] == obj) { a.splice(i,1); return true; } i++; } return false; } HxOverrides.iter = function(a) { return { cur : 0, arr : a, hasNext : function() { return this.cur < this.arr.length; }, next : function() { return this.arr[this.cur++]; }}; } var IntIter = function(min,max) { this.min = min; this.max = max; }; IntIter.__name__ = true; IntIter.prototype = { next: function() { return this.min++; } ,hasNext: function() { return this.min < this.max; } ,__class__: IntIter } var L = function() { } L.__name__ = true; L.s = function(key,dftVal) { if(L.instance.exists(key) == false) return dftVal != null?dftVal:key; else return L.instance.get(key); } L.loadRemote = function(url,onSuccess,onError) { orc.utils.Util.request(url,function(data) { var xml = Xml.parse(data); L.loadXml(xml); if(onSuccess != null) onSuccess(); },onError); } L.loadXml = function(xml) { if(xml == null) return; var i = xml.elementsNamed("lang"); if(i.hasNext() == false) return; xml = i.next(); i = xml.elementsNamed("item"); while(i.hasNext() == true) { var node = i.next(); var key = node.get("key"); var val = node.get("value"); L.instance.set(key,val); } } var List = function() { this.length = 0; }; List.__name__ = true; List.prototype = { map: function(f) { var b = new List(); var l = this.h; while(l != null) { var v = l[0]; l = l[1]; b.add(f(v)); } return b; } ,filter: function(f) { var l2 = new List(); var l = this.h; while(l != null) { var v = l[0]; l = l[1]; if(f(v)) l2.add(v); } return l2; } ,join: function(sep) { var s = new StringBuf(); var first = true; var l = this.h; while(l != null) { if(first) first = false; else s.b += Std.string(sep); s.b += Std.string(l[0]); l = l[1]; } return s.b; } ,toString: function() { var s = new StringBuf(); var first = true; var l = this.h; s.b += Std.string("{"); while(l != null) { if(first) first = false; else s.b += Std.string(", "); s.b += Std.string(Std.string(l[0])); l = l[1]; } s.b += Std.string("}"); return s.b; } ,iterator: function() { return { h : this.h, hasNext : function() { return this.h != null; }, next : function() { if(this.h == null) return null; var x = this.h[0]; this.h = this.h[1]; return x; }}; } ,remove: function(v) { var prev = null; var l = this.h; while(l != null) { if(l[0] == v) { if(prev == null) this.h = l[1]; else prev[1] = l[1]; if(this.q == l) this.q = prev; this.length--; return true; } prev = l; l = l[1]; } return false; } ,clear: function() { this.h = null; this.q = null; this.length = 0; } ,isEmpty: function() { return this.h == null; } ,pop: function() { if(this.h == null) return null; var x = this.h[0]; this.h = this.h[1]; if(this.h == null) this.q = null; this.length--; return x; } ,last: function() { return this.q == null?null:this.q[0]; } ,first: function() { return this.h == null?null:this.h[0]; } ,push: function(item) { var x = [item,this.h]; this.h = x; if(this.q == null) this.q = x; this.length++; } ,add: function(item) { var x = [item]; if(this.h == null) this.h = x; else this.q[1] = x; this.q = x; this.length++; } ,__class__: List } var Main = function() { } Main.__name__ = true; Main.main = function() { if(js.Lib.document.getElementById("cvsBook") == null) Zoom.Load(); else RunTime.init(); } Main.testCss = function() { var t = new core.Tweener(); var max = 20; var cvs = js.Lib.document.getElementById("img"); t.onChange = function(count) { var l = Std.string(count * 30); cvs.style.left = l; }; t.start(max); } var core = core || {} core.Book = function() { this.pages = new Array(); this.hotlinks = new Array(); this.videos = new Array(); this.audios = new Array(); this.buttons = new Array(); this.highlights = new Array(); this.notes = new Array(); this.bookmarks = new Array(); this.slideshows = new Array(); this.bookId = ""; this.bookTitle = ""; this.analyticsUA = ""; this.singlepageMode = false; this.rightToLeft = false; this.menuTocVisible = true; this.menuThumbsVisible = true; this.menuSearchVisible = true; this.menuAutoFlipVisible = true; this.menuZoomVisible = true; this.menuBookmarkVisible = true; this.menuNoteVisible = true; this.menuHighlightVisible = true; }; core.Book.__name__ = true; core.Book.prototype = { preloadPages: function(num) { if(num == null) num = 0; if(num < 0 || num > this.pages.length - 1) return; var p = []; p.push(num); p.push(num + 1); p.push(num - 1); p.push(num + 2); p.push(num - 2); p.push(num + 3); p.push(num - 3); p.push(num + 4); p.push(num + 5); var _g1 = 0, _g = p.length; while(_g1 < _g) { var i = _g1++; var index = p[i]; if(index >= 0 && index < this.pages.length) { var page = this.pages[index]; page.getImagePage(); page.loadBigImagePage(); } } } ,__class__: core.Book } var RunTime = function() { } RunTime.__name__ = true; RunTime.alert = function(msg) { js.Lib.alert(msg); } RunTime.init = function() { RunTime.kvPrex = js.Lib.window.location.pathname.split("?")[0]; RunTime.loadingLogo = js.Lib.document.getElementById("loadingLogo"); RunTime.clientWidth = js.Lib.window.document.body.clientWidth; RunTime.clientHeight = js.Lib.window.document.body.clientHeight; RunTime.defaultPageNum = Std.parseInt(orc.utils.Util.getUrlParam("page")); var dom = js.Lib.document.getElementById("hiddenSearch"); var html = dom.innerHTML; dom.innerHTML = ""; RunTime.searchHtmlCache = html; dom = js.Lib.document.getElementById("hiddenInput"); html = dom.innerHTML; dom.innerHTML = ""; RunTime.inputHtmlCache = html; RunTime.bgImage = js.Lib.document.getElementById("bgImage"); RunTime.divLoading = js.Lib.document.getElementById("loading"); RunTime.divLoading.style.top = (RunTime.clientHeight - RunTime.divLoading.clientHeight) / 2 + "px"; RunTime.divLoading.style.left = (RunTime.clientWidth - RunTime.divLoading.clientWidth) / 2 + "px"; RunTime.divLoading.style.display = "inline"; RunTime.preRequestBookInfo(); } RunTime.loadState = function() { var bbv = true; var params = orc.utils.Util.getUrlParams(); var _g1 = 0, _g = params.length; while(_g1 < _g) { var i = _g1++; var item = params[i]; if(item.key == "page") { var num = Std.parseInt(item.value); RunTime.defaultPageNum = num; } else if(item.key == "bbv") { if(item.value == "1") bbv = true; else if(item.value == "0") bbv = false; } else if(item.key == "pcode") RunTime.pcode = item.value; } if(bbv == true) RunTime.flipBook.showBottomBar(); else RunTime.flipBook.hideBottomBar(null,false); } RunTime.requestLanguages = function(callbackFunc) { orc.utils.Util.request(RunTime.urlLang,function(data) { var xml = Xml.parse(data); var i = xml.elementsNamed("languages"); if(i.hasNext() == false) return; xml = i.next(); i = xml.elementsNamed("language"); if(i.hasNext() == false) return; var dftLang = null; while(i.hasNext() == true) { var node = i.next(); var lang = new core.LangCfg(); var cnt = node.get("content"); var dft = node.get("default"); if(dftLang == null) dftLang = lang; lang.content = cnt; if(dft == "yes" || dft == "Yes" || dft == "YES") { lang.isDefault = true; dftLang = lang; } RunTime.languages.push(lang); } if(dftLang != null) { var urlLangResource = RunTime.urlRoot + "data/languages/" + dftLang.content + ".xml"; L.loadRemote(urlLangResource,callbackFunc,callbackFunc); } else callbackFunc(); },callbackFunc); } RunTime.preRequestBookInfo = function() { orc.utils.Util.request(RunTime.urlBookinfo,function(data) { RunTime.bookInfo = Xml.parse(data); RunTime.getBookInfo(); if(RunTime.book.singlepageMode) { RunTime.flipBook = new FlipBook(); RunTime.singlePage = true; } else if(RunTime.clientHeight > RunTime.clientWidth) { RunTime.flipBook = new FlipBook(); RunTime.singlePage = true; } else { RunTime.flipBook = new DoubleFlipBook(); RunTime.singlePage = false; } RunTime.flipBook.zoom = js.Lib.document.getElementById("zoom"); var bookleftpage = js.Lib.document.getElementById("leftpage"); RunTime.flipBook.zoomLeftPage = bookleftpage; var bookrightpage = js.Lib.document.getElementById("rightpage"); RunTime.flipBook.zoomRightPage = bookrightpage; var leftPageLock = js.Lib.document.getElementById("leftPageLock"); var rightPageLock = js.Lib.document.getElementById("rightPageLock"); RunTime.flipBook.leftPageLock = leftPageLock; RunTime.flipBook.rightPageLock = rightPageLock; RunTime.flipBook.root = js.Lib.document.getElementById("cvsBook"); RunTime.flipBook.mask = js.Lib.document.getElementById("mask"); RunTime.flipBook.tbPageCount = js.Lib.document.getElementById("tbPageCount"); RunTime.flipBook.tbPage = js.Lib.document.getElementById("tbPage"); RunTime.flipBook.btnContents = js.Lib.document.getElementById("btnContents"); RunTime.flipBook.btnThumbs = js.Lib.document.getElementById("btnThumbs"); RunTime.flipBook.btnSearch = js.Lib.document.getElementById("btnSearch"); RunTime.flipBook.btnMask = js.Lib.document.getElementById("btnMask"); RunTime.flipBook.btnBookMark = js.Lib.document.getElementById("btnBookMark"); RunTime.flipBook.btnNote = js.Lib.document.getElementById("btnNote"); RunTime.flipBook.btnAboutUs = js.Lib.document.getElementById("btnAboutUs"); RunTime.flipBook.btnPrevPage = js.Lib.document.getElementById("btnPrevPage"); RunTime.flipBook.btnNextPage = js.Lib.document.getElementById("btnNextPage"); RunTime.flipBook.btnFirstPage = js.Lib.document.getElementById("btnFirstPage"); RunTime.flipBook.btnLastPage = js.Lib.document.getElementById("btnLastPage"); RunTime.flipBook.btnAutoFlip = js.Lib.document.getElementById("btnAutoFlip"); RunTime.flipBook.btnDownload = js.Lib.document.getElementById("btnDownload"); RunTime.flipBook.btnEmail = js.Lib.document.getElementById("btnEmail"); RunTime.flipBook.btnSns = js.Lib.document.getElementById("btnSns"); RunTime.flipBook.btnShowTxt = js.Lib.document.getElementById("btnShowTxt"); RunTime.flipBook.imgLogo = js.Lib.document.getElementById("imgLogo"); RunTime.flipBook.topBar = js.Lib.document.getElementById("topBar"); RunTime.flipBook.topBarContent = js.Lib.document.getElementById("topBarContent"); RunTime.flipBook.topFullTextContent = js.Lib.document.getElementById("topFullTextContent"); RunTime.flipBook.bottomBar = js.Lib.document.getElementById("bottomBar"); RunTime.flipBook.bottomBarBg = js.Lib.document.getElementById("bottomBarBg"); RunTime.flipBook.bottomBarBg.style.opacity = RunTime.bottomBarAlpha; RunTime.flipBook.topMenuBar = js.Lib.document.getElementById("topMenuBar"); RunTime.flipBook.topMenuBarBg = js.Lib.document.getElementById("topMenuBarBg"); RunTime.flipBook.topMenuBarBg.style.opacity = RunTime.bottomBarAlpha; RunTime.flipBook.topBarContent.style.zIndex = 10000; RunTime.flipBook.menuParent = js.Lib.document.getElementById("menuParent"); RunTime.flipBook.maskPopup = js.Lib.document.getElementById("maskPopup"); RunTime.flipBook.cvsSlideshow = js.Lib.document.getElementById("cvsSlideshow"); RunTime.flipBook.cvsVideo = js.Lib.document.getElementById("cvsVideo"); RunTime.flipBook.cvsOthers = js.Lib.document.getElementById("cvsOthers"); RunTime.flipBook.cvsAudio = js.Lib.document.getElementById("cvsAudio"); RunTime.flipBook.cvsLeftPageBgAudio = js.Lib.document.getElementById("cvsLeftPageBgAudio"); RunTime.flipBook.cvsRightPageBgAudio = js.Lib.document.getElementById("cvsRightPageBgAudio"); RunTime.flipBook.cvsYoutube = js.Lib.document.getElementById("cvsYoutube"); RunTime.flipBook.btnZoom = js.Lib.document.getElementById("btnZoom"); var left = (RunTime.clientWidth - 500) / 2 | 0; RunTime.flipBook.topBar.style.left = Std.string(left) + "px"; var c = RunTime.flipBook.root; RunTime.flipBook.canvas = c; RunTime.flipBook.attachActions(); var t = js.Lib.window.navigator.userAgent; if(t.indexOf("CPU iPhone OS ") != -1) { var iosVar = HxOverrides.substr(t,t.indexOf("CPU iPhone OS ") + 14,1); if(iosVar == "7") { if(RunTime.clientWidth >= 480) RunTime.clientHeight -= 60; } } c.width = RunTime.clientWidth; c.height = RunTime.clientHeight; if(RunTime.clientWidth < 800) { js.Lib.document.getElementById("btnFirstPage").style.marginLeft = "10px"; js.Lib.document.getElementById("btnPrevPage").style.marginLeft = "10px"; js.Lib.document.getElementById("btnNextPage").style.marginLeft = "10px"; js.Lib.document.getElementById("btnLastPage").style.marginLeft = "10px"; } var cvsButton = js.Lib.document.getElementById("cvsButton"); RunTime.flipBook.cvsButton = cvsButton; cvsButton.width = RunTime.clientWidth; cvsButton.height = RunTime.clientHeight; var cvsHighLight = js.Lib.document.getElementById("cvsHighLight"); RunTime.flipBook.cvsHighLight = cvsHighLight; cvsHighLight.width = RunTime.clientWidth; cvsHighLight.height = RunTime.clientHeight; var cvsNote = js.Lib.document.getElementById("cvsNote"); RunTime.flipBook.cvsNote = cvsNote; cvsNote.width = RunTime.clientWidth; cvsNote.height = RunTime.clientHeight; var cvsBookmark = js.Lib.document.getElementById("cvsBookmark"); RunTime.flipBook.cvsBookmark = cvsBookmark; cvsBookmark.width = RunTime.clientWidth; cvsBookmark.height = RunTime.clientHeight; RunTime.flipBook.zoom.style.width = RunTime.clientWidth + "px"; RunTime.flipBook.zoom.style.height = RunTime.clientHeight + "px"; RunTime.flipBook.afterInit(); RunTime.flipBook.bookContext.ctx = RunTime.flipBook.getContext(); RunTime.flipBook.bookContext.ctxButton = RunTime.flipBook.getButtonContext(); RunTime.flipBook.bookContext.ctxHighLight = RunTime.flipBook.getHighLightContext(); RunTime.flipBook.bookContext.ctxNote = RunTime.flipBook.getNoteContext(); RunTime.flipBook.bookContext.ctxBookmark = RunTime.flipBook.getBookmarkContext(); RunTime.requestLanguages(RunTime.requestBookInfo); }); } RunTime.requestBookInfo = function() { orc.utils.Util.request(RunTime.urlBookinfo,function(data) { RunTime.bookInfo = Xml.parse(data); RunTime.loadBookInfo(); RunTime.key = RunTime.calcKey(RunTime.book.pageWidth | 0,RunTime.book.pageHeight | 0); var defaultKey = "Pwd-Empty"; if(RunTime.pcode.length > 0) defaultKey = RunTime.decode64(RunTime.pcode); //var encode = RunTime.encryptKey(defaultKey,RunTime.key); //if(encode == RunTime.book.password) { // if(encode == RunTime.book.password && RunTime.pcode.length > 0) RunTime.bLocked = false; RunTime.afterRequestBookInfo(); //} else if(RunTime.book.lockPages != null) { // if(RunTime.book.lockPages.length > 0) { // if(encode == RunTime.book.password && RunTime.pcode.length > 0) RunTime.bLocked = false; // RunTime.afterRequestBookInfo(); // } //} else RunTime.InputPwd(); if(!RunTime.singlePage) RunTime.flipBook.requestMainAd(); RunTime.hideLoadingLogo(); }); } RunTime.InputPwd = function() { RunTime.showPopupMaskLayer(); RunTime.flipBook.cvsOthers.innerHTML = core.HtmlHelper.toInputPwdHtml(); } RunTime.InputUnlock = function() { RunTime.showPopupMaskLayer(); RunTime.flipBook.cvsOthers.innerHTML = core.HtmlHelper.toInputUnlockPwdHtml(); } RunTime.tryPwd = function(pwd) { //var encode = RunTime.encryptKey(pwd,RunTime.key); //if(encode == RunTime.book.password) { RunTime.pcode = StringTools.urlEncode(RunTime.encode64(pwd,false)); RunTime.afterRequestBookInfo(); //} else js.Lib.window.alert(L.s("PasswordError")); } RunTime.tryUnlock = function(pwd) { //var encode = RunTime.encryptKey(pwd,RunTime.key); //if(encode == RunTime.book.password) { RunTime.pcode = StringTools.urlEncode(RunTime.encode64(pwd,false)); js.Lib.document.getElementById("inputBox").style.display = "none"; RunTime.clearPopupContents(); RunTime.bLocked = false; RunTime.flipBook.leftPageLock.style.display = "none"; RunTime.flipBook.rightPageLock.style.display = "none"; RunTime.flipBook.bookContext.render(); //} else js.Lib.window.alert(L.s("PasswordError")); } RunTime.afterRequestBookInfo = function() { RunTime.flipBook.cvsOthers.innerHTML = ""; RunTime.clearPopupContents(); RunTime.requestPages(); RunTime.useAnalyticsUA(RunTime.book.analyticsUA,RunTime.book.bookId); } RunTime.requestPages = function() { orc.utils.Util.request(RunTime.urlPageInfo,function(data) { RunTime.pageInfo = Xml.parse(data); RunTime.loadPageInfo(); RunTime.requestHotlinks(); RunTime.requestHotlinks2(); RunTime.requestSlideshow(); RunTime.requestContents(); RunTime.requestShare(); RunTime.requestAbout(); RunTime.requestVideos(); RunTime.reauestAudios(); RunTime.requestButtons(); RunTime.readLocalHighLights(); RunTime.readLocalNotes(); RunTime.requestBookmark(); RunTime.readLocalBookmarks(); }); } RunTime.requestSlideshow = function(onSuccess) { orc.utils.Util.request(RunTime.urlSlideshow,function(data) { var dom = new DOMParser(); var ctx = new Xml2Html(); RunTime.slideshow = dom.parseFromString(ctx.prepareXmlAsHtml(data),"text/xml"); RunTime.loadSlideshow(ctx); if(RunTime.flipBook != null) { RunTime.flipBook.loadCtxSlideshow(); RunTime.flipBook.bookContext.render(); } if(onSuccess != null) onSuccess(); }); } RunTime.requestHotlinks = function(onSuccess) { orc.utils.Util.request(RunTime.urlHotlinks,function(data) { var dom = new DOMParser(); var ctx = new Xml2Html(); RunTime.hotlinkInfo = dom.parseFromString(ctx.prepareXmlAsHtml(data),"text/xml"); RunTime.loadHotlinks(ctx); if(RunTime.flipBook != null) { RunTime.flipBook.loadCtxHotlinks(); RunTime.flipBook.bookContext.render(); } if(onSuccess != null) onSuccess(); }); } RunTime.requestHotlinks2 = function (onSuccess) { orc.utils.Util.request(RunTime.urlHotlinks2, function (data) { var dom = new DOMParser(); var ctx = new Xml2Html(); RunTime.hotlinkInfo = dom.parseFromString(ctx.prepareXmlAsHtml(data), "text/xml"); RunTime.loadHotlinks2(ctx); if (RunTime.flipBook != null) { RunTime.flipBook.loadCtxHotlinks(); RunTime.flipBook.bookContext.render(); } if (onSuccess != null) onSuccess(); }); } RunTime.requestVideos = function(onSuccess) { orc.utils.Util.request(RunTime.urlVideos,function(data) { RunTime.videoInfo = Xml.parse(data); RunTime.loadVideos(); if(RunTime.flipBook != null) { RunTime.flipBook.updateVideos(); RunTime.flipBook.bookContext.render(); } if(onSuccess != null) onSuccess(); }); } RunTime.reauestAudios = function(onSuccess) { orc.utils.Util.request(RunTime.urlAudios,function(data) { RunTime.audioInfo = Xml.parse(data); RunTime.loadAudios(); if(RunTime.flipBook != null) RunTime.flipBook.updateAudios(); if(onSuccess != null) onSuccess(); }); } RunTime.requestButtons = function(onSuccess) { orc.utils.Util.request(RunTime.urlButtons,function(data) { RunTime.buttonInfo = Xml.parse(data); RunTime.loadButtons(); if(RunTime.flipBook != null) { RunTime.flipBook.loadCtxButtons(); RunTime.flipBook.bookContext.render(); } if(onSuccess != null) onSuccess(); }); } RunTime.requestContents = function() { orc.utils.Util.request(RunTime.urlContents,function(data) { RunTime.contentInfo = Xml.parse(data); }); } RunTime.requestShare = function() { orc.utils.Util.request(RunTime.urlShareInfo,function(data) { RunTime.shareInfo = Xml.parse(data); }); } RunTime.requestAbout = function() { orc.utils.Util.request(RunTime.urlAbout,function(data) { RunTime.aboutInfo = Xml.parse(data); }); } RunTime.requestSearch = function(invoke) { orc.utils.Util.request(RunTime.urlSearch,function(data) { var dom = new DOMParser(); var ctx = new Xml2Html(); RunTime.searchInfo = dom.parseFromString(ctx.prepareXmlAsHtml(data),"text/xml"); RunTime.loadPageContents(ctx); if(invoke != null) invoke(RunTime.book.pages); }); } RunTime.requestBookmark = function() { orc.utils.Util.request(RunTime.urlBookmarks,function(data) { RunTime.bookmarkInfo = Xml.parse(data); var it = RunTime.bookmarkInfo.firstElement().elementsNamed("bookmark"); do { var node = it.next(); if(node == null) break; var bk = new core.Bookmark(); bk.pageNum = node.get("page"); bk.text = node.get("content"); bk.onlyread = true; RunTime.book.bookmarks.push(bk); } while(it.hasNext()); }); } RunTime.invokePageContentsAction = function(invoke) { if(RunTime.searchInfo == null) RunTime.requestSearch(invoke); else invoke(RunTime.book.pages); } RunTime.loadPageContents = function(ctx) { if(RunTime.searchInfo == null) return; var dom = RunTime.searchInfo; var pages = dom.getElementsByTagName("page"); var _g1 = 0, _g = pages.length; while(_g1 < _g) { var i = _g1++; var node = pages[i]; var pageNumVal = node.getAttribute("pageNumber"); var htmlText = null; var htmlTextDoms = node.getElementsByTagName("cdata"); if(htmlTextDoms != null && htmlTextDoms.length > 0) { htmlText = StringTools.trim(htmlTextDoms[0].childNodes[0].nodeValue); htmlText = ctx.getCData(htmlText); } var _g3 = 0, _g2 = RunTime.book.pages.length; while(_g3 < _g2) { var k = _g3++; var page = RunTime.book.pages[k]; if(page.id == pageNumVal) page.content = htmlText; } } } RunTime.showLoadingLogo = function(loadingUrl) { if(loadingUrl == null || loadingUrl == "") return; RunTime.loadingLogo.innerHTML = "<img src='" + loadingUrl + "'>"; RunTime.loadingLogo.style.top = (RunTime.clientHeight - RunTime.loadingLogo.clientHeight) / 2 + "px"; RunTime.loadingLogo.style.left = (RunTime.clientWidth - RunTime.loadingLogo.clientWidth) / 2 + "px"; RunTime.loadingLogo.style.display = "inline"; } RunTime.hideLoadingLogo = function() { RunTime.loadingLogo.innerHTML = ""; RunTime.loadingLogo.style.display = "none"; } RunTime.reload = function() { js.Lib.window.location.href = RunTime.flipBook.getFullUrl(); } RunTime.navigateUrl = function(url) { if(url == null || url == "null" || url == "") return; js.Lib.window.location.href = url; } RunTime.getBookInfo = function() { if(RunTime.bookInfo == null) return; var i = RunTime.bookInfo.elementsNamed("bookinfo"); if(i.hasNext() == false) return; var node = i.next(); RunTime.showLoadingLogo(node.get("loadingLogo")); RunTime.book.singlepageMode = node.get("singlepageMode") == "true"?true:false; RunTime.book.rightToLeft = node.get("rightToLeft") == "true"?true:false; RunTime.book.autoFlipSecond = Std.parseInt(node.get("autoFlipSeconds")); RunTime.book.gateway = node.get("gateway"); RunTime.book.shareHref = node.get("shareUrl"); } RunTime.loadBookInfo = function() { if(RunTime.bookInfo == null) return; var i = RunTime.bookInfo.elementsNamed("bookinfo"); if(i.hasNext() == false) return; var node = i.next(); var idVal = node.get("id"); if(idVal == null) idVal = ""; RunTime.book.bookId = idVal; RunTime.book.bookTitle = node.get("title"); RunTime.book.bgColor = node.get("bgColor"); RunTime.book.bgImageUrl = node.get("bgImage"); RunTime.book.analyticsUA = node.get("analyticsUA"); RunTime.book.password = node.get("password"); RunTime.book.bookDownloadUrl = node.get("pdfUrl"); var locked = node.get("protectedPages"); if(locked != null && locked != "") RunTime.book.lockPages = locked.split(","); if(RunTime.book.bgColor == "" || RunTime.book.bgColor == null) RunTime.book.bgColor = "gray"; if(RunTime.book.bgColor != "" && RunTime.book.bgColor != null) js.Lib.document.body.style.backgroundColor = RunTime.book.bgColor; if(RunTime.book.bgImageUrl != "" && RunTime.book.bgImageUrl != null) { js.Lib.document.body.style.backgroundImage = "url(" + RunTime.book.bgImageUrl + ")"; js.Lib.document.body.style.backgroundRepeat = "no-repeat"; js.Lib.document.body.style.backgroundPosition = "center"; js.Lib.document.body.style.backgroundSize = "cover"; js.Lib.document.body.style.backgroundClip = "border-box"; } js.Lib.window.document.title = RunTime.book.bookTitle; var pageWidth = Std.parseFloat(node.get("pageWidth")); var pageHeight = Std.parseFloat(node.get("pageHeight")); RunTime.book.pageWidth = pageWidth; RunTime.book.pageHeight = pageHeight; var m = new orc.utils.ImageMetricHelper(pageWidth,pageHeight); var w = RunTime.clientWidth; var h = RunTime.clientHeight; var scale = m.getMaxFitScale(w,h); RunTime.defaultScale = scale; RunTime.imagePageWidth = pageWidth * scale; RunTime.imagePageHeight = pageHeight * scale; RunTime.pageScale = scale; var li = node.elementsNamed("bookLogo"); if(li.hasNext() == true) { var lnode = li.next(); RunTime.book.logoUrl = lnode.get("url"); RunTime.book.logoHref = lnode.get("href"); } if(RunTime.book.logoUrl != null && RunTime.book.logoUrl != "") { var hideLogo = false; if(RunTime.clientWidth < 600) hideLogo = true; if(js.Lib.window.navigator.userAgent.indexOf("iPhone") != -1) hideLogo = true; if(!hideLogo) { RunTime.flipBook.imgLogo.style.display = "inline"; var obj = RunTime.flipBook.imgLogo; obj.src = RunTime.book.logoUrl; RunTime.flipBook.imgLogo.onclick = RunTime.onLogoClick; } } RunTime.flipBook.btnDownload.onclick = RunTime.onDownloadClick; var bottomMenuIter = node.elementsNamed("bottommenu"); if(bottomMenuIter.hasNext() == true) { var bottomMenuNode = bottomMenuIter.next(); RunTime.book.menuAutoFlipVisible = RunTime.getMenuVisible(bottomMenuNode,"autoflip"); RunTime.book.menuSearchVisible = RunTime.getMenuVisible(bottomMenuNode,"search"); RunTime.book.menuTxtVisible = RunTime.getMenuVisible(bottomMenuNode,"txt"); RunTime.book.menuZoomVisible = RunTime.getMenuVisible(bottomMenuNode,"zoom"); RunTime.book.menuBookmarkVisible = RunTime.getMenuVisible(bottomMenuNode,"bookmark"); RunTime.book.menuNoteVisible = RunTime.getMenuVisible(bottomMenuNode,"notes"); RunTime.book.menuHighlightVisible = RunTime.getMenuVisible(bottomMenuNode,"highlight"); RunTime.book.menuEmailVisible = RunTime.getMenuVisible(bottomMenuNode,"email"); } var leftMenuIter = node.elementsNamed("leftmenu"); if(leftMenuIter.hasNext() == true) { var leftMenuNode = leftMenuIter.next(); RunTime.book.menuTocVisible = RunTime.getMenuVisible(leftMenuNode,"toc"); RunTime.book.menuThumbsVisible = RunTime.getMenuVisible(leftMenuNode,"thumbs"); RunTime.book.menuDownloadVisible = RunTime.getMenuEntirePDF(leftMenuNode,"pdf"); // RunTime.book.menuEmailVisible = RunTime.getMenuVisible(leftMenuNode,"email"); RunTime.book.menuSnsVisible = RunTime.getMenuVisible(leftMenuNode,"sns"); RunTime.book.menuAboutUsVisible = RunTime.getMenuVisible(leftMenuNode,"about"); } var menuArray = [RunTime.flipBook.btnContents,RunTime.flipBook.btnThumbs,RunTime.flipBook.btnSearch,RunTime.flipBook.btnShowTxt,RunTime.flipBook.btnMask,RunTime.flipBook.btnBookMark,RunTime.flipBook.btnAutoFlip,RunTime.flipBook.btnEmail,RunTime.flipBook.btnSns,RunTime.flipBook.btnAboutUs]; var showArray = [RunTime.book.menuTocVisible,RunTime.book.menuThumbsVisible,RunTime.book.menuSearchVisible,RunTime.book.menuTxtVisible,RunTime.book.menuHighlightVisible,RunTime.book.menuBookmarkVisible,RunTime.book.menuAutoFlipVisible,RunTime.book.menuEmailVisible,RunTime.book.menuSnsVisible,RunTime.book.menuAboutUsVisible]; var menuCount = 10; var t = js.Lib.window.navigator.userAgent; if(t.indexOf("CPU iPhone OS ") != -1) { var iosVar = HxOverrides.substr(t,t.indexOf("CPU iPhone OS ") + 14,1); if(iosVar == "7") { } if(RunTime.clientWidth >= 480) menuCount = 6; else menuCount = 4; } else if(RunTime.clientWidth < 480) menuCount = 5; else if(RunTime.clientWidth == 480) menuCount = 7; else menuCount = 9; var i1 = 0; while(i1 < menuCount) { RunTime.setMenuVisible(menuArray[i1],showArray[i1]); i1++; } RunTime.loadState(); } RunTime.setMenuVisible = function(menu,visible) { if(visible == true) menu.style.display = "inline"; else try { RunTime.flipBook.menuParent.removeChild(menu); } catch( e ) { } } RunTime.getMenuVisible = function(parent,nodeName) { var li = parent.elementsNamed(nodeName); if(li.hasNext() == true) { var lnode = li.next(); if(lnode.get("visible") == "false") return false; } return true; } RunTime.getMenuEntirePDF = function(parent,nodeName) { var li = parent.elementsNamed(nodeName); if(li.hasNext() == true) { var lnode = li.next(); if(lnode.get("entirePDF") == "true") return true; } return false; } RunTime.onLogoClick = function(e) { if(RunTime.book == null || RunTime.book.logoHref == null || RunTime.book.logoHref == "") return; js.Lib.window.location.href = RunTime.book.logoHref; } RunTime.onDownloadClick = function(e) { if(RunTime.book == null || RunTime.book.bookDownloadUrl == null || RunTime.book.bookDownloadUrl == "") return; js.Lib.window.location.href = RunTime.book.bookDownloadUrl; } RunTime.onSendEmail = function() { RunTime.sendEmailByService(); } RunTime.sendEmailResult = function() { if(RunTime.sendService.responseText.length < 2) { js.Lib.alert(L.s("EmailSendSuccessful")); var tomail = js.Lib.window.document.getElementById("tomail"); tomail.value = ""; var frommail = js.Lib.window.document.getElementById("youremail"); frommail.value = ""; var n = js.Lib.window.document.getElementById("yname"); n.value = ""; var m = js.Lib.window.document.getElementById("sharemsg"); m.value = ""; } else js.Lib.alert(L.s("EmailSendFailed")); } RunTime.sendEmailByService = function() { var baseUrl = js.Lib.window.location.href.split("?")[0]; baseUrl = baseUrl.substring(0,baseUrl.lastIndexOf("/")); var tomail = js.Lib.window.document.getElementById("tomail"); var frommail = js.Lib.window.document.getElementById("youremail"); var n = js.Lib.window.document.getElementById("yname"); var subject = L.s("YourFriend","YourFirend") + Std.string(n.value) + L.s("ShareEmailTitle","ShareEmailTitle"); js.Lib.window.document.getElementById("subject").setAttribute("value",subject); var m = js.Lib.window.document.getElementById("sharemsg"); var msg = m.value; msg += "<br /> <br /> " + Std.string(n.value) + L.s("ShareEmailContent") + "<a href='" + RunTime.book.shareHref + "' target='_black'>" + RunTime.book.shareHref + "<a/>" + "<br /> <br />" + "<a href='" + RunTime.book.shareHref + "' target='_black'>" + "<img src='" + baseUrl + "/" + RunTime.book.pages[0].urlThumb + "' >" + "<a/>"; RunTime.sendService = new XMLHttpRequest(); var query = "tomail=" + Std.string(tomail.value) + "&frommail=" + Std.string(frommail.value) + "&subject=" + subject + "&message=" + msg; RunTime.sendService.open("get",RunTime.book.gateway + "?" + query,true); RunTime.sendService.onreadystatechange = RunTime.sendEmailResult; RunTime.sendService.send(); } RunTime.sendEmailByForm = function() { var n = js.Lib.window.document.getElementById("yname"); var subject = L.s("YourFriend","YourFirend") + Std.string(n.value) + L.s("ShareEmailTitle","ShareEmailTitle"); js.Lib.window.document.getElementById("subject").setAttribute("value",subject); var m = js.Lib.window.document.getElementById("sharemsg"); var msg = m.value; msg += "<br /> <br /> " + Std.string(n.value) + L.s("ShareEmailContent") + "<a href='" + RunTime.book.shareHref + "' target='_black'>" + RunTime.book.shareHref + "<a/>" + "<br /> <br />" + "<a href='" + RunTime.book.shareHref + "' target='_black'>" + "<img src='" + RunTime.book.pages[0].urlThumb + "' >" + "<a/>"; var b = js.Lib.window.document.getElementById("sendEmail"); b.submit(); } RunTime.loadPageInfo = function() { if(RunTime.pageInfo == null) return; var root = RunTime.pageInfo.firstElement(); var val = root.get("preload"); if(val.toLowerCase() == "true") RunTime.enablePreload = true; var i = root.elementsNamed("page"); var num = 0; var numDouble = 0.1; while(i.hasNext() == true) { var node = i.next(); var id = node.get("id"); var source = node.get("source"); var medium = node.get("medium"); var thumb = node.get("thumb"); var canZoom = !(node.get("canZoom") == "false"); var page = new core.Page(); RunTime.book.pages.push(page); if(medium == null || medium == "") medium = "content/medium/page" + Std.string(num + 1) + ".jpg"; page.id = id; page.num = num; page.numInDoubleMode = Math.round(numDouble) | 0; page.urlPage = RunTime.urlRoot + medium; page.urlBigPage = RunTime.urlRoot + source; page.urlThumb = RunTime.urlRoot + thumb; page.urlFullPage = RunTime.urlRoot + source; page.canZoom = canZoom; page.locked = RunTime.checkLocked(num + 1); numDouble += 0.5; num++; } RunTime.flipBook.setPageCount(RunTime.book.pages.length); RunTime.flipBook.setCurrentPage(RunTime.defaultPageNum + 1); RunTime.flipBook.loadPage(RunTime.defaultPageNum); } RunTime.checkLocked = function(num) { if(RunTime.book.lockPages == null || RunTime.book.lockPages.length == 0) return false; var _g1 = 0, _g = RunTime.book.lockPages.length; while(_g1 < _g) { var i = _g1++; if(Std.parseInt(RunTime.book.lockPages[i]) == num) return true; } return false; } RunTime.loadSlideshow = function(ctx) { if(RunTime.slideshow == null) return; var dom = RunTime.slideshow; var slides = dom.getElementsByTagName("slideshow"); var _g1 = 0, _g = slides.length; while(_g1 < _g) { var i = _g1++; var node = slides[i]; var pageNumVal = node.getAttribute("page"); var xVal = node.getAttribute("x"); var yVal = node.getAttribute("y"); var widthVal = node.getAttribute("width"); var heightVal = node.getAttribute("height"); var timeVal = node.getAttribute("time"); var transitionVal = node.getAttribute("transition"); var idVal = node.getAttribute("sid"); var bgColorVal = node.getAttribute("bgColor"); var slideshowInfo = new core.SlideshowInfo(); var pics = node.getElementsByTagName("pic"); var _g3 = 0, _g2 = pics.length; while(_g3 < _g2) { var j = _g3++; var pnode = pics[j]; var slide = new core.Slide(); slide.url = RunTime.urlRoot + pnode.getAttribute("url"); slide.href = pnode.getAttribute("href"); slideshowInfo.slides.push(slide); } slideshowInfo.pageNum = Std.parseInt(pageNumVal) - 1; slideshowInfo.x = Std.parseFloat(xVal); slideshowInfo.y = Std.parseFloat(yVal); slideshowInfo.width = Std.parseFloat(widthVal); slideshowInfo.height = Std.parseFloat(heightVal); slideshowInfo.interval = timeVal; slideshowInfo.transition = transitionVal; slideshowInfo.id = idVal; slideshowInfo.bgColor = bgColorVal; RunTime.book.slideshows.push(slideshowInfo); } } RunTime.loadHotlinks = function(ctx) { if(RunTime.hotlinkInfo == null) return; var dom = RunTime.hotlinkInfo; var links = dom.getElementsByTagName("hotlink"); var _g1 = 0, _g = links.length; while(_g1 < _g) { var i = _g1++; var node = links[i]; var pageNumVal = node.getAttribute("page"); var xVal = node.getAttribute("x"); var yVal = node.getAttribute("y"); var widthVal = node.getAttribute("width"); var heightVal = node.getAttribute("height"); var colorVal = node.getAttribute("color"); var opacityVal = node.getAttribute("opacity"); var destinationVal = node.getAttribute("destination"); var typeVal = node.getAttribute("type"); var popupWidthVal = node.getAttribute("popupWidth"); var popupHeightVal = node.getAttribute("popupHeight"); var youtubeIdVal = node.getAttribute("youtubeId"); var target = node.getAttribute("target"); var window_color = node.getAttribute("windowColor"); var htmlText = null; var htmlTextDoms = node.getElementsByTagName("cdata"); if(htmlTextDoms != null && htmlTextDoms.length > 0) { htmlText = StringTools.trim(htmlTextDoms[0].childNodes[0].nodeValue); htmlText = ctx.getCData(htmlText); } try { var iframe = node.getElementsByTagName("iframe")[0]; if(iframe != null) htmlText = "<iframe src=\"" + iframe.getAttribute("src") + "\" frameborder=\"0\" style=\"width:100%;height:100%\" scrolling=\"yes\" ></iframe>"; } catch( ex ) { } var link = new core.HotLink(); link.pageNum = Std.parseInt(pageNumVal) - 1; link.x = Std.parseFloat(xVal); link.y = Std.parseFloat(yVal); link.width = Std.parseFloat(widthVal); link.height = Std.parseFloat(heightVal); link.htmlText = htmlText; if(popupWidthVal != null) link.popupWidth = Std.parseInt(popupWidthVal); if(popupHeightVal != null) link.popupHeight = Std.parseInt(popupHeightVal); link.youtubeId = youtubeIdVal; link.type = typeVal == null?"":typeVal; if(target != null) link.target = target == ""?"_blank":target; if(window_color != null) link.window_color = window_color; if(colorVal != null) { colorVal = StringTools.replace(colorVal,"0x","#"); colorVal = StringTools.replace(colorVal,"0X","#"); link.color = colorVal; } if(opacityVal != null) link.opacity = Std.parseFloat(opacityVal); if(destinationVal != null) link.destination = destinationVal; RunTime.book.hotlinks.push(link); } } RunTime.loadHotlinks2 = function (ctx) { if (RunTime.hotlinkInfo == null) return; var dom = RunTime.hotlinkInfo; var links = dom.getElementsByTagName("text"); var _g1 = 0, _g = links.length; while (_g1 < _g) { var i = _g1++; var node = links[i]; var pageNumVal = node.getAttribute("page"); var xVal = node.getAttribute("x"); var yVal = node.getAttribute("y"); var widthVal = node.getAttribute("width"); var fontSize = node.getAttribute("fontSize"); var fontName = node.getAttribute("fontName"); var heightVal = node.getAttribute("height"); var colorVal = node.getAttribute("color"); var opacityVal = node.getAttribute("opacity"); var destinationVal = node.getAttribute("destination"); var typeVal = node.getAttribute("type"); var popupWidthVal = node.getAttribute("popupWidth"); var popupHeightVal = node.getAttribute("popupHeight"); var youtubeIdVal = node.getAttribute("youtubeId"); var wz = node.getAttribute("content"); var target = node.getAttribute("target"); var window_color = node.getAttribute("windowColor"); var htmlText = wz; var htmlTextDoms = node.getElementsByTagName("cdata"); if (htmlTextDoms != null && htmlTextDoms.length > 0) { htmlText = StringTools.trim(htmlTextDoms[0].childNodes[0].nodeValue); htmlText = ctx.getCData(htmlText); } try { var iframe = node.getElementsByTagName("iframe")[0]; if (iframe != null) htmlText = "<iframe src=\"" + iframe.getAttribute("src") + "\" frameborder=\"0\" style=\"width:100%;height:100%\" scrolling=\"yes\" ></iframe>"; } catch (ex) { } var link = new core.HotLink(); link.tt = 1; link.pageNum = Std.parseInt(pageNumVal) - 1; link.x = Std.parseFloat(xVal); link.y = Std.parseFloat(yVal); link.width = Std.parseFloat(widthVal); link.height = Std.parseFloat(heightVal); link.color = colorVal; link.text = htmlText; link.fontName = fontName; link.fontSize = fontSize; if (popupWidthVal != null) link.popupWidth = Std.parseInt(popupWidthVal); if (popupHeightVal != null) link.popupHeight = Std.parseInt(popupHeightVal); link.youtubeId = youtubeIdVal; link.type = typeVal == null ? "" : typeVal; if (target != null) link.target = target == "" ? "_blank" : target; if (window_color != null) link.window_color = window_color; if (colorVal != null) { colorVal = StringTools.replace(colorVal, "0x", "#"); colorVal = StringTools.replace(colorVal, "0X", "#"); link.color = colorVal; } if (opacityVal != null) link.opacity = Std.parseFloat(opacityVal); if (destinationVal != null) link.destination = destinationVal; RunTime.book.hotlinks.push(link); } } RunTime.loadVideos = function() { if(RunTime.videoInfo == null) return; var index = 0; var i = RunTime.videoInfo.firstElement().elementsNamed("video"); while(i.hasNext() == true) { var node = i.next(); var pageNumVal = node.get("page"); var xVal = node.get("x"); var yVal = node.get("y"); var widthVal = node.get("width"); var heightVal = node.get("height"); var autoPlayVal = node.get("autoPlay"); var showControlVal = node.get("showControl"); var autoRepeatVal = node.get("autoRepeat"); var urlVal = node.get("url"); var youtubeIdVal = node.get("youtubeId"); var video = new core.VideoInfo(); video.pageNum = Std.parseInt(pageNumVal) - 1; video.x = Std.parseFloat(xVal); video.y = Std.parseFloat(yVal); video.width = Std.parseFloat(widthVal); video.height = Std.parseFloat(heightVal); video.autoPlay = autoPlayVal == "true"; video.showControl = showControlVal == "true"; video.autoRepeat = autoRepeatVal == "true"; video.url = RunTime.urlRoot + urlVal; video.youtubeId = youtubeIdVal; video.id = "video_embed_" + Std.string(index); RunTime.book.videos.push(video); index++; } } RunTime.loadAudios = function() { if(RunTime.audioInfo == null) return; var index = 0; var i = RunTime.audioInfo.firstElement().elementsNamed("pages"); if(i.hasNext() == true) { var index1 = 0; i = i.next().elementsNamed("sound"); while(i.hasNext() == true) { var node = i.next(); var pageNumVal = node.get("pageNumber"); var urlVal = node.get("url"); var audio = new core.AudioInfo(); audio.url = RunTime.urlRoot + urlVal; audio.pageNum = Std.parseInt(pageNumVal) - 1; audio.id = "audio_embed_" + Std.string(index1); index1++; RunTime.book.audios.push(audio); } } } RunTime.extractCData = function(txt) { if(txt == null) return null; var first = txt.indexOf("<![CDATA["); var last = txt.lastIndexOf("]]>"); if(first < 0 || last < 0 || last < first) return null; return HxOverrides.substr(txt,first + "<![CDATA[".length,last - first - "<![CDATA[".length); } RunTime.loadButtons = function() { if(RunTime.buttonInfo == null) return; var i = RunTime.buttonInfo.firstElement().elementsNamed("button"); while(i.hasNext() == true) { var node = i.next(); var pageNumVal = node.get("page"); var xVal = node.get("x"); var yVal = node.get("y"); var widthVal = node.get("width"); var heightVal = node.get("height"); var imageVal = node.get("image"); var typeVal = node.get("type"); var popupWidthVal = node.get("popupWidth"); var popupHeightVal = node.get("popupHeight"); var youtubeIdVal = node.get("youtubeId"); var destinationVal = node.get("destination"); var layer = node.get("layer"); var textVal = ""; var fontColorVal = ""; var fontSizeVal = ""; var window_color = node.get("windowColor"); var target = node.get("target"); if(node.get("text") != null) textVal = node.get("text"); if(node.get("fontColor") != null) fontColorVal = node.get("fontColor"); if(node.get("fontSize") != null) fontSizeVal = node.get("fontSize"); var htmlText = RunTime.extractCData(node.toString()); try { var iframe = node.elementsNamed("iframe").next(); if(iframe != null) htmlText = "<iframe src=\"" + iframe.get("src") + "\" frameborder=\"0\" style=\"width:100%;height:100%\" scrolling='yes'></iframe>"; } catch( ex ) { } var item = new core.ButtonInfo(); item.pageNum = Std.parseInt(pageNumVal) - 1; item.x = Std.parseFloat(xVal); item.y = Std.parseFloat(yVal); item.width = Std.parseFloat(widthVal); item.height = Std.parseFloat(heightVal); item.layer = layer == null?"onpage":layer; item.htmlText = htmlText; if(popupWidthVal != null) item.popupWidth = Std.parseInt(popupWidthVal); if(popupHeightVal != null) item.popupHeight = Std.parseInt(popupHeightVal); item.youtubeId = youtubeIdVal; item.destination = destinationVal; item.type = typeVal == null?"":typeVal; item.image = imageVal; item.text = textVal; if(target != null) item.target = target == ""?"_blank":target; if(window_color != null) item.window_color = window_color; if(fontColorVal != "") item.fontColor = fontColorVal; if(fontSizeVal != "") item.fontSize = fontSizeVal; RunTime.book.buttons.push(item); } } RunTime.getInputAndJumpToPage = function() { RunTime.flipBook.stopFlip(); var t = RunTime.flipBook.tbPage; var val = t.value; val = StringTools.trim(val); var num = RunTime.flipBook.currentPageNum; if(val != "") num = Std.parseInt(val) - 1; if(num < 0) num = 0; else if(num > RunTime.book.pages.length - 1) num = RunTime.book.pages.length - 1; RunTime.flipBook.tbPage.setAttribute("value",Std.string(num + 1)); RunTime.flipBook.turnToPage(num); RunTime.flipBook.tbPage.blur(); } RunTime.getPage = function(currentPageNum,pageOffset,useNewDrawParams) { if(useNewDrawParams == null) useNewDrawParams = true; if(pageOffset == null) pageOffset = 0; if(RunTime.book == null || RunTime.book.pages == null) return null; var num = currentPageNum + pageOffset; if(num < 0 || num > RunTime.book.pages.length - 1) return null; var page = RunTime.book.pages[num]; page.pageOffset = pageOffset; if(useNewDrawParams == true) page.drawParams = RunTime.getDrawParams(); if(RunTime.singlePage) { RunTime.flipBook.zoomLeftPage.width = page.drawParams.dw | 0; RunTime.flipBook.zoomLeftPage.height = page.drawParams.dh | 0; RunTime.flipBook.zoomLeftPage.style.left = Std.string(page.drawParams.dx) + "px"; RunTime.flipBook.zoomLeftPage.style.top = Std.string(page.drawParams.dy) + "px"; RunTime.flipBook.leftPageLock.style.width = (page.drawParams.dw | 0) + "px"; RunTime.flipBook.leftPageLock.style.height = (page.drawParams.dh | 0) + "px"; RunTime.flipBook.leftPageLock.style.left = Std.string(page.drawParams.dx) + "px"; RunTime.flipBook.leftPageLock.style.top = Std.string(page.drawParams.dy) + "px"; } return page; } RunTime.getDrawParams = function(layout) { if(layout == null) layout = 0; var dp = new core.DrawParams(); var im = new orc.utils.ImageMetricHelper(RunTime.book.pageWidth,RunTime.book.pageHeight); var cw = RunTime.clientWidth; if(layout != 0) cw = 0.5 * cw; var ch = RunTime.clientHeight; var scale = im.getMaxFitScale(cw,ch); var dw = scale * RunTime.book.pageWidth; var dh = scale * RunTime.book.pageHeight; var dx = 0.5 * (cw - dw); if(layout != 0) { if(RunTime.book.rightToLeft) dx = layout > 0?cw - dw:cw; else dx = layout < 0?cw - dw:cw; } var dy = 0.5 * (ch - dh); var sx = 0; var sy = 0; var sw = RunTime.book.pageWidth; var sh = RunTime.book.pageHeight; dp.sx = sx; dp.sy = sy; dp.sw = sw; dp.sh = sh; dp.dx = dx; dp.dy = dy; dp.dw = dw; dp.dh = dh; return dp; } RunTime.getGolobaDrawParams = function() { var dp = new core.DrawParams(); var im = new orc.utils.ImageMetricHelper(RunTime.book.pageWidth * 2,RunTime.book.pageHeight); var cw = RunTime.clientWidth; var ch = RunTime.clientHeight; var scale = im.getMaxFitScale(cw,ch); var dw = scale * RunTime.book.pageWidth * 2; var dh = scale * RunTime.book.pageHeight; var dx = 0.5 * (cw - dw) * 2; var dy = 0.5 * (ch - dh) * 2; var sx = 0; var sy = 0; var sw = RunTime.book.pageWidth * 2; var sh = RunTime.book.pageHeight; dp.sx = sx; dp.sy = sy; dp.sw = sw; dp.sh = sh; dp.dx = dx; dp.dy = dy; dp.dw = dw; dp.dh = dh; return dp; } RunTime.saveLocal = function(key,val) { } RunTime.getLocal = function(key) { return ""; } RunTime.setUpdateFlag = function(bookId) { var prefix = bookId == null?RunTime.book.bookId:bookId; RunTime.saveLocal(prefix + "-" + "uploadFlag","1"); } RunTime.getAndResetUpdateFlag = function() { var val = RunTime.getLocal(RunTime.book.bookId + "-" + "uploadFlag"); RunTime.saveLocal(RunTime.book.bookId + "-" + "uploadFlag",""); return val == "1"; } RunTime.saveCurrentPageNum = function() { RunTime.savePageNum(Std.string(RunTime.flipBook.getCurrentPageNum())); } RunTime.savePageNum = function(val,bookId) { var prefix = bookId == null?RunTime.book.bookId:bookId; RunTime.saveLocal(prefix + "-" + "page",val); } RunTime.getAndResetSavedPageNum = function() { var val = RunTime.getLocal(RunTime.book.bookId + "-" + "page"); RunTime.savePageNum(""); if(val == null || val == "") return 0; else return Std.parseInt(val); } RunTime.saveBottomBarVisible = function(val) { if(val == true) RunTime.saveLocal(RunTime.book.bookId + "-" + "bottomBarVisible","true"); else RunTime.saveLocal(RunTime.book.bookId + "-" + "bottomBarVisible","false"); } RunTime.getBottomBarVisible = function() { return RunTime.getLocal(RunTime.book.bookId + "-" + "bottomBarVisible") == "true"; } RunTime.encrypt = function(src) { return RunTime.encryptKey(src,RunTime.key); } RunTime.encryptKey = function(src,key) { var n = 0; var rtn = ""; var _g1 = 0, _g = src.length - 1; while(_g1 < _g) { var i = _g1++; var c = HxOverrides.cca(src,i) + HxOverrides.cca(key,n); var s = String.fromCharCode(c); rtn += s; n++; if(n >= key.length - 1) n = 0; } if(src.length > 0) rtn = rtn + HxOverrides.substr(src,src.length - 1,null); return RunTime.encode64(rtn); } RunTime.encode64 = function(txt,padding) { if(padding == null) padding = true; var bytes = haxe.io.Bytes.alloc(txt.length); var _g1 = 0, _g = txt.length; while(_g1 < _g) { var i = _g1++; var c = txt.charCodeAt(i); bytes.b[i] = c & 255; } var c = new haxe.BaseCode(haxe.io.Bytes.ofString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); var base64 = c.encodeBytes(bytes).toString(); if(padding == true) { var remainder = base64.length % 4; if(remainder > 1) base64 += "="; if(remainder == 2) base64 += "="; } return base64; } RunTime.decode64 = function(txt) { var paddingSize = -1; if(txt.charAt(txt.length - 2) == "=") paddingSize = 2; else if(txt.charAt(txt.length - 1) == "=") paddingSize = 1; if(paddingSize != -1) txt = HxOverrides.substr(txt,0,txt.length - paddingSize); var c = new haxe.BaseCode(haxe.io.Bytes.ofString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); return c.decodeString(txt); } RunTime.calcKey = function(w,h) { var val = Std.string(w * h); val = HxOverrides.substr(val,val.length - 3,null) + HxOverrides.substr(val,0,2); var n = ""; var _g1 = 0, _g = val.length; while(_g1 < _g) { var i = _g1++; var c = HxOverrides.cca(val,i) / 2 | 0; n = n + StringTools.hex(c); } return n.toUpperCase(); } RunTime.clearPopupContents = function() { js.Lib.document.getElementById("maskPopup").style.display = "none"; js.Lib.document.getElementById("cvsOthers").innerHTML = ""; RunTime.flipBook.resetNoteButton(); RunTime.flipBook.resetHighlightButton(); } RunTime.isPopupModal = function() { return js.Lib.document.getElementById("maskPopup").style.display == "none"?false:true; } RunTime.clearAudio = function() { js.Lib.document.getElementById("cvsAudio").innerHTML = ""; } RunTime.clearBgAudio = function() { RunTime.clearLeftBgAudio(); RunTime.clearRightBgAudio(); } RunTime.clearLeftBgAudio = function() { js.Lib.document.getElementById("cvsLeftPageBgAudio").innerHTML = ""; } RunTime.clearRightBgAudio = function() { js.Lib.document.getElementById("cvsRightPageBgAudio").innerHTML = ""; } RunTime.showPopupMaskLayer = function() { js.Lib.document.getElementById("maskPopup").style.display = "inline"; } RunTime.playAudio = function() { var item = js.Lib.document.getElementById("cvsAudio").getElementsByTagName("audio")[0]; item.play(); } RunTime.playVideo = function() { var item = js.Lib.document.getElementById("cvsOthers").getElementsByTagName("video")[0]; item.play(); } RunTime.setOffset = function(dom,left,top) { var l = Math.round(left); var t = Math.round(top); dom.style.left = Std.string(l) + "px"; dom.style.top = Std.string(t) + "px"; } RunTime.useAnalyticsUA = function(ua,id) { if(RunTime.isNullOrEmpty(ua)) return; try { RunTime.trackerId = id; var gat = _gat; RunTime.tracker = gat._getTracker(ua); RunTime.tracker._initData(); } catch( ex ) { } } RunTime.log = function(action,msg) { if(RunTime.isNullOrEmpty(msg)) return; if(RunTime.useGoogleUaAsLogViewer == false) { js.Lib.alert(action + ":" + msg); return; } if(RunTime.tracker) RunTime.tracker._trackPageview(RunTime.trackerId + "/" + action + "/" + msg); } RunTime.logPageView = function(pageNum) { if(pageNum > 0) RunTime.log("page",Std.string(pageNum)); } RunTime.logClickLink = function(url,url2) { if(RunTime.isNullOrEmpty(url) && RunTime.isNullOrEmpty(url2)) return; RunTime.log("link",RunTime.isNullOrEmpty(url) == false?url:url2); } RunTime.logVideoView = function(url,url2) { if(RunTime.isNullOrEmpty(url) && RunTime.isNullOrEmpty(url2)) return; url = RunTime.removePrefix(url); RunTime.log("video",RunTime.isNullOrEmpty(url) == false?url:url2); } RunTime.isNullOrEmpty = function(txt) { return txt == null || txt == "" || txt == "undefined"; } RunTime.logAudioView = function(url) { if(url == null || url == "") return; url = RunTime.removePrefix(url); RunTime.log("audio",url); } RunTime.logSearch = function(keyword) { if(keyword == null || keyword == "") return; RunTime.log("search",keyword); } RunTime.removePrefix = function(url) { if(url == null || url == "") return url; else if(url.indexOf("http") == 0) return url; else { var i = url.lastIndexOf("/"); return HxOverrides.substr(url,i + 1,null); } } RunTime.readLocalBookmarks = function() { var bookmarks = new Array(); var i = 0; var _g1 = 0, _g = localStorage.length; while(_g1 < _g) { var i1 = _g1++; var szKey = localStorage.key(i1); if(szKey.indexOf(RunTime.kvPrex) == 0) { if(szKey.indexOf("@$bm$@") != -1) { var bookmark = new core.Bookmark(); bookmark.fillData(szKey,localStorage.getItem(szKey)); bookmarks.push(bookmark); RunTime.book.bookmarks.push(bookmark); haxe.Log.trace("bookmark.text:" + bookmark.text + " pagenum: " + bookmark.pageNum,{ fileName : "RunTime.hx", lineNumber : 1979, className : "RunTime", methodName : "readLocalBookmarks"}); } } } return bookmarks; } RunTime.readLocalHighLights = function() { var highlights = new Array(); var i = 0; var _g1 = 0, _g = localStorage.length; while(_g1 < _g) { var i1 = _g1++; var szKey = localStorage.key(i1); if(szKey.indexOf(RunTime.kvPrex) == 0) { if(szKey.indexOf("@$ht$@") != -1) { var highlight = new core.HighLight(); highlight.fillData(szKey,localStorage.getItem(szKey)); highlights.push(highlight); RunTime.book.highlights.push(highlight); } } } RunTime.highLights = highlights; if(RunTime.flipBook != null) { RunTime.flipBook.loadCtxHighLights(); RunTime.flipBook.bookContext.render(); } return highlights; } RunTime.updateHighLightNote = function(text,color) { if(RunTime.currentHighLight != null) { RunTime.currentHighLight.updateText(text,color); RunTime.flipBook.resetHighlightButton(); RunTime.flipBook.bookContext.render(); } } RunTime.deleteHighLight = function() { if(RunTime.currentHighLight != null) { RunTime.currentHighLight.remove(); HxOverrides.remove(RunTime.book.highlights,RunTime.currentHighLight); RunTime.currentHighLight = null; RunTime.flipBook.loadCtxHighLights(); RunTime.flipBook.bookContext.render(); RunTime.flipBook.resetHighlightButton(); } } RunTime.readLocalNotes = function() { var notes = new Array(); var i = 0; var _g1 = 0, _g = localStorage.length; while(_g1 < _g) { var i1 = _g1++; var szKey = localStorage.key(i1); if(szKey.indexOf(RunTime.kvPrex) == 0) { if(szKey.indexOf("@$ni$@") != -1) { var note = new core.NoteIcon(); note.fillData(szKey,localStorage.getItem(szKey)); notes.push(note); RunTime.book.notes.push(note); } } } RunTime.notes = notes; if(RunTime.flipBook != null) { RunTime.flipBook.loadCtxNotes(); RunTime.flipBook.bookContext.render(); } return notes; } RunTime.updateNote = function(text) { if(RunTime.currentNote != null) { RunTime.currentNote.updateText(text); RunTime.flipBook.resetNoteButton(); } } RunTime.deleteNote = function() { if(RunTime.currentNote != null) { RunTime.currentNote.remove(); HxOverrides.remove(RunTime.book.notes,RunTime.currentNote); RunTime.currentNote = null; RunTime.flipBook.loadCtxNotes(); RunTime.flipBook.bookContext.render(); RunTime.flipBook.resetNoteButton(); } } RunTime.showDebugMsg = function(msg) { var div = js.Lib.document.createElement("div"); div.style.position = "absolute"; div.style.zIndex = 9999; div.style.background = "white"; div.style.border = "1px solid #000"; div.style.display = "block"; var debugTimer = new haxe.Timer(300); debugTimer.run = function() { div.style.top = "100px"; div.style.left = "100px"; div.innerHTML = "" + Std.string(msg); js.Lib.document.body.appendChild(div); }; } RunTime.resizeSlide = function(p1,p2,p3,p4,p5) { var scale = p3 / p1.height; var leftVal = (p2 - p1.width * scale) / 2; js.Lib.document.getElementById(p4).style.width = (p1.width * scale | 0) + "px"; js.Lib.document.getElementById(p4).style.marginLeft = leftVal + "px"; } var Std = function() { } Std.__name__ = true; Std["is"] = function(v,t) { return js.Boot.__instanceof(v,t); } Std.string = function(s) { return js.Boot.__string_rec(s,""); } Std["int"] = function(x) { return x | 0; } Std.parseInt = function(x) { var v = parseInt(x,10); if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) v = parseInt(x); if(isNaN(v)) return null; return v; } Std.parseFloat = function(x) { return parseFloat(x); } Std.random = function(x) { return Math.floor(Math.random() * x); } var StringBuf = function() { this.b = ""; }; StringBuf.__name__ = true; StringBuf.prototype = { toString: function() { return this.b; } ,addSub: function(s,pos,len) { this.b += HxOverrides.substr(s,pos,len); } ,addChar: function(c) { this.b += String.fromCharCode(c); } ,add: function(x) { this.b += Std.string(x); } ,__class__: StringBuf } var StringTools = function() { } StringTools.__name__ = true; StringTools.urlEncode = function(s) { return encodeURIComponent(s); } StringTools.urlDecode = function(s) { return decodeURIComponent(s.split("+").join(" ")); } StringTools.htmlEscape = function(s) { return s.split("&").join("&").split("<").join("<").split(">").join(">"); } StringTools.htmlUnescape = function(s) { return s.split(">").join(">").split("<").join("<").split("&").join("&"); } StringTools.startsWith = function(s,start) { return s.length >= start.length && HxOverrides.substr(s,0,start.length) == start; } StringTools.endsWith = function(s,end) { var elen = end.length; var slen = s.length; return slen >= elen && HxOverrides.substr(s,slen - elen,elen) == end; } StringTools.isSpace = function(s,pos) { var c = HxOverrides.cca(s,pos); return c >= 9 && c <= 13 || c == 32; } StringTools.ltrim = function(s) { var l = s.length; var r = 0; while(r < l && StringTools.isSpace(s,r)) r++; if(r > 0) return HxOverrides.substr(s,r,l - r); else return s; } StringTools.rtrim = function(s) { var l = s.length; var r = 0; while(r < l && StringTools.isSpace(s,l - r - 1)) r++; if(r > 0) return HxOverrides.substr(s,0,l - r); else return s; } StringTools.trim = function(s) { return StringTools.ltrim(StringTools.rtrim(s)); } StringTools.rpad = function(s,c,l) { var sl = s.length; var cl = c.length; while(sl < l) if(l - sl < cl) { s += HxOverrides.substr(c,0,l - sl); sl = l; } else { s += c; sl += cl; } return s; } StringTools.lpad = function(s,c,l) { var ns = ""; var sl = s.length; if(sl >= l) return s; var cl = c.length; while(sl < l) if(l - sl < cl) { ns += HxOverrides.substr(c,0,l - sl); sl = l; } else { ns += c; sl += cl; } return ns + s; } StringTools.replace = function(s,sub,by) { return s.split(sub).join(by); } StringTools.hex = function(n,digits) { var s = ""; var hexChars = "0123456789ABCDEF"; do { s = hexChars.charAt(n & 15) + s; n >>>= 4; } while(n > 0); if(digits != null) while(s.length < digits) s = "0" + s; return s; } StringTools.fastCodeAt = function(s,index) { return s.charCodeAt(index); } StringTools.isEOF = function(c) { return c != c; } var XMLHttpRequestResponseType = { __ename__ : true, __constructs__ : ["arraybuffer","blob","document","json","text"] } XMLHttpRequestResponseType.arraybuffer = ["arraybuffer",0]; XMLHttpRequestResponseType.arraybuffer.toString = $estr; XMLHttpRequestResponseType.arraybuffer.__enum__ = XMLHttpRequestResponseType; XMLHttpRequestResponseType.blob = ["blob",1]; XMLHttpRequestResponseType.blob.toString = $estr; XMLHttpRequestResponseType.blob.__enum__ = XMLHttpRequestResponseType; XMLHttpRequestResponseType.document = ["document",2]; XMLHttpRequestResponseType.document.toString = $estr; XMLHttpRequestResponseType.document.__enum__ = XMLHttpRequestResponseType; XMLHttpRequestResponseType.json = ["json",3]; XMLHttpRequestResponseType.json.toString = $estr; XMLHttpRequestResponseType.json.__enum__ = XMLHttpRequestResponseType; XMLHttpRequestResponseType.text = ["text",4]; XMLHttpRequestResponseType.text.toString = $estr; XMLHttpRequestResponseType.text.__enum__ = XMLHttpRequestResponseType; var Xml = function() { }; Xml.__name__ = true; Xml.parse = function(str) { return haxe.xml.Parser.parse(str); } Xml.createElement = function(name) { var r = new Xml(); r.nodeType = Xml.Element; r._children = new Array(); r._attributes = new Hash(); r.setNodeName(name); return r; } Xml.createPCData = function(data) { var r = new Xml(); r.nodeType = Xml.PCData; r.setNodeValue(data); return r; } Xml.createCData = function(data) { var r = new Xml(); r.nodeType = Xml.CData; r.setNodeValue(data); return r; } Xml.createComment = function(data) { var r = new Xml(); r.nodeType = Xml.Comment; r.setNodeValue(data); return r; } Xml.createDocType = function(data) { var r = new Xml(); r.nodeType = Xml.DocType; r.setNodeValue(data); return r; } Xml.createProlog = function(data) { var r = new Xml(); r.nodeType = Xml.Prolog; r.setNodeValue(data); return r; } Xml.createDocument = function() { var r = new Xml(); r.nodeType = Xml.Document; r._children = new Array(); return r; } Xml.prototype = { toString: function() { if(this.nodeType == Xml.PCData) return this._nodeValue; if(this.nodeType == Xml.CData) return "<![CDATA[" + this._nodeValue + "]]>"; if(this.nodeType == Xml.Comment) return "<!--" + this._nodeValue + "-->"; if(this.nodeType == Xml.DocType) return "<!DOCTYPE " + this._nodeValue + ">"; if(this.nodeType == Xml.Prolog) return "<?" + this._nodeValue + "?>"; var s = new StringBuf(); if(this.nodeType == Xml.Element) { s.b += Std.string("<"); s.b += Std.string(this._nodeName); var $it0 = this._attributes.keys(); while( $it0.hasNext() ) { var k = $it0.next(); s.b += Std.string(" "); s.b += Std.string(k); s.b += Std.string("=\""); s.b += Std.string(this._attributes.get(k)); s.b += Std.string("\""); } if(this._children.length == 0) { s.b += Std.string("/>"); return s.b; } s.b += Std.string(">"); } var $it1 = this.iterator(); while( $it1.hasNext() ) { var x = $it1.next(); s.b += Std.string(x.toString()); } if(this.nodeType == Xml.Element) { s.b += Std.string("</"); s.b += Std.string(this._nodeName); s.b += Std.string(">"); } return s.b; } ,insertChild: function(x,pos) { if(this._children == null) throw "bad nodetype"; if(x._parent != null) HxOverrides.remove(x._parent._children,x); x._parent = this; this._children.splice(pos,0,x); } ,removeChild: function(x) { if(this._children == null) throw "bad nodetype"; var b = HxOverrides.remove(this._children,x); if(b) x._parent = null; return b; } ,addChild: function(x) { if(this._children == null) throw "bad nodetype"; if(x._parent != null) HxOverrides.remove(x._parent._children,x); x._parent = this; this._children.push(x); } ,firstElement: function() { if(this._children == null) throw "bad nodetype"; var cur = 0; var l = this._children.length; while(cur < l) { var n = this._children[cur]; if(n.nodeType == Xml.Element) return n; cur++; } return null; } ,firstChild: function() { if(this._children == null) throw "bad nodetype"; return this._children[0]; } ,elementsNamed: function(name) { if(this._children == null) throw "bad nodetype"; return { cur : 0, x : this._children, hasNext : function() { var k = this.cur; var l = this.x.length; while(k < l) { var n = this.x[k]; if(n.nodeType == Xml.Element && n._nodeName == name) break; k++; } this.cur = k; return k < l; }, next : function() { var k = this.cur; var l = this.x.length; while(k < l) { var n = this.x[k]; k++; if(n.nodeType == Xml.Element && n._nodeName == name) { this.cur = k; return n; } } return null; }}; } ,elements: function() { if(this._children == null) throw "bad nodetype"; return { cur : 0, x : this._children, hasNext : function() { var k = this.cur; var l = this.x.length; while(k < l) { if(this.x[k].nodeType == Xml.Element) break; k += 1; } this.cur = k; return k < l; }, next : function() { var k = this.cur; var l = this.x.length; while(k < l) { var n = this.x[k]; k += 1; if(n.nodeType == Xml.Element) { this.cur = k; return n; } } return null; }}; } ,iterator: function() { if(this._children == null) throw "bad nodetype"; return { cur : 0, x : this._children, hasNext : function() { return this.cur < this.x.length; }, next : function() { return this.x[this.cur++]; }}; } ,attributes: function() { if(this.nodeType != Xml.Element) throw "bad nodeType"; return this._attributes.keys(); } ,exists: function(att) { if(this.nodeType != Xml.Element) throw "bad nodeType"; return this._attributes.exists(att); } ,remove: function(att) { if(this.nodeType != Xml.Element) throw "bad nodeType"; this._attributes.remove(att); } ,set: function(att,value) { if(this.nodeType != Xml.Element) throw "bad nodeType"; this._attributes.set(att,value); } ,get: function(att) { if(this.nodeType != Xml.Element) throw "bad nodeType"; return this._attributes.get(att); } ,getParent: function() { return this._parent; } ,setNodeValue: function(v) { if(this.nodeType == Xml.Element || this.nodeType == Xml.Document) throw "bad nodeType"; return this._nodeValue = v; } ,getNodeValue: function() { if(this.nodeType == Xml.Element || this.nodeType == Xml.Document) throw "bad nodeType"; return this._nodeValue; } ,setNodeName: function(n) { if(this.nodeType != Xml.Element) throw "bad nodeType"; return this._nodeName = n; } ,getNodeName: function() { if(this.nodeType != Xml.Element) throw "bad nodeType"; return this._nodeName; } ,__class__: Xml } var Xml2Html = function() { }; Xml2Html.__name__ = true; Xml2Html.prototype = { prepareXmlAsHtml: function(txt) { this.map = new Array(); txt = StringTools.replace(txt,"<![CDATA[","]]>"); var lines = txt.split("]]>"); if(lines.length == 0) return txt; var buff = new StringBuf(); var k = 0; var _g1 = 0, _g = lines.length; while(_g1 < _g) { var i = _g1++; var val = lines[i]; if(i % 2 == 0) buff.b += Std.string(val); else { var key = Std.string(k); buff.b += Std.string("<cdata>" + key + "</cdata>"); var cdata = new CData(); cdata.key = key; cdata.val = val; this.map.push(cdata); k++; } } return buff.b; } ,getCData: function(key) { if(this.map == null) return null; var _g1 = 0, _g = this.map.length; while(_g1 < _g) { var i = _g1++; var item = this.map[i]; if(item.key == key) return item.val; } return null; } ,__class__: Xml2Html } var Zoom = function() { } Zoom.__name__ = true; Zoom.getContext = function() { return Zoom.cvsZoom.getContext("2d"); } Zoom.Load = function() { Zoom.cvsZoomDom = js.Lib.document.getElementById("cvsZoom"); Zoom.mask = js.Lib.document.getElementById("mask"); Zoom.maskPopup = js.Lib.document.getElementById("maskPopup"); Zoom.maskPopup.onclick = Zoom.forbidden; Zoom.maskPopup.ondblclick = Zoom.onDblClick; Zoom.maskPopup.ontouchstart = Zoom.forbidden; Zoom.maskPopup.ontouchmove = Zoom.forbidden; Zoom.maskPopup.ontouchend = Zoom.forbidden; Zoom.maskPopup.ontouchcancel = Zoom.forbidden; Zoom.maskPopup.gestureend = Zoom.forbidden; Zoom.maskPopup.gesturestart = Zoom.forbidden; Zoom.maskPopup.gesturechange = Zoom.forbidden; Zoom.maskPopup.onscroll = Zoom.forbidden; Zoom.maskPopup.onmousewheel = Zoom.forbidden; Zoom.mask.ondblclick = Zoom.onDblClick; var dy = Zoom.cvsZoomDom; Zoom.cvsZoom = dy; Zoom.mask.ontouchstart = Zoom.onZoom; Zoom.clientWidth = js.Lib.window.document.body.clientWidth; Zoom.clientHeight = js.Lib.window.document.body.clientHeight; RunTime.clientWidth = Zoom.clientWidth; RunTime.clientHeight = Zoom.clientHeight; var params = orc.utils.Util.getUrlParams(); var _g1 = 0, _g = params.length; while(_g1 < _g) { var i = _g1++; var item = params[i]; if(item.key == "img") Zoom.imgSrc = item.value; else if(item.key == "bookId") Zoom.bookId = item.value; else if(item.key == "page") Zoom.pageNum = item.value; else if(item.key == "pw") Zoom.pageWidth = Std.parseFloat(item.value); else if(item.key == "ph") Zoom.pageHeight = Std.parseFloat(item.value); else if(item.key == "bookTitle") { Zoom.bookTitle = item.value; Zoom.bookTitle = StringTools.urlDecode(Zoom.bookTitle); } else if(item.key == "bbv") Zoom.bbv = item.value; else if(item.key == "ua") Zoom.analyticsUA = item.value; else if(item.key == "pcode") Zoom.pcode = item.value; } js.Lib.document.title = Zoom.bookTitle + " - Page " + Std.string(Std.parseInt(Zoom.pageNum) + 1); Zoom.img = new core.Html5Image(Zoom.imgSrc,Zoom.onLoadImage); RunTime.useAnalyticsUA(Zoom.analyticsUA,Zoom.bookId); RunTime.logPageView(Std.parseInt(Zoom.pageNum) + 1); } Zoom.forbidden = function(e) { e.stopPropagation(); } Zoom.onLoadImage = function() { var w = Zoom.img.image.width; var h = Zoom.img.image.height; Zoom.cvsZoom.width = Math.max(Zoom.pageWidth,Math.max(w,Zoom.clientWidth)) | 0; Zoom.cvsZoom.height = Math.max(Zoom.pageHeight,Math.max(h,Zoom.clientHeight)) | 0; Zoom.mask.style.width = Std.string(Zoom.cvsZoom.width) + "px"; Zoom.mask.style.height = Std.string(Zoom.cvsZoom.height) + "px"; Zoom.xOffset = 0.5 * (Zoom.cvsZoom.width - Math.max(Zoom.img.image.width,Zoom.pageWidth)); Zoom.yOffset = 0.5 * (Zoom.cvsZoom.height - Math.max(Zoom.img.image.height,Zoom.pageHeight)); Zoom.xScale = w / Zoom.pageWidth; Zoom.yScale = h / Zoom.pageHeight; Zoom.draw(); RunTime.requestHotlinks(Zoom.loadHotlinks); RunTime.requestButtons(Zoom.loadButtons); RunTime.requestVideos(Zoom.loadVideos); } Zoom.draw = function() { var ctx = Zoom.getContext(); var dp = Zoom.getDrawParams(); ctx.drawImage(Zoom.img.image,dp.sx,dp.sy,dp.sw,dp.sh,dp.dx,dp.dy,dp.dw,dp.dh); } Zoom.getDrawParams = function() { var dp = new core.DrawParams(); dp.sx = 0; dp.sy = 0; dp.sw = Zoom.img.image.width; dp.sh = Zoom.img.image.height; dp.dx = Zoom.xOffset; dp.dy = Zoom.yOffset; dp.dw = Math.max(Zoom.pageWidth,dp.sw); dp.dh = Math.max(Zoom.pageHeight,dp.sh); return dp; } Zoom.loadHotlinks = function() { var list = RunTime.book.hotlinks; var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; if(Std.string(item.pageNum) == Zoom.pageNum) Zoom.hotlinks.push(item); } Zoom.renderHotlinks(); } Zoom.loadVideos = function() { var list = RunTime.book.videos; var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; if(Std.string(item.pageNum) == Zoom.pageNum) Zoom.videos.push(item); } Zoom.renderVideos(); } Zoom.loadButtons = function() { var list = RunTime.book.buttons; var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; if(Std.string(item.pageNum) == Zoom.pageNum) Zoom.buttons.push(item); } Zoom.renderButtons(); } Zoom.renderHotlinks = function() { var list = Zoom.hotlinks; var ctx = Zoom.getContext(); var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; Zoom.renderHotlink(ctx,item); } } Zoom.renderHotlink = function(ctx,link) { link.loadToRect(ctx,Zoom.xOffset + link.x * Zoom.xScale,Zoom.yOffset + link.y * Zoom.yScale,link.width * Zoom.xScale,link.height * Zoom.yScale); } Zoom.renderVideos = function() { var dom = js.Lib.document.getElementById("cvsVideo"); var _g1 = 0, _g = Zoom.videos.length; while(_g1 < _g) { var i = _g1++; var item = Zoom.videos[i]; item.x = item.x * Zoom.xScale; if(item.youtubeId == null || item.youtubeId == "") dom.innerHTML += core.HtmlHelper.toRectVideoHtml(item,Zoom.xOffset + item.x * Zoom.xScale,Zoom.yOffset + item.y * Zoom.yScale,item.width * Zoom.xScale,item.height * Zoom.yScale); else dom.innerHTML += core.HtmlHelper.toRectYoutubeVideoHtml(item,Zoom.xOffset + item.x * Zoom.xScale,Zoom.yOffset + item.y * Zoom.yScale,item.width * Zoom.xScale,item.height * Zoom.yScale); } } Zoom.renderButtons = function() { var list = Zoom.buttons; var ctx = Zoom.getContext(); var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var item = list[i]; item.loadToContext2DRect(ctx,Zoom.xOffset + item.x * Zoom.xScale,Zoom.yOffset + item.y * Zoom.yScale,item.width * Zoom.xScale,item.height * Zoom.yScale); } } Zoom.onDblClick = function(e) { Zoom.zoomOut(); } Zoom.onZoom = function(e) { var date = new Date(); if(Zoom.lastTouchTime != null) { var lastTime = Zoom.lastTouchTime.getTime(); var newTime = date.getTime(); if(newTime - lastTime < RunTime.doubleClickIntervalMs) { Zoom.lastTouchTime = null; Zoom.zoomOut(); return; } } Zoom.lastTouchTime = date; var obj = e; var touch = obj.touches[0]; if(obj.touches.length > 1) Zoom.zoomOut(); else Zoom.onClick(e); } Zoom.zoomOut = function(num) { if(num == null) num = -1; if(num == -1 || num == null) num = Std.parseInt(Zoom.pageNum); js.Lib.window.location.href = RunTime.urlIndex + "?page=" + Std.string(num) + "&bbv=" + Zoom.bbv + "&pcode=" + Zoom.pcode; } Zoom.onClick = function(e) { var match = null; var list = Zoom.hotlinks; var obj = e; var touch = obj.touches[0]; var xx = touch.screenX; var yy = touch.screenY; Zoom.popupXOffset = xx - touch.clientX; Zoom.popupYOffset = yy - touch.clientY; var _g1 = 0, _g = list.length; while(_g1 < _g) { var i = _g1++; var link = list[i]; if(xx >= Zoom.xOffset + link.x * Zoom.xScale && xx <= Zoom.xOffset + link.x * Zoom.xScale + link.width * Zoom.xScale && yy >= Zoom.yOffset + link.y * Zoom.yScale && yy <= Zoom.yOffset + link.y * Zoom.yScale + link.height * Zoom.yScale) { match = link; break; } } Zoom.invokeClickHotlink(match); var matchButton = null; var _g1 = 0, _g = Zoom.buttons.length; while(_g1 < _g) { var i = _g1++; var button = Zoom.buttons[i]; if(xx >= Zoom.xOffset + button.x * Zoom.xScale && xx <= Zoom.xOffset + button.x * Zoom.xScale + button.width * Zoom.xScale && yy >= Zoom.yOffset + button.y * Zoom.yScale && yy <= Zoom.yOffset + button.y * Zoom.yScale + button.height * Zoom.yScale) { matchButton = button; break; } } Zoom.invokeClickButton(matchButton); } Zoom.invokeClickHotlink = function(link) { if(link == null) return; link.click(Zoom.popupXOffset,Zoom.popupYOffset); } Zoom.invokeClickButton = function(item) { if(item == null) return; item.click(Zoom.popupXOffset,Zoom.popupYOffset); } core.AudioInfo = function() { this.pageNum = -1; this.url = ""; this.id = ""; }; core.AudioInfo.__name__ = true; core.AudioInfo.prototype = { __class__: core.AudioInfo } core.BookContext = function() { this.pages = new Array(); this.pageOffset = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; }; core.BookContext.__name__ = true; core.BookContext.prototype = { getNoteAt: function(x,y) { if(this.notes == null) return null; var _g1 = 0, _g = this.notes.length; while(_g1 < _g) { var i = _g1++; var item = this.notes[i]; if(item.hitTest(x,y) == true) return item; } return null; } ,getHighLightAt: function(x,y) { if(this.highlights == null) return null; var _g1 = 0, _g = this.highlights.length; while(_g1 < _g) { var i = _g1++; var item = this.highlights[i]; if(item.hitTest(x,y) == true) return item; } return null; } ,getButtonAt: function(x,y) { if(this.buttons == null) return null; var _g1 = 0, _g = this.buttons.length; while(_g1 < _g) { var i = _g1++; var item = this.buttons[i]; if(item.hitTest(x,y) == true) return item; } return null; } ,getHotLinkAt: function(x,y) { if(this.hotlinks == null) return null; var _g1 = 0, _g = this.hotlinks.length; while(_g1 < _g) { var i = _g1++; var item = this.hotlinks[i]; if(item.hitTest(x,y) == true) return item; } return null; } ,render: function() { this.clear(); RunTime.allLoadImage = this.pages.length; RunTime.allCurrentImage = 0; if(this.pages != null && this.ctx != null) { var _g1 = 0, _g = this.pages.length; while(_g1 < _g) { var i = _g1++; var item = this.pages[i]; item.scale = this.scale; item.offsetX = this.offsetX; item.offsetY = this.offsetY; item.visible = true; item.loadToContext2D(this.ctx); } } if(this.hotlinks != null && this.ctx != null) { var _g1 = 0, _g = this.hotlinks.length; while(_g1 < _g) { var i = _g1++; var item = this.hotlinks[i]; item.scale = this.scale; item.offsetX = this.offsetX; item.offsetY = this.offsetY; item.loadToContext2D(this.ctxButton); } } if(this.buttons != null && this.ctxButton != null) { var _g1 = 0, _g = this.buttons.length; while(_g1 < _g) { var i = _g1++; var item = this.buttons[i]; item.scale = this.scale; item.offsetX = this.offsetX; item.offsetY = this.offsetY; item.loadToContext2D(this.ctxButton); } } if(this.highlights != null && this.ctxHighLight != null) { var _g1 = 0, _g = this.highlights.length; while(_g1 < _g) { var i = _g1++; var item = this.highlights[i]; item.scale = this.scale; item.offsetX = this.offsetX; item.offsetY = this.offsetY; item.loadToContext2D(this.ctxHighLight); } } if(this.notes != null && this.ctxNote != null) { var _g1 = 0, _g = this.notes.length; while(_g1 < _g) { var i = _g1++; var item = this.notes[i]; item.scale = this.scale; item.offsetX = this.offsetX; item.offsetY = this.offsetY; item.loadToContext2D(this.ctxNote); } } if(this.bookmarks != null && this.bookmarks.length > 0) { var _g1 = 0, _g = this.bookmarks.length; while(_g1 < _g) { var i = _g1++; var item = this.bookmarks[i]; item.loadToContext2D(this.ctxBookmark); } } } ,addPage: function(page) { if(page == null) return; if(this.pages == null) this.pages = new Array(); page.bookContext = this; this.pages.push(page); } ,clear: function(removePages) { if(removePages == null) removePages = false; if(this.pages != null) { var _g1 = 0, _g = this.pages.length; while(_g1 < _g) { var i = _g1++; var item = this.pages[i]; item.visible = false; } } if(removePages == true) this.pages = new Array(); if(this.ctx != null) this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height); if(this.ctxButton != null) this.ctxButton.clearRect(0,0,this.ctxButton.canvas.width,this.ctxButton.canvas.height); if(this.ctxHighLight != null) this.ctxHighLight.clearRect(0,0,this.ctxHighLight.canvas.width,this.ctxHighLight.canvas.height); if(this.ctxNote != null) this.ctxNote.clearRect(0,0,this.ctxNote.canvas.width,this.ctxNote.canvas.height); if(this.ctxBookmark != null) this.ctxBookmark.clearRect(0,0,this.ctxBookmark.canvas.width,this.ctxBookmark.canvas.height); } ,removeAllPages: function() { if(this.pages != null) { var _g1 = 0, _g = this.pages.length; while(_g1 < _g) { var i = _g1++; var item = this.pages[i]; item.visible = false; } } this.pages = new Array(); } ,resetLayoutParams: function() { this.offsetX = 0; this.offsetY = 0; this.scale = 1; } ,getPageCount: function() { return this.pages.length; } ,__class__: core.BookContext } core.Bookmark = function() { this.onlyread = false; var _g = this; this.bookmarkImg = js.Lib.document.createElement("img"); this.bookmarkImg.onload = function() { _g.bookImgLoaded = true; }; this.bookmarkImg.src = RunTime.urlRoot + "content/images/bookmark.png"; }; core.Bookmark.__name__ = true; core.Bookmark.prototype = { loadToContext2D: function(ctx) { if(ctx != null && this.bookImgLoaded) { ctx.save(); ctx.drawImage(this.bookmarkImg,(RunTime.clientWidth | 0) - 40,52); ctx.restore(); } } ,clone: function() { var bookmark = new core.Bookmark(); bookmark.guid = this.guid; bookmark.pageNum = this.pageNum; bookmark.text = this.text; return bookmark; } ,remove: function() { localStorage.removeItem(this.guid); } ,fillData: function(guid,json) { var objJSON = JSON.parse(json); this.pageNum = Std.parseInt(objJSON.obj[0].pageNum); this.text = objJSON.obj[0].text; this.guid = guid; } ,save: function() { this.guid = RunTime.kvPrex + "@$bm$@" + new Date().getTime(); localStorage.setItem(this.guid,this.toJSONString()); } ,toJSONString: function() { var json = "{\"obj\":[{\"pageNum\":\"" + this.pageNum + "\",\"text\":\"" + this.text + "\"}]}"; return json; } ,__class__: core.Bookmark } core.ButtonInfo = function() { this.window_color = "#333333"; this.target = "_blank"; this.fontSize = "12"; this.fontColor = "#ffffff"; this.text = ""; this.layer = "onpage"; this.pageLayoutType = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; }; core.ButtonInfo.__name__ = true; core.ButtonInfo.prototype = { click: function(popupXOffset,popupYOffset) { if(popupYOffset == null) popupYOffset = 0; if(popupXOffset == null) popupXOffset = 0; switch(this.type) { case "": if(this.destination != null) { if(this.destination.indexOf("page:") == 0) { var val = HxOverrides.substr(this.destination,5,null); var num = Std.parseInt(val); if(RunTime.flipBook != null) RunTime.flipBook.turnToPage(num - 1); else Zoom.zoomOut(num - 1); } else if(this.destination.indexOf("mailto:") == 0) { RunTime.logClickLink(this.destination); js.Lib.window.location.href = this.destination; } else if(this.destination.indexOf("fun:") == 0) { var fun = HxOverrides.substr(this.destination,4,null); if(fun == "content") RunTime.flipBook.onContentsClick(null); else if(fun == "thumb") RunTime.flipBook.onThumbsClick(null); else if(fun == "showtxt") RunTime.flipBook.onShowTxtClick(null); else if(fun == "highlight") RunTime.flipBook.onButtonMaskClick(null); else if(fun == "bookmark") RunTime.flipBook.onButtonBookmark(null); else if(fun == "notes") RunTime.flipBook.onButtonNoteClick(null); else if(fun == "autoflip") RunTime.flipBook.onAutoFlipClick(null); else if(fun == "download") RunTime.onDownloadClick(null); else if(fun == "fliptofront") RunTime.flipBook.turnToFirstPage(null); else if(fun == "flipleft") RunTime.flipBook.turnToPrevPage(null); else if(fun == "flipright") RunTime.flipBook.turnToNextPage(null); else if(fun == "fliptoback") RunTime.flipBook.turnToLastPage(null); } else { RunTime.logClickLink(this.destination); if("_self" == this.target) js.Lib.window.location.href = this.destination; else js.Lib.window.open(this.destination,this.target); } } break; case "image": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); core.HtmlHelper.toPopupImageHtml(this,function(txt) { js.Lib.document.getElementById("cvsOthers").innerHTML = txt; js.Lib.document.getElementById("popupImage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; }); RunTime.logClickLink(this.destination); break; case "video": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupVideoHtml(this); js.Lib.document.getElementById("popupVideo").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; RunTime.playVideo(); RunTime.logVideoView(this.destination,this.youtubeId); break; case "audio": RunTime.flipBook.showPopupAudio(this); RunTime.logAudioView(this.destination); RunTime.playAudio(); break; case "message": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupHtml(this); js.Lib.document.getElementById("popupMessage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; break; case "message-hover": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupHtml(this); js.Lib.document.getElementById("popupMessage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; break; } } ,hitTest: function(mouseX,mouseY) { if(this.type == "none") return false; var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); var result = mouseX >= xx && mouseY >= yy && mouseX <= xx + ww && mouseY <= yy + hh; return result; } ,loadToRect: function(ctx,x,y,w,h) { if(w > 0 && h > 0) { if(this.text == "") ctx.drawImage(this._imagePage,0,0,this._imagePage.width,this._imagePage.height,x,y,w,h); else { ctx.save(); ctx.fillStyle = this.fontColor; ctx.font = this.fontSize + "px " + "san-serif"; ctx.fillText(this.text,x,y + 30); ctx.restore(); } } } ,loadToContext2DRect: function(ctx,x,y,w,h) { this.ctx = ctx; if(this._imagePage == null) { var self = this; this.getImagePage(function() { self.loaded = true; self.loadToContext2DRect(self.ctx,self.x,self.y,self.width,self.height); }); } if(this.loaded == true) this.loadToRect(ctx,x,y,this.width,this.height); } ,loadToContext2D: function(ctx) { this.ctx = ctx; if(this._imagePage == null) { var self = this; this.getImagePage(function() { self.loaded = true; self.loadToContext2D(self.ctx); }); } if(this.loaded == true) { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); this.loadToRect(ctx,xx,yy,ww,hh); } } ,getImagePage: function(onloadFunc) { if(this._imagePage != null) return this._imagePage; var img = new Image(); img.src = this.image; img.onload = onloadFunc; this._imagePage = img; return this._imagePage; } ,getDrawParams: function() { var dp = RunTime.getDrawParams(this.pageLayoutType); if(this.pageLayoutType == 2) dp = RunTime.getGolobaDrawParams(); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,__class__: core.ButtonInfo } core.DrawParams = function() { }; core.DrawParams.__name__ = true; core.DrawParams.prototype = { sliceRight: function(ratio,xOffset) { if(xOffset == null) xOffset = 0; if(ratio < 0) ratio = 0; else if(ratio > 1) ratio = 1; var dp = new core.DrawParams(); dp.sx = this.sx + this.sw * (1 - ratio); dp.sy = this.sy; dp.dx = this.dx + this.dw * (1 - ratio) + xOffset; dp.dy = this.dy; dp.sw = this.sw * ratio; dp.sh = this.sh; dp.dw = this.dw * ratio; dp.dh = this.dh; return dp; } ,sliceLeft: function(ratio,xOffset) { if(xOffset == null) xOffset = 0; if(ratio < 0) ratio = 0; else if(ratio > 1) ratio = 1; var dp = new core.DrawParams(); dp.sx = this.sx; dp.sy = this.sy; dp.dx = this.dx + xOffset; dp.dy = this.dy; dp.sw = this.sw * ratio; dp.sh = this.sh; dp.dw = this.dw * ratio; dp.dh = this.dh; return dp; } ,toString: function() { return Std.string(this.sx) + "," + Std.string(this.sy) + "," + Std.string(this.sw) + "," + Std.string(this.sh) + "," + Std.string(this.dx) + "," + Std.string(this.dy) + "," + Std.string(this.dw) + "," + Std.string(this.dh); } ,applyTransform: function(scale,offsetX,offsetY) { this.dx = this.dx * scale + offsetX; this.dy = this.dy * scale + offsetY; this.dw = this.dw * scale; this.dh = this.dh * scale; } ,clone: function() { var dw = new core.DrawParams(); dw.sx = this.sx; dw.sy = this.sy; dw.sw = this.sw; dw.sh = this.sh; dw.dx = this.dx; dw.dy = this.dy; dw.dw = this.dw; dw.dh = this.dh; return dw; } ,scaleY: function() { return this.dh / this.sh; } ,scaleX: function() { return this.dw / this.sw; } ,dhi: function() { return Math.round(this.dh); } ,dwi: function() { return Math.round(this.dw); } ,dyi: function() { return Math.round(this.dy); } ,dxi: function() { return Math.round(this.dx); } ,__class__: core.DrawParams } core.HighLight = function() { this.note = new core.Note(); this.x = 0; this.y = 0; this.width = 0; this.height = 0; this.pageNum = -1; this.guid = ""; this.color = ""; this.checked = false; this.pageLayoutType = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; }; core.HighLight.__name__ = true; core.HighLight.prototype = { click: function(popupXOffset,popupYOffset) { if(popupYOffset == null) popupYOffset = 0; if(popupXOffset == null) popupXOffset = 0; RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toHighLightPopupHtml(this,"saveHighlightNote","deleteHighlightNote"); js.Lib.document.getElementById("textNote").focus(); } ,hitTest: function(mouseX,mouseY) { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); var result = mouseX >= xx && mouseY >= yy && mouseX <= xx + ww && mouseY <= yy + hh; return result; } ,draw: function(context) { var radius = 5; context.save(); context.fillStyle = "rgba(0,255,0,0.4)"; context.fillRect(this.tx | 0,this.ty | 0,this.twidth | 0,this.theight | 0); context.restore(); if(this.note != null) { this.note.x = this.tx; this.note.y = this.ty - this.note.image.height; this.note.draw(); } } ,loadToContext2D: function(context) { var radius = 5; context.save(); if(this.color != "") context.fillStyle = this.color; else context.fillStyle = "rgba(0,255,0,0.4)"; var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); context.fillRect(xx | 0,yy | 0,ww | 0,hh | 0); context.restore(); if(this.note != null) { this.note.x = this.x; this.note.y = this.y - this.note.image.height; this.note.draw(); } } ,remove: function() { localStorage.removeItem(this.guid); } ,updateText: function(text,color) { this.note.text = text; this.color = "rgba(" + color + ",0.4)"; localStorage.setItem(this.guid,this.toJSONString()); } ,setChecked: function(bChecked) { this.checked = bChecked; if(this.checked) { } else { } } ,fillData: function(guid,json) { var objJSON = JSON.parse(json); this.x = Std.parseFloat(objJSON.obj[0].x); this.y = Std.parseFloat(objJSON.obj[0].y); this.width = Std.parseFloat(objJSON.obj[0].width); this.height = Std.parseFloat(objJSON.obj[0].height); this.note.text = objJSON.obj[0].note; this.pageNum = Std.parseInt(objJSON.obj[0].page); this.color = Std.string(objJSON.obj[0].color); this.guid = guid; } ,DataTransform: function() { var dp = this.getDrawParams(); this.pageNum = this.tpageNum; if(RunTime.singlePage) { } else if(RunTime.book.rightToLeft) { if(this.tx > RunTime.clientWidth / 2) dp = this.getLeftDrawParams(); else dp = this.getRightDrawParams(); } else if(this.tx > RunTime.clientWidth / 2) dp = this.getRightDrawParams(); else dp = this.getLeftDrawParams(); this.x = dp.sx + (this.tx - dp.dx) / (dp.dw / dp.sw); this.y = dp.sy + (this.ty - dp.dy) / (dp.dh / dp.sh); this.width = this.twidth / (dp.dw / dp.sw); this.height = this.theight / (dp.dh / dp.sh); haxe.Log.trace("x=" + this.x + ",y=" + this.y + ",width=" + this.width + ",height=" + this.height,{ fileName : "HighLight.hx", lineNumber : 205, className : "core.HighLight", methodName : "DataTransform"}); } ,save: function() { if(this.twidth == 0 || this.theight == 0) return; this.guid = RunTime.kvPrex + "@$ht$@" + new Date().getTime(); this.DataTransform(); localStorage.setItem(this.guid,this.toJSONString()); } ,toJSONString: function() { var json = "{\"obj\":[{\"x\":\"" + this.x + "\",\"y\":\"" + this.y + "\",\"width\":\"" + this.width + "\",\"height\":\"" + this.height + "\",\"page\":\"" + this.pageNum + "\",\"color\":\"" + this.color + "\",\"note\":\"" + this.note.text + "\"}]}"; return json; } ,getBottom: function() { return this.y + this.height; } ,getTop: function() { return this.y; } ,getRight: function() { return this.x + this.width; } ,getLeft: function() { return this.x; } ,getContext: function() { return this.canvas.getContext("2d"); } ,setCanvas: function(canvas) { this.canvas = canvas; if(this.note != null) this.note.setCanvas(this.canvas); } ,clone: function() { this.DataTransform(); var hl = new core.HighLight(); hl.x = this.x; hl.y = this.y; hl.width = this.width; hl.height = this.height; hl.pageNum = this.pageNum; hl.guid = this.guid; hl.color = this.color; hl.note.text = this.note.text; return hl; } ,getRightDrawParams: function() { var dp = RunTime.getDrawParams(1); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,getLeftDrawParams: function() { var dp = RunTime.getDrawParams(-1); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,getDrawParams: function() { var dp = RunTime.getDrawParams(this.pageLayoutType); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,__class__: core.HighLight } core.HotLink = function() { this.window_color = "#333333"; this.target = "_blank"; this.opacity = 0.8; this.pageLayoutType = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; }; core.HotLink.__name__ = true; core.HotLink.prototype = { click: function (popupXOffset, popupYOffset) { if (popupYOffset == null) popupYOffset = 0; if (popupXOffset == null) popupXOffset = 0; switch (this.type) { case "": if (this.destination != null) { if (this.destination.indexOf("page:") == 0) { var val = HxOverrides.substr(this.destination, 5, null); var num = Std.parseInt(val); if (RunTime.flipBook != null) RunTime.flipBook.turnToPage(num - 1); else Zoom.zoomOut(num - 1); } else if (this.destination.indexOf("mailto:") == 0) { RunTime.logClickLink(this.destination); js.Lib.window.location.href = this.destination; } else if (this.destination.indexOf("fun:") == 0) { var fun = HxOverrides.substr(this.destination, 4, null); if (fun == "content") RunTime.flipBook.onContentsClick(null); else if (fun == "thumb") RunTime.flipBook.onThumbsClick(null); else if (fun == "showtxt") RunTime.flipBook.onShowTxtClick(null); else if (fun == "highlight") RunTime.flipBook.onButtonMaskClick(null); else if (fun == "bookmark") RunTime.flipBook.onButtonBookmark(null); else if (fun == "notes") RunTime.flipBook.onButtonNoteClick(null); else if (fun == "autoflip") RunTime.flipBook.onAutoFlipClick(null); else if (fun == "download") RunTime.onDownloadClick(null); else if (fun == "fliptofront") RunTime.flipBook.turnToFirstPage(null); else if (fun == "flipleft") RunTime.flipBook.turnToPrevPage(null); else if (fun == "flipright") RunTime.flipBook.turnToNextPage(null); else if (fun == "fliptoback") RunTime.flipBook.turnToLastPage(null); } else { RunTime.logClickLink(this.destination); if ("_self" == this.target) js.Lib.window.location.href = this.destination; else js.Lib.window.open(this.destination, this.target); } } break; case "image": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"), popupXOffset, popupYOffset); core.HtmlHelper.toPopupImageHtml(this, function (txt) { js.Lib.document.getElementById("cvsOthers").innerHTML = txt; js.Lib.document.getElementById("popupImage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; }); RunTime.logClickLink(this.destination); break; case "video": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"), popupXOffset, popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupVideoHtml(this); js.Lib.document.getElementById("popupVideo").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; RunTime.playVideo(); RunTime.logVideoView(this.destination, this.youtubeId); break; case "audio": RunTime.flipBook.showPopupAudio(this); RunTime.logAudioView(this.destination); RunTime.playAudio(); break; case "message": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"), popupXOffset, popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupHtml(this); js.Lib.document.getElementById("popupMessage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; break; case "message-hover": RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"), popupXOffset, popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toPopupHtml(this); js.Lib.document.getElementById("popupMessage").style.cssText += " -webkit-transform: scale(1); -webkit-transition: 0.5s ease-out; "; break; } } , hitTest: function (mouseX, mouseY) { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); var result = mouseX >= xx && mouseY >= yy && mouseX <= xx + ww && mouseY <= yy + hh; return result; } , loadToContext2D: function (ctx) { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); this.loadToRect(ctx, xx, yy, ww, hh); } , loadToRect: function (ctx, x, y, w, h) { if (this.tt == 1) { if (w > 0 && h > 0) { // ctx.fillStyle = orc.utils.DrawHelper.createFillStyle("#ffffff", this.opacity); ctx.font = this.fontSize + "px " + this.fontName; ctx.fillStyle = this.color; ctx.fillText(this.text, x, y + 30); // alert(w); // ctx.fillRect(x | 0, y | 0, w | 0, h | 0); // alert(ctx); } } else { if (w > 0 && h > 0) { ctx.fillStyle = orc.utils.DrawHelper.createFillStyle(this.color, this.opacity); ctx.fillRect(x | 0, y | 0, w | 0, h | 0); } } } , getDrawParams: function () { var dp = RunTime.getDrawParams(this.pageLayoutType); dp.applyTransform(this.scale, this.offsetX, this.offsetY); return dp; } , __class__: core.HotLink } core.Html5Image = function(url,onLoad) { this.url = url; this.onload = onLoad; this.image = new Image(); this.image.onload = this.onload; this.image.src = url; }; core.Html5Image.__name__ = true; core.Html5Image.prototype = { __class__: core.Html5Image } core.HtmlHelper = function() { } core.HtmlHelper.__name__ = true; core.HtmlHelper.toContentsHtml = function(xml) { var roots = orc.utils.Util.getXmlChilds(xml); if(roots.length != 1) return ""; var root = roots[0]; var childs = orc.utils.Util.getXmlChilds(root); var s = ""; if(childs.length > 0) { var _g1 = 0, _g = childs.length; while(_g1 < _g) { var i = _g1++; s += core.HtmlHelper.toContentsNodeHtml(childs[i]); } } return s; } core.HtmlHelper.toContentsNodeHtml = function(xml) { var childs = orc.utils.Util.getXmlChilds(xml); var s = ""; s += "<ul>"; s += "<li>"; s += core.HtmlHelper.toContentsNodeHtmlCore(xml); s += "</li>"; if(childs.length > 0) { s += "<ul>"; var _g1 = 0, _g = childs.length; while(_g1 < _g) { var i = _g1++; s += core.HtmlHelper.toContentsNodeHtml(childs[i]); } s += "</ul>"; } s += "</ul>"; return s; } core.HtmlHelper.toContentsNodeHtmlCore = function(xml) { var title = xml.get("title"); var page = xml.get("page"); var pageVal = 0; if(page != null && page != "") { pageVal = Std.parseInt(page); page = Std.string(pageVal - 1); } return "<span onclick=\"gotoPage(" + page + ");\">" + title + "</span>"; } core.HtmlHelper.toSnsHtml = function(xml) { var roots = orc.utils.Util.getXmlChilds(xml); if(roots.length != 1) return ""; var root = roots[0]; var childs = orc.utils.Util.getXmlChilds(root); var s = ""; s += "<div id='snsbox' style='float:left;width: 100%;height: 250px;'>"; if(childs.length > 0) { var _g1 = 0, _g = childs.length; while(_g1 < _g) { var i = _g1++; s += core.HtmlHelper.toSnsNodeHtml(childs[i]); } } s += "</div>"; return s; } core.HtmlHelper.toSnsNodeHtml = function(xml) { var s = "<p style='float:left;width:150px;height:20px;'>"; s += "<a href='" + xml.get("href") + "'><img style='vertical-align:middle;' src='" + RunTime.urlRoot + xml.get("logoUrl") + "'>" + "</a>"; s += "<span onclick=\"RunTime.navigateUrl('" + xml.get("href") + "')\" style='vertical-align:middle;'>" + xml.get("name") + "</span>"; s += "</p>"; return s; } core.HtmlHelper.toAboutHtml = function(aboutXml,bookinfoXml) { var aboutRoots = orc.utils.Util.getXmlChilds(aboutXml); if(aboutRoots.length != 1) return ""; var aboutRoot = aboutRoots[0]; var bookinfoRoots = orc.utils.Util.getXmlChilds(bookinfoXml); if(bookinfoRoots.length != 1) return ""; var bookinfoRoot = bookinfoRoots[0]; var logoUrl = aboutRoot.get("logo"); var text = aboutRoot.firstChild().getNodeValue(); var bookTitle = bookinfoRoot.get("title"); var bookAuthor = bookinfoRoot.get("author"); var companyName = bookinfoRoot.get("companyName"); var companyUrl = bookinfoRoot.get("companyUrl"); var companyAddress = bookinfoRoot.get("companyAddress"); var companyEmail = bookinfoRoot.get("email"); var companyTel = bookinfoRoot.get("tel"); var l_bookTitle = L.s("BookTitle","Book Title"); var l_bookAuthor = L.s("BookAuthor","Book Author"); var l_companyName = L.s("CompanyName","Company Name"); var l_companyUrl = L.s("CompanyUrl","Company Url"); var l_companyAddress = L.s("CompanyAddress","Address"); var l_companyEmail = L.s("CompanyEmail","Email"); var l_companyTel = L.s("CompanyTel","Tel"); var aboutUsText = ""; if(bookTitle != "") aboutUsText += l_bookTitle + ":" + bookTitle + "<br />"; if(bookAuthor != "") aboutUsText += l_bookAuthor + ":" + bookAuthor + "<br />"; if(companyName != "") aboutUsText += l_companyName + ":" + companyName + "<br />"; if(companyUrl != "") aboutUsText += l_companyUrl + ":" + companyUrl + "<br />"; if(companyAddress != "") aboutUsText += l_companyAddress + ":" + companyAddress + "<br />"; if(companyEmail != "") aboutUsText += l_companyEmail + ":" + companyEmail + "<br />"; if(companyTel != "") aboutUsText += l_companyTel + ":" + companyTel + "<br />"; var s = ""; s += "<div style='width:100%; height:280px;'>"; s += "<div style='width:30%; height:160px; float:left;'>"; if(logoUrl != "") s += "<img src='" + logoUrl + "'/>"; s += "</div>"; s += "<div style='width:65%; height:160px; float:left;'>" + aboutUsText + "</a></div>"; s += "<div style='width:100%; height:110px;'>" + text + "</div>"; s += "</div>"; return s; } core.HtmlHelper.toEmailHtml = function() { var s = ""; s += "<form id='sendEmail' action='" + RunTime.book.gateway + "' method='post'>"; s += "<table border='none' class='email'>"; s += "<tr><td>" + L.s("To","To") + ":</td><td><input id='tomail' type='text' name='tomail' /></td></tr>"; s += "<tr><td>" + L.s("YourName","Your Name") + ":</td><td><input id='yname' type='text' name='yourName'/></td></tr>"; s += "<tr><td>" + L.s("YourEmail","Your Email") + ":</td><td><input id='youremail' type='text' name='frommail'/></td></tr>"; s += "<tr><td>" + L.s("Message","Message") + ":</td><td><textarea rows='10' cols='30' id='sharemsg' name='message'></textarea></td></tr>"; s += "<tr><td></td><td align='right'><input style='width:100px' type='button' onclick='RunTime.onSendEmail();' value='" + L.s("Send","Send") + "'/></td></tr>"; s += "</table>"; s += "<input style='display:none' type='hide' id='subject' name='subject' value='" + L.s("YourFriend","YourFirend") + L.s("ShareEmailTitle","ShareEmailTitle") + "'/>"; s += "</form>"; return s; } core.HtmlHelper.toThumbsHtml = function(pages) { var s = ""; var _g1 = 0, _g = pages.length; while(_g1 < _g) { var i = _g1++; var page = pages[i]; s += core.HtmlHelper.toThumbsNodeHtml(page); } return s; } core.HtmlHelper.toThumbsNodeHtml = function(page) { return "<img class=\"thumb\" src=\"" + page.urlThumb + "\" onclick=\"gotoPage(" + page.num + "); \" />"; } core.HtmlHelper.toBookmarksHtml = function(bookmarks,singleMode,lbEnable,rbEnable) { var s = ""; s += "<div id=\"op\">"; s += "<textarea id=\"bookmarknote\"></textarea>"; if(singleMode) s += "<button onclick=\"addBookmark(0)\">Add Bookmark</button>"; else { if(lbEnable) s += "<button onclick=\"addBookmark(-1)\">Add Left Bookmark</button>"; else s += "<button disabled=\"disabled\">Add Left Bookmark</button>"; if(rbEnable) s += "<button onclick=\"addBookmark(1)\">Add Right Bookmark</button>"; else s += "<button disabled=\"disabled\">Add Right Bookmark</button>"; } s += "<button>Remove All</button>"; s += "</div>"; s += "<ul style=\"margin:20px 0px 0px 0px;padding-left:5px;padding-right:5px;\">"; if(bookmarks != null) { var _g1 = 0, _g = bookmarks.length; while(_g1 < _g) { var i = _g1++; var bookmark = bookmarks[i]; s += core.HtmlHelper.toBookmarkNodeHtml(bookmark); } } s += "</ul>"; return s; } core.HtmlHelper.toBookmarkNodeHtml = function(bookmark) { var s = ""; s += "<li class=\"bookmarkrow\" >"; s += "<p class=\"p1\" onclick=\"gotoPage(" + Std.string(bookmark.pageNum - 1) + ")\" > P" + bookmark.pageNum + "</p>"; s += "<p class=\"p2\" onclick=\"gotoPage(" + Std.string(bookmark.pageNum - 1) + ")\">" + bookmark.text + "</p>"; if(!bookmark.onlyread) s += "<button onclick=\"removeBookmark(" + Std.string(bookmark.pageNum - 1) + ")\" style=\"float:right;margin:0px -2px;\">" + L.s("RemoveBookmark","Remove") + "</button>"; s += "</li>"; return s; } core.HtmlHelper.toSearchHtml = function() { return StringTools.replace(RunTime.searchHtmlCache,"$Search",L.s("Search")); } core.HtmlHelper.toSearchResultHtml = function(results) { var s = ""; s += "<table>"; var _g1 = 0, _g = results.length; while(_g1 < _g) { var i = _g1++; var item = results[i]; s += "<tr onclick=\"gotoPage(" + Std.string(item.page - 1) + ")\">"; s += "<td width=\"40px\" class=\"colPage\">"; s += "P" + Std.string(item.page); s += "</td>"; s += "<td class=\"colContent\">"; s += item.content; s += "</td>"; s += "</tr>"; } s += "</table>"; return s; } core.HtmlHelper.toVideoHtml = function(video) { return video.toHtml(); } core.HtmlHelper.toRectVideoHtml = function(video,xx,yy,ww,hh) { var loop = video.autoRepeat?"loop":""; var s = ""; s += "<div id=\"" + video.id + "\" style=\"position:absolute;z-index:101;left:" + Std.string(Math.round(xx)) + "px;top:" + Std.string(Math.round(yy)) + "px;width:" + Std.string(Math.round(ww)) + "px;height:" + Std.string(Math.round(hh)) + "px;\">"; s += "<video class=\"video-js\" src=\"" + video.url + "\" width=\"" + Std.string(Math.round(ww)) + "\" height=\"" + Std.string(Math.round(hh)) + "\" controls autoplay preload onloadeddata='RunTime.logVideoView(\"" + video.url + "\", \"" + video.youtubeId + "\")' " + loop + " >"; s += "</video>"; s += "</div>"; return s; } core.HtmlHelper.toRectYoutubeVideoHtml = function(video,xx,yy,ww,hh) { var s = ""; s += "<div id=\"" + video.id + "\" style=\"position:absolute;z-index:101;left:" + Std.string(Math.round(xx)) + "px;top:" + Std.string(Math.round(yy)) + "px;width:1px;height:1px;\">"; s += "<iframe frameborder=\"0\" type=\"text/html\"" + "\" width=\"" + Std.string(Math.round(ww)) + "\" height=\"" + Std.string(Math.round(hh)) + "\"" + " src=\"http://www.youtube.com/embed/" + video.youtubeId + "?controls=1&antoplay=1&enablejsapi=1\">"; s += "</iframe>"; s += "</div>"; return s; } core.HtmlHelper.toSlideshow = function(slideshow) { return slideshow.toHtml(); } core.HtmlHelper.toSlideShowHtml = function(slideshow,xx,yy,ww,hh,scale) { var s = ""; if(slideshow.transition == "move") { s += "<div class=\"" + "slides" + "\" style=\"position:absolute;z-index:108;left:" + Std.string(Math.round(xx)) + "px;top:" + Std.string(Math.round(yy)) + "px;width:" + Std.string(Math.round(ww)) + "px;height:" + Std.string(Math.round(hh)) + "px;\">"; s += "<div style=\"width: 100%;overflow: hidden;\">"; s += "<div class=\"inner\" id=\"p_" + slideshow.id + "\" style=\"width:" + slideshow.slides.length * 100 + "%;\">"; var _g1 = 0, _g = slideshow.slides.length; while(_g1 < _g) { var i = _g1++; s += "<article style=\"width:" + 1 / slideshow.slides.length * 100 + "%;\">"; s += "<img src=\"" + slideshow.slides[i].url + "\" onclick=\"RunTime.navigateUrl('" + slideshow.slides[i].href + "');\">"; s += "</article>"; } s += "</div>"; s += "</div>"; s += "</div>"; } else if(slideshow.transition == "fade") { s += "<div class=\"" + "slides" + "\" style=\"position:absolute;z-index:108;left:" + Std.string(Math.round(xx)) + "px;top:" + Std.string(Math.round(yy)) + "px;width:" + Std.string(Math.round(ww)) + "px;height:" + Std.string(Math.round(hh)) + "px;\">"; s += "<div class=\"inner\" id=\"p_" + slideshow.id + "\" >"; var _g1 = 0, _g = slideshow.slides.length; while(_g1 < _g) { var i = _g1++; var sid = slideshow.id + "_" + (slideshow.slides.length - i); s += "<article style=\"text-align:left;width:100%;overflow: hidden;background:" + slideshow.bgColor + ";position:absolute;\"" + " id=\"a_" + sid + "\">"; s += "<img id=\"" + sid + "\" src=\"" + slideshow.slides[slideshow.slides.length - i - 1].url + "\"" + " onclick=\"RunTime.navigateUrl('" + slideshow.slides[slideshow.slides.length - i - 1].href + "');\" " + " style=\"" + "\"" + " onload=\"RunTime.resizeSlide(this," + (ww | 0) + "," + (hh | 0) + ",'" + sid + "'," + scale + ");\"" + ">"; s += "</article>"; } s += "</div>"; s += "</div>"; } return s; } core.HtmlHelper.toPopupImageHtml = function(item,success) { var w = RunTime.clientWidth * 0.9 | 0; var h = RunTime.clientHeight * 0.9 | 0; if(item.popupWidth != null && item.popupHeight != null) { w = item.popupWidth; h = item.popupHeight; } else { var img = null; var onload = function() { item.popupWidth = img.image.width; item.popupHeight = img.image.height; core.HtmlHelper.toPopupImageHtml(item,success); }; img = new core.Html5Image(item.destination,onload); return; } var helper = new orc.utils.ImageMetricHelper(w,h); var scale = helper.getMaxFitScale(RunTime.clientWidth * 0.9,RunTime.clientHeight * 0.9); h = h * scale | 0; w = w * scale | 0; var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var s = ""; if(item.popupWidth != null && item.popupHeight != null) { s = ""; s += "<div id=\"popupImage\" style=\"position:absolute; z-index:200;left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; background-color:#ffffff; -webkit-transform: scale(0.2); -webkit-transition: 0s ease-out; \" >"; s += "<img src=\"" + Std.string(item.destination) + "\" style=\"width:" + Std.string(w) + "px;height:" + Std.string(h) + "px;\" />"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; } else { s = ""; s += "<div style=\"position:absolute;z-index:200; left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">"; s += "<div style=\"margin:0 auto; \">"; s += "<img src=\"" + Std.string(item.destination) + "\" style=\"max-width:" + Std.string(w) + "px;max-height:" + Std.string(h) + "px;\" />"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; s += "</div>"; } if(success != null) success(s); } core.HtmlHelper.toPopupVideoHtml = function(item) { var w = 600; var h = 480; if(item.popupWidth != null && item.popupHeight != null) { w = item.popupWidth; h = item.popupHeight; } if(RunTime.clientWidth < 480) { w = w * (RunTime.clientWidth / item.popupWidth) * 0.8 | 0; h = h * (RunTime.clientHeight / item.popupHeight) * 0.8 | 0; } var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var s = ""; s += "<div id=\"popupVideo\"style=\"position:absolute; z-index:201;left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; background-color:#ffffff; -webkit-transform: scale(0.2); -webkit-transition: 0s ease-out; \">"; if(item.youtubeId == null || item.youtubeId == "") { s += "<video class=\"video-js\" src=\"" + Std.string(item.destination) + "\" width=\"" + Std.string(Math.round(w)) + "\" height=\"" + Std.string(Math.round(h)) + "\" controls autoplay preload onloadstart='this.play()' >"; s += "</video>"; } else { s += "<div style=\"position:absolute;padding-left:0px;padding-top:0px;\">"; s += "<iframe frameborder=\"0\" type=\"text/html\"" + "\" width=\"" + Std.string(Math.round(w)) + "\" height=\"" + Std.string(Math.round(h)) + "\"" + " src=\"http://www.youtube.com/embed/" + Std.string(item.youtubeId) + "?controls=1&antoplay=1&enablejsapi=1\">"; s += "</iframe>"; s += "</div>"; } s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; return s; } core.HtmlHelper.toPopupPageAudiosHtml = function(audio,isLeft) { if(isLeft == null) isLeft = true; var w = 200; var h = 40; var left = 20; var top = 20; var s = ""; if(audio == null) return s; if(isLeft == true) { s += "<div style=\"position:absolute; z-index:202;left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">"; s += "<audio class=\"video-js\" src=\"" + audio.url + "\" width=\"" + Std.string(Math.round(w)) + "\" height=\"" + Std.string(Math.round(h)) + "\" controls autoplay >"; s += "</audio>"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearLeftBgAudio();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; } else { s += "<div style=\"position:absolute; z-index:202;left:" + Std.string(RunTime.clientWidth / 2 + left | 0) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">"; s += "<audio class=\"video-js\" src=\"" + audio.url + "\" width=\"" + Std.string(Math.round(w)) + "\" height=\"" + Std.string(Math.round(h)) + "\" controls autoplay >"; s += "</audio>"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearRightBgAudio();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; } return s; } core.HtmlHelper.toPopupAudioHtml = function(item) { var w = 200; var h = 40; var left = 20; var top = 20; var s = ""; s += "<div style=\"position:absolute; z-index:203;left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">"; s += "<audio class=\"video-js\" src=\"" + Std.string(item.destination) + "\" width=\"" + Std.string(Math.round(w)) + "\" height=\"" + Std.string(Math.round(h)) + "\" controls autoplay >"; s += "</audio>"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearAudio();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; return s; } core.HtmlHelper.toPopupHtml = function(item) { var w = 600; var h = 480; if(item.popupWidth != null && item.popupHeight != null) { w = item.popupWidth; h = item.popupHeight; } if(RunTime.clientWidth < 480) { w = w * (RunTime.clientWidth / item.popupWidth) * 0.8 | 0; h = h * (RunTime.clientHeight / item.popupHeight) * 0.8 | 0; } var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var window_color = "#333333"; if(item.window_color != null) window_color = item.window_color; var s = ""; s += "<div id=\"popupMessage\" style=\"position:absolute; z-index:204; left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; background-color:#7f7f7f; color:#fff; text-align:left;-moz-transform: scale(0.2);-moz-transition:width 0s ease-out; -webkit-transform: scale(0.2); -webkit-transition: 0s ease-out; \">"; s += "<div style=\"height:" + Std.string(h - 24) + "px; line-height:120%; background-color:" + window_color + "; margin:6px; padding:6px;\">"; s += "<pre style=\"white-space:pre-wrap; word-wrap:break-word;\">"; s += Std.string(item.htmlText); s += "</pre>"; s += "</div>"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; return s; } core.HtmlHelper.toBookmarkPopupHtml = function(item) { var w = 600; var h = 480; if(RunTime.clientWidth < 480) { w = w * (RunTime.clientWidth / w) * 0.8 | 0; h = h * (RunTime.clientHeight / h) * 0.8 | 0; } var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var s = ""; s += "<div style=\"position:absolute; z-index:104; left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; background-color:#ffffff; text-align:left; \">"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-12px;top:-12px;\" />"; s += "</div>"; return s; } core.HtmlHelper.toHighLightPopupHtml = function(item,szSaveFunName,szDeleteFunName) { var w = 300; var h = 200; if(item.popupWidth != null && item.popupHeight != null) { w = item.popupWidth; h = item.popupHeight; } if(RunTime.clientWidth < 480) { w = w * (RunTime.clientWidth / item.popupWidth) * 0.8 | 0; h = h * (RunTime.clientHeight / item.popupHeight) * 0.8 | 0; } var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var colorString = item.color; if(colorString == "") colorString = "rgba(0,255,0,0.4)"; colorString = HxOverrides.substr(colorString,5,null); var results = colorString.split(","); var colorR = StringTools.hex(Std.parseInt(results[0]),2); var colorG = StringTools.hex(Std.parseInt(results[1]),2); var colorB = StringTools.hex(Std.parseInt(results[2]),2); var newColorString = "#" + colorR + colorG + colorB; var s = ""; s += "<div style=\"position:absolute; z-index:800; left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">" + "<div style=\"margin:0 0; position:absolute; background-color:black;" + "-webkit-border-radius:10px; border:1px solid #ccc; opacity:0.6;width:300px; height:200px;\">" + "</div>" + "<div style=\"position:absolute;top:10px; left:10px; width:280px;" + "background-color:#ffffff; border:1px solid #ccc;margin:0 0;\">" + "<div style=\"width:280px; height:128px; background:#ffffff; padding-top:22px; \">" + "<div id=\"colorPicker\" style=\"position:absolute; top:0px; left:0px;\"><input type=\"button\" value=\"\" id=\"showColor\" style=\"width:150px; background:" + newColorString + "; border:1px solid #ccc; height:20px;\" onclick=\"showHighlightColor()\" /><input type=\"hidden\" id=\"showVal\" value=\"\"><div id=\"color\" style=\"display:none; position:absolute;top:0px;left:0px; background:#ffffff; z-index:810; \"></div></div>" + "<textarea id=\"textNote\" style=\"width:275px; height:123px; border:0px\">" + Std.string(item.note.text) + "</textarea>" + "</div>" + "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-20px;top:-20px;\" />" + "</div>" + "<div style=\"position:absolute;top:182px; left:10px;width:280px; margin:0 0; \">" + "<img onclick=\"" + szSaveFunName + "()\" src=\"content/images/save.png\" style=\"position:absolute;" + "left:5px; top:-16px; \"/>" + "<img onclick=\"" + szDeleteFunName + "()\" src=\"content/images/garbage.png\" style=\"position:absolute;" + "left:75px; top:-16px; \"/>" + "</div>" + "</div>"; return s; } core.HtmlHelper.toNotePopupHtml = function(item,szSaveFunName,szDeleteFunName) { var w = 300; var h = 200; if(item.popupWidth != null && item.popupHeight != null) { w = item.popupWidth; h = item.popupHeight; } if(RunTime.clientWidth < 480) { w = w * (RunTime.clientWidth / item.popupWidth) * 0.8 | 0; h = h * (RunTime.clientHeight / item.popupHeight) * 0.8 | 0; } var left = (RunTime.clientWidth - w) / 2 | 0; var top = (RunTime.clientHeight - h) / 2 | 0; var s = ""; s += "<div style=\"position:absolute; z-index:800; left:" + Std.string(left) + "px; top:" + Std.string(top) + "px; width:" + Std.string(w) + "px; height:" + Std.string(h) + "px; \">" + "<div style=\"margin:0 0; position:absolute; background-color:black;" + "-webkit-border-radius:10px; border:1px solid #ccc; opacity:0.6;width:300px; height:200px;\">" + "</div>" + "<div style=\"position:absolute;top:10px; left:10px; width:280px;" + "background-color:#ffffff; border:1px solid #ccc;margin:0 0;\">" + "<div style=\"width:280px; height:150px; background:#ffffff\">" + "<textarea id=\"textNote\" style=\"width:275px; height:145px; border:0px\">" + Std.string(item.note.text) + "</textarea>" + "</div>" + "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-20px;top:-20px;\" />" + "</div>" + "<div style=\"position:absolute;top:182px; left:10px;width:280px; margin:0 0; \">" + "<img onclick=\"" + szSaveFunName + "()\" src=\"content/images/save.png\" style=\"position:absolute;" + "left:5px; top:-16px\"/>" + "<img onclick=\"" + szDeleteFunName + "()\" src=\"content/images/garbage.png\" style=\"position:absolute;" + "left:75px; top:-16px\"/>" + "</div>" + "</div>"; return s; } core.HtmlHelper.toInputPwdHtml = function() { var left = (RunTime.clientWidth - 300) / 2; var top = (RunTime.clientHeight - 180) / 2; var pos = "position:absolute;z-index:200; left:" + Std.string(Math.round(left)) + "px; top:" + Std.string(Math.round(top)) + "px;"; var s = ""; s += "<div id=\"inputBox\" style=\" " + pos + " width:300px; height:120px;background-color:#CCCCCC; \">"; s += "<p>" + L.s("NeedPassword") + "</p>"; s += "<input id=\"tbKeyword\" type=\"password\" style=\"width:120px; height:20px; \" onkeypress=\"return onInputKeyPress(event)\" />"; s += "<input type=\"button\" style=\"height:20px; \" value=\"" + L.s("Submit") + "\" onclick=\"inputPwd(); \" />"; s += "</div>"; return s; } core.HtmlHelper.toInputUnlockPwdHtml = function() { var left = (RunTime.clientWidth - 300) / 2; var top = (RunTime.clientHeight - 180) / 2; var pos = "position:absolute;z-index:200; left:" + Std.string(Math.round(left)) + "px; top:" + Std.string(Math.round(top)) + "px;"; var s = ""; s += "<div id=\"inputBox\" style=\" " + pos + " width:300px; height:120px;background-color:#CCCCCC; \">"; s += "<img width=\"24\" height=\"24\" src=\"content/images/close.png\" onclick=\"clearPopupContents();\" style=\"position:absolute;right:-10px;top:-10px;\" />"; s += "<p>" + L.s("NeedPassword") + "</p>"; s += "<input id=\"tbKeyword\" type=\"password\" style=\"width:120px; height:20px; \" onkeypress=\"return onUnlockKeyPress(event)\" />"; s += "<input type=\"button\" style=\"height:20px; \" value=\"" + L.s("Submit") + "\" onclick=\"unlockPage(); \" />"; s += "</div>"; return s; } core.LangCfg = function() { this.content = null; this.isDefault = false; }; core.LangCfg.__name__ = true; core.LangCfg.prototype = { __class__: core.LangCfg } core.Note = function() { this.image = new Image(); this.image.src = "content/images/iconNote.png"; this.text = ""; this.x = 0; this.y = 0; this.guid = ""; }; core.Note.__name__ = true; core.Note.prototype = { hitTest: function(x,y) { if(this.image == null) return false; if(x < this.x || y < this.y || x > this.x + this.image.width || y > this.y + this.image.height) return false; return true; } ,loadToContext2D: function(context) { if(this.image != null) context.drawImage(this.image,this.x,this.y); } ,draw: function() { if(this.canvas == null || this.image == null) return; var context = this.getContext(); context.drawImage(this.image,this.x,this.y); } ,getContext: function() { return this.canvas.getContext("2d"); } ,setCanvas: function(canvas) { this.canvas = canvas; } ,setImage: function(image) { this.image = image; } ,__class__: core.Note } core.NoteIcon = function() { this.note = new core.Note(); this.x = 0; this.y = 0; this.width = 0; this.height = 0; this.pageNum = -1; this.guid = ""; this.checked = false; this.pageLayoutType = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; }; core.NoteIcon.__name__ = true; core.NoteIcon.prototype = { click: function(popupXOffset,popupYOffset) { if(popupYOffset == null) popupYOffset = 0; if(popupXOffset == null) popupXOffset = 0; RunTime.showPopupMaskLayer(); RunTime.setOffset(js.Lib.document.getElementById("cvsOthers"),popupXOffset,popupYOffset); js.Lib.document.getElementById("cvsOthers").innerHTML = core.HtmlHelper.toNotePopupHtml(this,"saveNote","deleteNote"); js.Lib.document.getElementById("textNote").focus(); } ,hitTest: function(mouseX,mouseY) { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); var result = mouseX >= xx && mouseY >= yy && mouseX <= xx + ww && mouseY <= yy + hh; return result; } ,draw: function(context) { var radius = 5; context.save(); context.fillStyle = "rgba(255,0,0,0.4)"; context.fillRect(this.tx | 0,this.ty | 0,this.twidth | 0,this.theight | 0); context.restore(); if(this.note != null) { this.note.x = this.tx; this.note.y = this.ty - this.note.image.height; this.note.draw(); } } ,loadToContext2D: function(context) { var radius = 5; context.save(); context.fillStyle = "rgba(255,0,0,0.4)"; var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); context.drawImage(this.note.image,xx | 0,yy | 0,ww | 0,hh | 0); context.restore(); if(this.note != null) { this.note.x = this.x; this.note.y = this.y - this.note.image.height; this.note.draw(); } } ,remove: function() { localStorage.removeItem(this.guid); } ,updateText: function(text) { this.note.text = text; localStorage.setItem(this.guid,this.toJSONString()); } ,setChecked: function(bChecked) { this.checked = bChecked; if(this.checked) { } else { } } ,fillData: function(guid,json) { var objJSON = JSON.parse(json); this.x = Std.parseFloat(objJSON.obj[0].x); this.y = Std.parseFloat(objJSON.obj[0].y); this.width = Std.parseFloat(objJSON.obj[0].width); this.height = Std.parseFloat(objJSON.obj[0].height); this.note.text = objJSON.obj[0].note; this.pageNum = Std.parseInt(objJSON.obj[0].page); this.guid = guid; } ,DataTransform: function() { var dp = this.getDrawParams(); this.pageNum = this.tpageNum; if(RunTime.singlePage) { } else if(RunTime.book.rightToLeft) { if(this.tx > RunTime.clientWidth / 2) dp = this.getLeftDrawParams(); else dp = this.getRightDrawParams(); } else if(this.tx > RunTime.clientWidth / 2) dp = this.getRightDrawParams(); else dp = this.getLeftDrawParams(); this.x = dp.sx + (this.tx - dp.dx) / (dp.dw / dp.sw); this.y = dp.sy + (this.ty - dp.dy) / (dp.dh / dp.sh); this.width = this.twidth / (dp.dw / dp.sw); this.height = this.theight / (dp.dh / dp.sh); haxe.Log.trace("x=" + this.x + ",y=" + this.y + ",width=" + this.width + ",height=" + this.height,{ fileName : "NoteIcon.hx", lineNumber : 193, className : "core.NoteIcon", methodName : "DataTransform"}); } ,save: function() { if(this.twidth == 0 || this.theight == 0) return; this.guid = RunTime.kvPrex + "@$ni$@" + new Date().getTime(); this.DataTransform(); localStorage.setItem(this.guid,this.toJSONString()); } ,toJSONString: function() { var json = "{\"obj\":[{\"x\":\"" + this.x + "\",\"y\":\"" + this.y + "\",\"width\":\"" + this.width + "\",\"height\":\"" + this.height + "\",\"page\":\"" + this.pageNum + "\",\"note\":\"" + this.note.text + "\"}]}"; return json; } ,getBottom: function() { return this.y + this.height; } ,getTop: function() { return this.y; } ,getRight: function() { return this.x + this.width; } ,getLeft: function() { return this.x; } ,getContext: function() { return this.canvas.getContext("2d"); } ,setCanvas: function(canvas) { this.canvas = canvas; if(this.note != null) this.note.setCanvas(this.canvas); } ,clone: function() { this.DataTransform(); var hl = new core.NoteIcon(); hl.x = this.x; hl.y = this.y; hl.width = this.width; hl.height = this.height; hl.pageNum = this.pageNum; hl.guid = this.guid; hl.note.text = this.note.text; return hl; } ,getRightDrawParams: function() { var dp = RunTime.getDrawParams(1); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,getLeftDrawParams: function() { var dp = RunTime.getDrawParams(-1); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,getDrawParams: function() { var dp = RunTime.getDrawParams(this.pageLayoutType); dp.applyTransform(this.scale,this.offsetX,this.offsetY); return dp; } ,__class__: core.NoteIcon } core.Page = function() { this.locked = false; this.canZoom = true; this.aniScale = 1; this.visible = true; this.pageOffset = 0; this.scale = 1; this.offsetX = 0; this.offsetY = 0; this.bigMode = false; this.locked = false; }; core.Page.__name__ = true; core.Page.prototype = { clipImage: function(ctx,img,sx,sy,sw,sh,dx,dy,dw,dh) { if(img.src == null || img.src == "") { js.Lib.alert("no data"); return; } var pw = RunTime.book.pageWidth; var ph = RunTime.book.pageHeight; var rw = img.width; var rh = img.height; var scaleX = rw / pw; var scaleY = rh / ph; sx = sx * scaleX; sy = sy * scaleY; sw = sw * scaleX; sh = sh * scaleY; if(sx < 0) sx = 0; if(sy < 0) sy = 0; if(sx + sw > img.width) sw = img.width - sx; if(sy + sh > img.height) sh = img.height - sy; if(sx >= img.width || sy >= img.height) return; if(sw < 1 || sh < 1) return; ctx.save(); ctx.drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh); if(RunTime.bLocked && this.locked) { ctx.fillStyle = "rgb(255,255,255)"; ctx.fillRect(dx | 0,dy | 0,dw | 0,dh | 0); } ctx.restore(); } ,drawImageCore: function(offset) { var dp = this.drawParams.clone(); if(dp == null || dp.dw < 2) return; dp.applyTransform(this.scale,this.offsetX,this.offsetY); if(offset == 0) { this.clipImage(this.ctx,this._imagePage,dp.sx,dp.sy,dp.sw,dp.sh,dp.dx,dp.dy,dp.dw,dp.dh); if(this._imageData == null) { } } else if(offset > 0) this.clipImage(this.ctx,this._imagePage,dp.sx,dp.sy,dp.sw * (1 - offset),dp.sh,dp.dx + dp.dw * offset,dp.dy,dp.dw * (1 - offset),dp.dh); else { offset = -offset; this.clipImage(this.ctx,this._imagePage,dp.sx + offset * dp.sw,dp.sy,dp.sw * (1 - offset),dp.sh,dp.dx,dp.dy,dp.dw * (1 - offset),dp.dh); } } ,draw: function() { if(this.ctx == null) return; if(this.drawParams == null) return; if(this.visible == false) return; var offset = this.pageOffset; if(this.bookContext != null) offset += this.bookContext.pageOffset; if(offset > -1.001 && offset < -1) offset = -1; if(offset > 1 && offset < 1.001) offset = 1; if(offset <= -1 || offset >= 1) return; this.drawImageCore(offset); } ,loadToContext2D: function(ctx) { this.ctx = ctx; if(this._imagePage == null) this.getImagePage(); if(this.loaded == null) RunTime.divLoading.style.display = "inline"; if(this.loaded == true) { RunTime.divLoading.style.display = "none"; this.draw(); } } ,onMouseClick: function(e) { if(e.localX > this._imagePage.width * 0.5) { if(this.turnRightCallback != null) this.turnRightCallback(); } else if(this.turnLeftCallback != null) this.turnLeftCallback(); } ,clearCallback: function() { this.turnLeftCallback = null; this.turnRightCallback = null; } ,zoom: function(scale) { this.aniScale += scale; } ,loadBigImagePage: function() { var img = new Image(); img.src = this.getBigPageUrl(); } ,getPageUrl: function() { return this.urlPage; } ,getBlankPage: function() { return RunTime.urlRoot + "content/images/bgLock.png"; } ,getBigPageUrl: function() { var url = this.urlPage; var seg = url.split("/"); return RunTime.urlRoot + "content/pages/" + seg[seg.length - 1]; } ,setBigImageMode: function() { this.bigMode = true; } ,getImagePage: function() { if(this._imagePage != null) return this._imagePage; var img = new Image(); img.src = this.urlPage; RunTime.divLoading.style.display = "inline"; img.onload = $bind(this,this.onLoadImage); this._imagePage = img; return this._imagePage; } ,onLoadImage: function() { RunTime.allCurrentImage += 1; haxe.Log.trace(" " + RunTime.allCurrentImage + " :" + RunTime.allLoadImage,{ fileName : "Page.hx", lineNumber : 75, className : "core.Page", methodName : "onLoadImage"}); this.loaded = true; this.draw(); if(RunTime.flipBook.currentPageNum == null || RunTime.flipBook.currentPageNum == this.num) { if(RunTime.allCurrentImage >= RunTime.allLoadImage) RunTime.divLoading.style.display = "none"; RunTime.flipBook.loadCtxHotlinks(); RunTime.flipBook.bookContext.render(); } } ,__class__: core.Page } core.PagePair = function(i) { if(i < 0 || i >= RunTime.book.pages.length) return; this.currentPageNum = i; if(i == 0) { this.rightPage = RunTime.book.pages[i]; this.rightPage.isDoublePageMode = true; this.rightPage.pageOffset = 0; this.rightPage.drawParams = RunTime.getDrawParams(1); RunTime.flipBook.zoomRightPage.width = this.rightPage.drawParams.dw | 0; RunTime.flipBook.zoomRightPage.height = this.rightPage.drawParams.dh | 0; RunTime.flipBook.zoomRightPage.style.left = Std.string(this.rightPage.drawParams.dx) + "px"; RunTime.flipBook.zoomRightPage.style.top = Std.string(this.rightPage.drawParams.dy) + "px"; RunTime.flipBook.rightPageLock.style.width = (this.rightPage.drawParams.dw | 0) + "px"; RunTime.flipBook.rightPageLock.style.height = (this.rightPage.drawParams.dh | 0) + "px"; RunTime.flipBook.rightPageLock.style.left = Std.string(this.rightPage.drawParams.dx) + "px"; RunTime.flipBook.rightPageLock.style.top = Std.string(this.rightPage.drawParams.dy) + "px"; } else if(i == RunTime.book.pages.length - 1 && i % 2 == 1) { this.leftPage = RunTime.book.pages[i]; this.leftPage.isDoublePageMode = true; this.leftPage.pageOffset = 0; this.leftPage.drawParams = RunTime.getDrawParams(-1); RunTime.flipBook.zoomLeftPage.width = this.leftPage.drawParams.dw | 0; RunTime.flipBook.zoomLeftPage.height = this.leftPage.drawParams.dh | 0; RunTime.flipBook.zoomLeftPage.style.left = Std.string(this.leftPage.drawParams.dx) + "px"; RunTime.flipBook.zoomLeftPage.style.top = Std.string(this.leftPage.drawParams.dy) + "px"; RunTime.flipBook.leftPageLock.style.width = (this.leftPage.drawParams.dw | 0) + "px"; RunTime.flipBook.leftPageLock.style.height = (this.leftPage.drawParams.dh | 0) + "px"; RunTime.flipBook.leftPageLock.style.left = Std.string(this.leftPage.drawParams.dx) + "px"; RunTime.flipBook.leftPageLock.style.top = Std.string(this.leftPage.drawParams.dy) + "px"; } else { var right = i + 1 - (i + 1) % 2; var left = right - 1; this.leftPage = RunTime.book.pages[left]; this.rightPage = RunTime.book.pages[right]; this.leftPage.isDoublePageMode = true; this.rightPage.isDoublePageMode = true; this.leftPage.pageOffset = 0; this.rightPage.pageOffset = 0; this.leftPage.drawParams = RunTime.getDrawParams(-1); this.rightPage.drawParams = RunTime.getDrawParams(1); RunTime.flipBook.zoomRightPage.width = this.rightPage.drawParams.dw | 0; RunTime.flipBook.zoomRightPage.height = this.rightPage.drawParams.dh | 0; RunTime.flipBook.zoomRightPage.style.left = Std.string(this.rightPage.drawParams.dx) + "px"; RunTime.flipBook.zoomRightPage.style.top = Std.string(this.rightPage.drawParams.dy) + "px"; RunTime.flipBook.zoomLeftPage.width = this.leftPage.drawParams.dw | 0; RunTime.flipBook.zoomLeftPage.height = this.leftPage.drawParams.dh | 0; RunTime.flipBook.zoomLeftPage.style.left = Std.string(this.leftPage.drawParams.dx) + "px"; RunTime.flipBook.zoomLeftPage.style.top = Std.string(this.leftPage.drawParams.dy) + "px"; RunTime.flipBook.rightPageLock.style.width = (this.rightPage.drawParams.dw | 0) + "px"; RunTime.flipBook.rightPageLock.style.height = (this.rightPage.drawParams.dh | 0) + "px"; RunTime.flipBook.rightPageLock.style.left = Std.string(this.rightPage.drawParams.dx) + "px"; RunTime.flipBook.rightPageLock.style.top = Std.string(this.rightPage.drawParams.dy) + "px"; RunTime.flipBook.leftPageLock.style.width = (this.leftPage.drawParams.dw | 0) + "px"; RunTime.flipBook.leftPageLock.style.height = (this.leftPage.drawParams.dh | 0) + "px"; RunTime.flipBook.leftPageLock.style.left = Std.string(this.leftPage.drawParams.dx) + "px"; RunTime.flipBook.leftPageLock.style.top = Std.string(this.leftPage.drawParams.dy) + "px"; } }; core.PagePair.__name__ = true; core.PagePair.prototype = { getNumInDoubleMode: function() { if(this.leftPage != null) return this.leftPage.numInDoubleMode; else if(this.rightPage != null) return this.rightPage.numInDoubleMode; else return -1; } ,match: function(pageNum) { if(this.leftPage != null) { if(this.leftPage.num == pageNum) return -1; } if(this.rightPage != null) { if(this.rightPage.num == pageNum) return 1; } return 0; } ,__class__: core.PagePair } core.SearchResult = function(content,page) { this.content = content; this.page = page; }; core.SearchResult.__name__ = true; core.SearchResult.prototype = { __class__: core.SearchResult } core.Slide = function() { }; core.Slide.__name__ = true; core.Slide.prototype = { __class__: core.Slide } core.SlideshowInfo = function() { this.bgColor = ""; this.slides = new Array(); this.tweener = new core.Tweener(); this.idx = 1; this.transition = "fade"; this.countOfClip = 0; }; core.SlideshowInfo.__name__ = true; core.SlideshowInfo.prototype = { updateLayout: function(dom) { if(dom == null) return; var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); dom.style.left = Std.string(Math.round(xx)) + "px"; dom.style.top = Std.string(Math.round(yy)) + "px"; var videoDom = dom.firstChild; videoDom.width = Std.string(Math.round(ww)); videoDom.height = Std.string(Math.round(hh)); } ,toHtml: function() { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); return core.HtmlHelper.toSlideShowHtml(this,xx,yy,ww,hh,dp.dw / dp.sw); } ,getDrawParams: function() { var dp = RunTime.getDrawParams(this.pageLayoutType); var ctx = RunTime.flipBook.bookContext; dp.applyTransform(ctx.scale,ctx.offsetX,ctx.offsetY); return dp; } ,onSlideChange: function(count) { if(count % this.countOfClip != 0) return; if(this.transition == "move") { var p = js.Lib.document.getElementById("p_" + this.id); if(p != null) { var pidx = -this.idx * 100; p.style.marginLeft = Std.string(pidx) + "%"; } this.idx++; if(this.idx >= this.slides.length) this.idx = 0; } else { var a = js.Lib.document.getElementById("a_" + this.id + "_" + Std.string(this.idx)); this.idx++; if(this.idx == this.slides.length + 1) { var _g1 = 0, _g = this.slides.length; while(_g1 < _g) { var i = _g1++; var t = i + 1; var p = js.Lib.document.getElementById("a_" + this.id + "_" + Std.string(t)); if(p != null) p.style.cssText = "text-align:left;width:100%;overflow: hidden;opacity:1;position:absolute;background:" + this.bgColor; } } if(a != null && this.idx < this.slides.length + 1) a.style.cssText = "text-align:left;opacity: 0 ; -webkit-transition: 0.5s ease-out;width:100%;overflow: hidden;"; if(this.idx > this.slides.length) this.idx = 1; } } ,stopTweener: function() { this.tweener.stop(); } ,startTweener: function() { this.countOfClip = 50 * Std.parseInt(this.interval); this.tweener.onChange = $bind(this,this.onSlideChange); this.tweener.start(1000000); } ,__class__: core.SlideshowInfo } core.Tweener = function() { this.count = 0; this.maxCount = 0; }; core.Tweener.__name__ = true; core.Tweener.prototype = { onChangeInvoke: function() { this.count++; if(this.onChange == null) return; if(this.count > this.maxCount) return; this.onChange(this.count); this.run(); } ,run: function() { if(this.count >= this.maxCount) return; haxe.Timer.delay($bind(this,this.onChangeInvoke),33); } ,stop: function() { this.maxCount = this.count; } ,start: function(max) { if(max == null) max = 1; this.maxCount = max; this.count = 0; this.run(); } ,__class__: core.Tweener } core.VideoInfo = function() { this.pageLayoutType = 0; this.youtubeId = ""; this.url = ""; this.id = ""; }; core.VideoInfo.__name__ = true; core.VideoInfo.prototype = { updateLayout: function(dom) { if(dom == null) return; var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); dom.style.left = Std.string(Math.round(xx)) + "px"; dom.style.top = Std.string(Math.round(yy)) + "px"; var videoDom = dom.firstChild; videoDom.width = Std.string(Math.round(ww)); videoDom.height = Std.string(Math.round(hh)); } ,toHtml: function() { var dp = this.getDrawParams(); var xx = dp.dx + (this.x - dp.sx) * (dp.dw / dp.sw); var yy = dp.dy + (this.y - dp.sy) * (dp.dh / dp.sh); var ww = this.width * (dp.dw / dp.sw); var hh = this.height * (dp.dh / dp.sh); if(this.youtubeId != null && this.youtubeId != "") return core.HtmlHelper.toRectYoutubeVideoHtml(this,xx,yy,ww,hh); else return core.HtmlHelper.toRectVideoHtml(this,xx,yy,ww,hh); } ,getDrawParams: function() { var dp = RunTime.getDrawParams(this.pageLayoutType); var ctx = RunTime.flipBook.bookContext; dp.applyTransform(ctx.scale,ctx.offsetX,ctx.offsetY); return dp; } ,__class__: core.VideoInfo } core.ZoomStatus = { __ename__ : true, __constructs__ : ["normal","zooming","zoomed","zoomin","zoomout"] } core.ZoomStatus.normal = ["normal",0]; core.ZoomStatus.normal.toString = $estr; core.ZoomStatus.normal.__enum__ = core.ZoomStatus; core.ZoomStatus.zooming = ["zooming",1]; core.ZoomStatus.zooming.toString = $estr; core.ZoomStatus.zooming.__enum__ = core.ZoomStatus; core.ZoomStatus.zoomed = ["zoomed",2]; core.ZoomStatus.zoomed.toString = $estr; core.ZoomStatus.zoomed.__enum__ = core.ZoomStatus; core.ZoomStatus.zoomin = ["zoomin",3]; core.ZoomStatus.zoomin.toString = $estr; core.ZoomStatus.zoomin.__enum__ = core.ZoomStatus; core.ZoomStatus.zoomout = ["zoomout",4]; core.ZoomStatus.zoomout.toString = $estr; core.ZoomStatus.zoomout.__enum__ = core.ZoomStatus; var haxe = haxe || {} haxe.BaseCode = function(base) { var len = base.length; var nbits = 1; while(len > 1 << nbits) nbits++; if(nbits > 8 || len != 1 << nbits) throw "BaseCode : base length must be a power of two."; this.base = base; this.nbits = nbits; }; haxe.BaseCode.__name__ = true; haxe.BaseCode.encode = function(s,base) { var b = new haxe.BaseCode(haxe.io.Bytes.ofString(base)); return b.encodeString(s); } haxe.BaseCode.decode = function(s,base) { var b = new haxe.BaseCode(haxe.io.Bytes.ofString(base)); return b.decodeString(s); } haxe.BaseCode.prototype = { decodeString: function(s) { return this.decodeBytes(haxe.io.Bytes.ofString(s)).toString(); } ,encodeString: function(s) { return this.encodeBytes(haxe.io.Bytes.ofString(s)).toString(); } ,decodeBytes: function(b) { var nbits = this.nbits; var base = this.base; if(this.tbl == null) this.initTable(); var tbl = this.tbl; var size = b.length * nbits >> 3; var out = haxe.io.Bytes.alloc(size); var buf = 0; var curbits = 0; var pin = 0; var pout = 0; while(pout < size) { while(curbits < 8) { curbits += nbits; buf <<= nbits; var i = tbl[b.b[pin++]]; if(i == -1) throw "BaseCode : invalid encoded char"; buf |= i; } curbits -= 8; out.b[pout++] = buf >> curbits & 255 & 255; } return out; } ,initTable: function() { var tbl = new Array(); var _g = 0; while(_g < 256) { var i = _g++; tbl[i] = -1; } var _g1 = 0, _g = this.base.length; while(_g1 < _g) { var i = _g1++; tbl[this.base.b[i]] = i; } this.tbl = tbl; } ,encodeBytes: function(b) { var nbits = this.nbits; var base = this.base; var size = b.length * 8 / nbits | 0; var out = haxe.io.Bytes.alloc(size + (b.length * 8 % nbits == 0?0:1)); var buf = 0; var curbits = 0; var mask = (1 << nbits) - 1; var pin = 0; var pout = 0; while(pout < size) { while(curbits < nbits) { curbits += 8; buf <<= 8; buf |= b.b[pin++]; } curbits -= nbits; out.b[pout++] = base.b[buf >> curbits & mask] & 255; } if(curbits > 0) out.b[pout++] = base.b[buf << nbits - curbits & mask] & 255; return out; } ,__class__: haxe.BaseCode } haxe.Http = function(url) { this.url = url; this.headers = new Hash(); this.params = new Hash(); this.async = true; }; haxe.Http.__name__ = true; haxe.Http.requestUrl = function(url) { var h = new haxe.Http(url); h.async = false; var r = null; h.onData = function(d) { r = d; }; h.onError = function(e) { throw e; }; h.request(false); return r; } haxe.Http.prototype = { onStatus: function(status) { } ,onError: function(msg) { } ,onData: function(data) { } ,request: function(post) { var me = this; var r = new js.XMLHttpRequest(); var onreadystatechange = function() { if(r.readyState != 4) return; var s = (function($this) { var $r; try { $r = r.status; } catch( e ) { $r = null; } return $r; }(this)); if(s == undefined) s = null; if(s != null) me.onStatus(s); if(s != null && s >= 200 && s < 400) me.onData(r.responseText); else switch(s) { case null: case undefined: me.onError("Failed to connect or resolve host"); break; case 12029: me.onError("Failed to connect to host"); break; case 12007: me.onError("Unknown host"); break; default: me.onError("Http Error #" + r.status); } }; if(this.async) r.onreadystatechange = onreadystatechange; var uri = this.postData; if(uri != null) post = true; else { var $it0 = this.params.keys(); while( $it0.hasNext() ) { var p = $it0.next(); if(uri == null) uri = ""; else uri += "&"; uri += StringTools.urlEncode(p) + "=" + StringTools.urlEncode(this.params.get(p)); } } try { if(post) r.open("POST",this.url,this.async); else if(uri != null) { var question = this.url.split("?").length <= 1; r.open("GET",this.url + (question?"?":"&") + uri,this.async); uri = null; } else r.open("GET",this.url,this.async); } catch( e ) { this.onError(e.toString()); return; } if(this.headers.get("Content-Type") == null && post && this.postData == null) r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); var $it1 = this.headers.keys(); while( $it1.hasNext() ) { var h = $it1.next(); r.setRequestHeader(h,this.headers.get(h)); } r.send(uri); if(!this.async) onreadystatechange(); } ,setPostData: function(data) { this.postData = data; } ,setParameter: function(param,value) { this.params.set(param,value); } ,setHeader: function(header,value) { this.headers.set(header,value); } ,__class__: haxe.Http } haxe.Log = function() { } haxe.Log.__name__ = true; haxe.Log.trace = function(v,infos) { js.Boot.__trace(v,infos); } haxe.Log.clear = function() { js.Boot.__clear_trace(); } haxe.Timer = function(time_ms) { var me = this; this.id = window.setInterval(function() { me.run(); },time_ms); }; haxe.Timer.__name__ = true; haxe.Timer.delay = function(f,time_ms) { var t = new haxe.Timer(time_ms); t.run = function() { t.stop(); f(); }; return t; } haxe.Timer.measure = function(f,pos) { var t0 = haxe.Timer.stamp(); var r = f(); haxe.Log.trace(haxe.Timer.stamp() - t0 + "s",pos); return r; } haxe.Timer.stamp = function() { return new Date().getTime() / 1000; } haxe.Timer.prototype = { run: function() { } ,stop: function() { if(this.id == null) return; window.clearInterval(this.id); this.id = null; } ,__class__: haxe.Timer } if(!haxe.io) haxe.io = {} haxe.io.Bytes = function(length,b) { this.length = length; this.b = b; }; haxe.io.Bytes.__name__ = true; haxe.io.Bytes.alloc = function(length) { var a = new Array(); var _g = 0; while(_g < length) { var i = _g++; a.push(0); } return new haxe.io.Bytes(length,a); } haxe.io.Bytes.ofString = function(s) { var a = new Array(); var _g1 = 0, _g = s.length; while(_g1 < _g) { var i = _g1++; var c = s.charCodeAt(i); if(c <= 127) a.push(c); else if(c <= 2047) { a.push(192 | c >> 6); a.push(128 | c & 63); } else if(c <= 65535) { a.push(224 | c >> 12); a.push(128 | c >> 6 & 63); a.push(128 | c & 63); } else { a.push(240 | c >> 18); a.push(128 | c >> 12 & 63); a.push(128 | c >> 6 & 63); a.push(128 | c & 63); } } return new haxe.io.Bytes(a.length,a); } haxe.io.Bytes.ofData = function(b) { return new haxe.io.Bytes(b.length,b); } haxe.io.Bytes.prototype = { getData: function() { return this.b; } ,toHex: function() { var s = new StringBuf(); var chars = []; var str = "0123456789abcdef"; var _g1 = 0, _g = str.length; while(_g1 < _g) { var i = _g1++; chars.push(HxOverrides.cca(str,i)); } var _g1 = 0, _g = this.length; while(_g1 < _g) { var i = _g1++; var c = this.b[i]; s.b += String.fromCharCode(chars[c >> 4]); s.b += String.fromCharCode(chars[c & 15]); } return s.b; } ,toString: function() { return this.readString(0,this.length); } ,readString: function(pos,len) { if(pos < 0 || len < 0 || pos + len > this.length) throw haxe.io.Error.OutsideBounds; var s = ""; var b = this.b; var fcc = String.fromCharCode; var i = pos; var max = pos + len; while(i < max) { var c = b[i++]; if(c < 128) { if(c == 0) break; s += fcc(c); } else if(c < 224) s += fcc((c & 63) << 6 | b[i++] & 127); else if(c < 240) { var c2 = b[i++]; s += fcc((c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127); } else { var c2 = b[i++]; var c3 = b[i++]; s += fcc((c & 15) << 18 | (c2 & 127) << 12 | c3 << 6 & 127 | b[i++] & 127); } } return s; } ,compare: function(other) { var b1 = this.b; var b2 = other.b; var len = this.length < other.length?this.length:other.length; var _g = 0; while(_g < len) { var i = _g++; if(b1[i] != b2[i]) return b1[i] - b2[i]; } return this.length - other.length; } ,sub: function(pos,len) { if(pos < 0 || len < 0 || pos + len > this.length) throw haxe.io.Error.OutsideBounds; return new haxe.io.Bytes(len,this.b.slice(pos,pos + len)); } ,blit: function(pos,src,srcpos,len) { if(pos < 0 || srcpos < 0 || len < 0 || pos + len > this.length || srcpos + len > src.length) throw haxe.io.Error.OutsideBounds; var b1 = this.b; var b2 = src.b; if(b1 == b2 && pos > srcpos) { var i = len; while(i > 0) { i--; b1[i + pos] = b2[i + srcpos]; } return; } var _g = 0; while(_g < len) { var i = _g++; b1[i + pos] = b2[i + srcpos]; } } ,set: function(pos,v) { this.b[pos] = v & 255; } ,get: function(pos) { return this.b[pos]; } ,__class__: haxe.io.Bytes } haxe.io.Error = { __ename__ : true, __constructs__ : ["Blocked","Overflow","OutsideBounds","Custom"] } haxe.io.Error.Blocked = ["Blocked",0]; haxe.io.Error.Blocked.toString = $estr; haxe.io.Error.Blocked.__enum__ = haxe.io.Error; haxe.io.Error.Overflow = ["Overflow",1]; haxe.io.Error.Overflow.toString = $estr; haxe.io.Error.Overflow.__enum__ = haxe.io.Error; haxe.io.Error.OutsideBounds = ["OutsideBounds",2]; haxe.io.Error.OutsideBounds.toString = $estr; haxe.io.Error.OutsideBounds.__enum__ = haxe.io.Error; haxe.io.Error.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe.io.Error; $x.toString = $estr; return $x; } if(!haxe.web) haxe.web = {} haxe.web.Request = function() { } haxe.web.Request.__name__ = true; haxe.web.Request.getParams = function() { var get = window.location.search.substr(1); var params = new Hash(); var _g = 0, _g1 = new EReg("[&;]","g").split(get); while(_g < _g1.length) { var p = _g1[_g]; ++_g; var pl = p.split("="); if(pl.length < 2) continue; var name = pl.shift(); params.set(StringTools.urlDecode(name),StringTools.urlDecode(pl.join("="))); } return params; } haxe.web.Request.getHostName = function() { return window.location.host; } haxe.web.Request.getURI = function() { return window.location.pathname; } if(!haxe.xml) haxe.xml = {} if(!haxe.xml._Fast) haxe.xml._Fast = {} haxe.xml._Fast.NodeAccess = function(x) { this.__x = x; }; haxe.xml._Fast.NodeAccess.__name__ = true; haxe.xml._Fast.NodeAccess.prototype = { resolve: function(name) { var x = this.__x.elementsNamed(name).next(); if(x == null) { var xname = this.__x.nodeType == Xml.Document?"Document":this.__x.getNodeName(); throw xname + " is missing element " + name; } return new haxe.xml.Fast(x); } ,__class__: haxe.xml._Fast.NodeAccess } haxe.xml._Fast.AttribAccess = function(x) { this.__x = x; }; haxe.xml._Fast.AttribAccess.__name__ = true; haxe.xml._Fast.AttribAccess.prototype = { resolve: function(name) { if(this.__x.nodeType == Xml.Document) throw "Cannot access document attribute " + name; var v = this.__x.get(name); if(v == null) throw this.__x.getNodeName() + " is missing attribute " + name; return v; } ,__class__: haxe.xml._Fast.AttribAccess } haxe.xml._Fast.HasAttribAccess = function(x) { this.__x = x; }; haxe.xml._Fast.HasAttribAccess.__name__ = true; haxe.xml._Fast.HasAttribAccess.prototype = { resolve: function(name) { if(this.__x.nodeType == Xml.Document) throw "Cannot access document attribute " + name; return this.__x.exists(name); } ,__class__: haxe.xml._Fast.HasAttribAccess } haxe.xml._Fast.HasNodeAccess = function(x) { this.__x = x; }; haxe.xml._Fast.HasNodeAccess.__name__ = true; haxe.xml._Fast.HasNodeAccess.prototype = { resolve: function(name) { return this.__x.elementsNamed(name).hasNext(); } ,__class__: haxe.xml._Fast.HasNodeAccess } haxe.xml._Fast.NodeListAccess = function(x) { this.__x = x; }; haxe.xml._Fast.NodeListAccess.__name__ = true; haxe.xml._Fast.NodeListAccess.prototype = { resolve: function(name) { var l = new List(); var $it0 = this.__x.elementsNamed(name); while( $it0.hasNext() ) { var x = $it0.next(); l.add(new haxe.xml.Fast(x)); } return l; } ,__class__: haxe.xml._Fast.NodeListAccess } haxe.xml.Fast = function(x) { if(x.nodeType != Xml.Document && x.nodeType != Xml.Element) throw "Invalid nodeType " + Std.string(x.nodeType); this.x = x; this.node = new haxe.xml._Fast.NodeAccess(x); this.nodes = new haxe.xml._Fast.NodeListAccess(x); this.att = new haxe.xml._Fast.AttribAccess(x); this.has = new haxe.xml._Fast.HasAttribAccess(x); this.hasNode = new haxe.xml._Fast.HasNodeAccess(x); }; haxe.xml.Fast.__name__ = true; haxe.xml.Fast.prototype = { getElements: function() { var it = this.x.elements(); return { hasNext : $bind(it,it.hasNext), next : function() { var x = it.next(); if(x == null) return null; return new haxe.xml.Fast(x); }}; } ,getInnerHTML: function() { var s = new StringBuf(); var $it0 = this.x.iterator(); while( $it0.hasNext() ) { var x = $it0.next(); s.b += Std.string(x.toString()); } return s.b; } ,getInnerData: function() { var it = this.x.iterator(); if(!it.hasNext()) throw this.getName() + " does not have data"; var v = it.next(); var n = it.next(); if(n != null) { if(v.nodeType == Xml.PCData && n.nodeType == Xml.CData && StringTools.trim(v.getNodeValue()) == "") { var n2 = it.next(); if(n2 == null || n2.nodeType == Xml.PCData && StringTools.trim(n2.getNodeValue()) == "" && it.next() == null) return n.getNodeValue(); } throw this.getName() + " does not only have data"; } if(v.nodeType != Xml.PCData && v.nodeType != Xml.CData) throw this.getName() + " does not have data"; return v.getNodeValue(); } ,getName: function() { return this.x.nodeType == Xml.Document?"Document":this.x.getNodeName(); } ,__class__: haxe.xml.Fast } haxe.xml.Parser = function() { } haxe.xml.Parser.__name__ = true; haxe.xml.Parser.parse = function(str) { var doc = Xml.createDocument(); haxe.xml.Parser.doParse(str,0,doc); return doc; } haxe.xml.Parser.doParse = function(str,p,parent) { if(p == null) p = 0; var xml = null; var state = 1; var next = 1; var aname = null; var start = 0; var nsubs = 0; var nbrackets = 0; var c = str.charCodeAt(p); while(!(c != c)) { switch(state) { case 0: switch(c) { case 10:case 13:case 9:case 32: break; default: state = next; continue; } break; case 1: switch(c) { case 60: state = 0; next = 2; break; default: start = p; state = 13; continue; } break; case 13: if(c == 60) { var child = Xml.createPCData(HxOverrides.substr(str,start,p - start)); parent.addChild(child); nsubs++; state = 0; next = 2; } break; case 17: if(c == 93 && str.charCodeAt(p + 1) == 93 && str.charCodeAt(p + 2) == 62) { var child = Xml.createCData(HxOverrides.substr(str,start,p - start)); parent.addChild(child); nsubs++; p += 2; state = 1; } break; case 2: switch(c) { case 33: if(str.charCodeAt(p + 1) == 91) { p += 2; if(HxOverrides.substr(str,p,6).toUpperCase() != "CDATA[") throw "Expected <![CDATA["; p += 5; state = 17; start = p + 1; } else if(str.charCodeAt(p + 1) == 68 || str.charCodeAt(p + 1) == 100) { if(HxOverrides.substr(str,p + 2,6).toUpperCase() != "OCTYPE") throw "Expected <!DOCTYPE"; p += 8; state = 16; start = p + 1; } else if(str.charCodeAt(p + 1) != 45 || str.charCodeAt(p + 2) != 45) throw "Expected <!--"; else { p += 2; state = 15; start = p + 1; } break; case 63: state = 14; start = p; break; case 47: if(parent == null) throw "Expected node name"; start = p + 1; state = 0; next = 10; break; default: state = 3; start = p; continue; } break; case 3: if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) { if(p == start) throw "Expected node name"; xml = Xml.createElement(HxOverrides.substr(str,start,p - start)); parent.addChild(xml); state = 0; next = 4; continue; } break; case 4: switch(c) { case 47: state = 11; nsubs++; break; case 62: state = 9; nsubs++; break; default: state = 5; start = p; continue; } break; case 5: if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) { var tmp; if(start == p) throw "Expected attribute name"; tmp = HxOverrides.substr(str,start,p - start); aname = tmp; if(xml.exists(aname)) throw "Duplicate attribute"; state = 0; next = 6; continue; } break; case 6: switch(c) { case 61: state = 0; next = 7; break; default: throw "Expected ="; } break; case 7: switch(c) { case 34:case 39: state = 8; start = p; break; default: throw "Expected \""; } break; case 8: if(c == str.charCodeAt(start)) { var val = HxOverrides.substr(str,start + 1,p - start - 1); xml.set(aname,val); state = 0; next = 4; } break; case 9: p = haxe.xml.Parser.doParse(str,p,xml); start = p; state = 1; break; case 11: switch(c) { case 62: state = 1; break; default: throw "Expected >"; } break; case 12: switch(c) { case 62: if(nsubs == 0) parent.addChild(Xml.createPCData("")); return p; default: throw "Expected >"; } break; case 10: if(!(c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45)) { if(start == p) throw "Expected node name"; var v = HxOverrides.substr(str,start,p - start); if(v != parent.getNodeName()) throw "Expected </" + parent.getNodeName() + ">"; state = 0; next = 12; continue; } break; case 15: if(c == 45 && str.charCodeAt(p + 1) == 45 && str.charCodeAt(p + 2) == 62) { parent.addChild(Xml.createComment(HxOverrides.substr(str,start,p - start))); p += 2; state = 1; } break; case 16: if(c == 91) nbrackets++; else if(c == 93) nbrackets--; else if(c == 62 && nbrackets == 0) { parent.addChild(Xml.createDocType(HxOverrides.substr(str,start,p - start))); state = 1; } break; case 14: if(c == 63 && str.charCodeAt(p + 1) == 62) { p++; var str1 = HxOverrides.substr(str,start + 1,p - start - 2); parent.addChild(Xml.createProlog(str1)); state = 1; } break; } c = str.charCodeAt(++p); } if(state == 1) { start = p; state = 13; } if(state == 13) { if(p != start || nsubs == 0) parent.addChild(Xml.createPCData(HxOverrides.substr(str,start,p - start))); return p; } throw "Unexpected end"; } haxe.xml.Parser.isValidChar = function(c) { return c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c == 58 || c == 46 || c == 95 || c == 45; } var js = js || {} js.Boot = function() { } js.Boot.__name__ = true; js.Boot.__unhtml = function(s) { return s.split("&").join("&").split("<").join("<").split(">").join(">"); } js.Boot.__trace = function(v,i) { var msg = i != null?i.fileName + ":" + i.lineNumber + ": ":""; msg += js.Boot.__string_rec(v,""); var d; if(typeof(document) != "undefined" && (d = document.getElementById("haxe:trace")) != null) d.innerHTML += js.Boot.__unhtml(msg) + "<br/>"; else if(typeof(console) != "undefined" && console.log != null) console.log(msg); } js.Boot.__clear_trace = function() { var d = document.getElementById("haxe:trace"); if(d != null) d.innerHTML = ""; } js.Boot.isClass = function(o) { return o.__name__; } js.Boot.isEnum = function(e) { return e.__ename__; } js.Boot.getClass = function(o) { return o.__class__; } js.Boot.__string_rec = function(o,s) { if(o == null) return "null"; if(s.length >= 5) return "<...>"; var t = typeof(o); if(t == "function" && (o.__name__ || o.__ename__)) t = "object"; switch(t) { case "object": if(o instanceof Array) { if(o.__enum__) { if(o.length == 2) return o[0]; var str = o[0] + "("; s += "\t"; var _g1 = 2, _g = o.length; while(_g1 < _g) { var i = _g1++; if(i != 2) str += "," + js.Boot.__string_rec(o[i],s); else str += js.Boot.__string_rec(o[i],s); } return str + ")"; } var l = o.length; var i; var str = "["; s += "\t"; var _g = 0; while(_g < l) { var i1 = _g++; str += (i1 > 0?",":"") + js.Boot.__string_rec(o[i1],s); } str += "]"; return str; } var tostr; try { tostr = o.toString; } catch( e ) { return "???"; } if(tostr != null && tostr != Object.toString) { var s2 = o.toString(); if(s2 != "[object Object]") return s2; } var k = null; var str = "{\n"; s += "\t"; var hasp = o.hasOwnProperty != null; for( var k in o ) { ; if(hasp && !o.hasOwnProperty(k)) { continue; } if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") { continue; } if(str.length != 2) str += ", \n"; str += s + k + " : " + js.Boot.__string_rec(o[k],s); } s = s.substring(1); str += "\n" + s + "}"; return str; case "function": return "<function>"; case "string": return o; default: return String(o); } } js.Boot.__interfLoop = function(cc,cl) { if(cc == null) return false; if(cc == cl) return true; var intf = cc.__interfaces__; if(intf != null) { var _g1 = 0, _g = intf.length; while(_g1 < _g) { var i = _g1++; var i1 = intf[i]; if(i1 == cl || js.Boot.__interfLoop(i1,cl)) return true; } } return js.Boot.__interfLoop(cc.__super__,cl); } js.Boot.__instanceof = function(o,cl) { try { if(o instanceof cl) { if(cl == Array) return o.__enum__ == null; return true; } if(js.Boot.__interfLoop(o.__class__,cl)) return true; } catch( e ) { if(cl == null) return false; } switch(cl) { case Int: return Math.ceil(o%2147483648.0) === o; case Float: return typeof(o) == "number"; case Bool: return o === true || o === false; case String: return typeof(o) == "string"; case Dynamic: return true; default: if(o == null) return false; if(cl == Class && o.__name__ != null) return true; else null; if(cl == Enum && o.__ename__ != null) return true; else null; return o.__enum__ == cl; } } js.Boot.__cast = function(o,t) { if(js.Boot.__instanceof(o,t)) return o; else throw "Cannot cast " + Std.string(o) + " to " + Std.string(t); } js.Lib = function() { } js.Lib.__name__ = true; js.Lib.debug = function() { debugger; } js.Lib.alert = function(v) { alert(js.Boot.__string_rec(v,"")); } js.Lib.eval = function(code) { return eval(code); } js.Lib.setErrorHandler = function(f) { js.Lib.onerror = f; } var orc = orc || {} if(!orc.utils) orc.utils = {} orc.utils.DrawHelper = function() { } orc.utils.DrawHelper.__name__ = true; orc.utils.DrawHelper.createFillStyle = function(cssStyleColor,alpha) { cssStyleColor = StringTools.replace(cssStyleColor,"0x",""); cssStyleColor = StringTools.replace(cssStyleColor,"0X",""); cssStyleColor = StringTools.replace(cssStyleColor,"#",""); if(cssStyleColor.length == 6) { var r = Std.string(Std.parseInt("0x" + HxOverrides.substr(cssStyleColor,0,2))); var g = Std.string(Std.parseInt("0x" + HxOverrides.substr(cssStyleColor,2,2))); var b = Std.string(Std.parseInt("0x" + HxOverrides.substr(cssStyleColor,4,2))); return "rgba(" + r + "," + g + "," + b + "," + Std.string(alpha) + ")"; } return ""; } orc.utils.ImageMetricHelper = function(imgWidth,imgHeight) { this.width = imgWidth; this.height = imgHeight; this.diagonalLineTheta = Math.atan2(this.width,this.height); this.diagonalLineLength = Math.sqrt(this.width * this.width + this.height * this.height); }; orc.utils.ImageMetricHelper.__name__ = true; orc.utils.ImageMetricHelper.prototype = { getMaxFitScale: function(width,height,rotation) { if(rotation == null) rotation = 0; var scaleX; var scaleY; if(rotation == 0 || rotation == 180) { scaleX = width / this.width; scaleY = height / this.height; } else { var r = Math.PI * rotation / 180; var t0 = this.diagonalLineTheta + r; var w0 = Math.abs(this.diagonalLineLength * Math.sin(t0)); var h0 = Math.abs(this.diagonalLineLength * Math.cos(t0)); var t1 = -this.diagonalLineTheta + r; var w1 = Math.abs(this.diagonalLineLength * Math.sin(t1)); var h1 = Math.abs(this.diagonalLineLength * Math.cos(t1)); var w = Math.max(w0,w1); var h = Math.max(h0,h1); scaleX = width / w; scaleY = height / h; } return Math.min(scaleX,scaleY); } ,__class__: orc.utils.ImageMetricHelper } orc.utils.UrlParam = function() { }; orc.utils.UrlParam.__name__ = true; orc.utils.UrlParam.prototype = { __class__: orc.utils.UrlParam } orc.utils.Util = function() { } orc.utils.Util.__name__ = true; orc.utils.Util.request = function(url,call,onError) { var http = new haxe.Http(url); http.onData = call; http.onError = function(e) { if(onError != null) onError(); }; http.request(false); } orc.utils.Util.getUrlParam = function(key) { var params = orc.utils.Util.getUrlParams(); var _g = 0; while(_g < params.length) { var param = params[_g]; ++_g; var p = param; if(p.key == key) return p.value; } return ""; } orc.utils.Util.getUrlParams = function() { var url = js.Lib.window.location.href; var results = new Array(); var index = url.indexOf("?"); if(index > 0) { var params = HxOverrides.substr(url,index + 1,null); var lines = params.split("&"); var _g = 0; while(_g < lines.length) { var line = lines[_g]; ++_g; var terms = line.split("="); if(terms.length == 2) { var val = new orc.utils.UrlParam(); val.key = terms[0]; val.value = terms[1]; results.push(val); } } } return results; } orc.utils.Util.getXmlChilds = function(xml) { var i = xml.elements(); var list = new Array(); while(i.hasNext() == true) { var node = i.next(); list.push(node); } return list; } orc.utils.Util.searchPos = function(txt,keyword) { var list = []; var index = -1; while(true) { var from = 0; if(index != -1) { from = index + keyword.length; if(from < 0) from = 0; } index = txt.indexOf(keyword,from); if(index > -1 && index + keyword.length <= txt.length) list.push(index); else break; } return list; } orc.utils.Util.createSearchResults = function(txt,keyword,posList,page) { var results = []; var maxChars = 50; var coloredWord = "<font color='#FF0000'>" + keyword + "</font>"; var _g1 = 0, _g = posList.length; while(_g1 < _g) { var i = _g1++; var index = posList[i]; var r = new core.SearchResult("",page); var offset = index; if(txt.length < maxChars) r.content = txt; else { var from = index - Math.max(0,maxChars - keyword.length) / 2 | 0; if(from < 0) from = 0; r.content = HxOverrides.substr(txt,from,maxChars); offset = index - from; if(from + maxChars < txt.length) r.content += " ..."; if(from > 0) { r.content = "... " + r.content; offset += 4; } } r.content = HxOverrides.substr(r.content,0,offset) + "<font color='#FF0000'>" + HxOverrides.substr(r.content,offset,keyword.length) + "</font>" + HxOverrides.substr(r.content,offset + keyword.length,null); results.push(r); } return results; } var $_; function $bind(o,m) { var f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; return f; }; if(Array.prototype.indexOf) HxOverrides.remove = function(a,o) { var i = a.indexOf(o); if(i == -1) return false; a.splice(i,1); return true; }; else null; Math.__name__ = ["Math"]; Math.NaN = Number.NaN; Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Math.isFinite = function(i) { return isFinite(i); }; Math.isNaN = function(i) { return isNaN(i); }; String.prototype.__class__ = String; String.__name__ = true; Array.prototype.__class__ = Array; Array.__name__ = true; Date.prototype.__class__ = Date; Date.__name__ = ["Date"]; var Int = { __name__ : ["Int"]}; var Dynamic = { __name__ : ["Dynamic"]}; var Float = Number; Float.__name__ = ["Float"]; var Bool = Boolean; Bool.__ename__ = ["Bool"]; var Class = { __name__ : ["Class"]}; var Enum = { }; var Void = { __ename__ : ["Void"]}; Xml.Element = "element"; Xml.PCData = "pcdata"; Xml.CData = "cdata"; Xml.Comment = "comment"; Xml.DocType = "doctype"; Xml.Prolog = "prolog"; Xml.Document = "document"; if(typeof document != "undefined") js.Lib.document = document; if(typeof window != "undefined") { js.Lib.window = window; js.Lib.window.onerror = function(msg,url,line) { var f = js.Lib.onerror; if(f == null) return false; return f(msg,[url + ":" + line]); }; } js.XMLHttpRequest = window.XMLHttpRequest?XMLHttpRequest:window.ActiveXObject?function() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch( e ) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch( e1 ) { throw "Unable to create XMLHttpRequest object."; } } }:(function($this) { var $r; throw "Unable to create XMLHttpRequest object."; return $r; }(this)); L.instance = new Hash(); RunTime.useGoogleUaAsLogViewer = true; RunTime.urlIndex = "html5forwebkit.html"; RunTime.urlZoom = "zoom.html"; RunTime.urlRoot = ""; RunTime.urlBookinfo = RunTime.urlRoot + "data/bookinfo.xml"; RunTime.urlPageInfo = RunTime.urlRoot + "data/pages.xml"; RunTime.urlHotlinks = RunTime.urlRoot + "data/hotlinks.xml"; RunTime.urlHotlinks2 = RunTime.urlRoot + "data/texts.xml"; RunTime.urlContents = RunTime.urlRoot + "data/contents.xml"; RunTime.urlSearch = RunTime.urlRoot + "data/search.xml"; RunTime.urlVideos = RunTime.urlRoot + "data/videos.xml"; RunTime.urlButtons = RunTime.urlRoot + "data/buttons.xml"; RunTime.urlAudios = RunTime.urlRoot + "data/sounds.xml"; RunTime.urlBookmarks = RunTime.urlRoot + "data/bookmarks.xml"; RunTime.urlLang = RunTime.urlRoot + "data/languages/languages.xml"; RunTime.urlSlideshow = RunTime.urlRoot + "data/slideshow.xml"; RunTime.urlShareInfo = RunTime.urlRoot + "data/share.xml"; RunTime.urlAbout = RunTime.urlRoot + "data/copyright.xml"; RunTime.searchHtmlCache = ""; RunTime.inputHtmlCache = ""; RunTime.languages = new Array(); RunTime.book = new core.Book(); RunTime.singlePage = false; RunTime.bookTop = 0; RunTime.bookBottom = 0; RunTime.bookLeft = 0; RunTime.bookRight = 0; RunTime.pcode = ""; RunTime.bottomBarAlpha = 0.6; RunTime.bottomBarHeight = 40; RunTime.autoflipButtonUnselectedAlpha = 0.5; RunTime.doubleClickIntervalMs = 300; RunTime.doubleZoomIntervalMs = 1000; RunTime.highLights = new Array(); RunTime.notes = new Array(); RunTime.bLocked = true; RunTime.allLoadImage = 0; RunTime.allCurrentImage = 0; RunTime.kvPrex = ""; RunTime.key = ""; Zoom.imgSrc = ""; Zoom.pageNum = ""; Zoom.bookId = ""; Zoom.analyticsUA = ""; Zoom.bookTitle = ""; Zoom.bbv = ""; Zoom.pcode = ""; Zoom.hotlinks = []; Zoom.videos = []; Zoom.buttons = []; Zoom.xOffset = 0; Zoom.yOffset = 0; Zoom.popupXOffset = 0; Zoom.popupYOffset = 0; Main.main();