﻿
ShowPubMediator=function(pubID)
{var SEARCH_RESULT_COUNT=5;var me=this;var fPubID=pubID;var fSearchResult=null;var fNoSubmit=false;var trim=function(s)
{var l=0;var r=s.length-1;while(l<s.length&&s.charAt(l)==' ')
{l++;}
while(r>l&&s.charAt(r)==' ')
{r-=1;}
return s.substring(l,r+1);}
var ShowResultPanel=function()
{me.fSearchResultPanel.style.display="block";}
var HideResultPanel=function()
{me.fSearchResultPanel.style.display="none";}
var ShowResultContent=function()
{me.fSearchResultContainer.style.display="block";}
var HideResultContent=function()
{me.fSearchResultContainer.style.display="none";}
var ShowProgressPanel=function()
{me.fSearchProgressPanel.style.display="block";}
var HideProgressPanel=function()
{me.fSearchProgressPanel.style.display="none";}
var RenderSearchResult=function()
{if(!fSearchResult)
{return;}
var resultListHtml;if(fSearchResult.length==0)
{resultListHtml='<center>The specified text was not found.</center>';me.fSearchResultContainer.innerHTML=resultListHtml;return;}
var pagePosition=0;var currentPage=me.fPageController.fCurrentPage;for(var index=0,len=fSearchResult.length;index<len;++index)
{if(fSearchResult[index]>=currentPage)
{pagePosition=index;break;}
if(index==(len-1))
{pagePosition=len;}}
var backCount=Math.floor(SEARCH_RESULT_COUNT/2);var foreCount=SEARCH_RESULT_COUNT-backCount;if(backCount>pagePosition)
{foreCount+=(backCount-pagePosition);backCount=pagePosition;}
var startPosition=pagePosition-backCount;var endPosition=pagePosition+foreCount-1;if(endPosition>=fSearchResult.length)
{var resultFirstIndex=0;var resultLastIndex=fSearchResult.length-1;var startPositionDelta=startPosition-resultFirstIndex;var endPositionDelta=endPosition-resultLastIndex;endPosition=resultLastIndex;startPosition-=startPositionDelta<endPositionDelta?startPositionDelta:endPositionDelta;}
resultListHtml='<table>';if(startPosition>0)
{resultListHtml+='<tr>';resultListHtml+='<td><img src="/img/viewer/bullet_zoom_down.gif" style="position: relative; bottom: 2px;" /></td>';resultListHtml+='<td class="item_catalog_member" colspan="2">.....</td>';resultListHtml+='</tr>';}
for(var index=startPosition;index<=endPosition;++index)
{var pageNum=fSearchResult[index];resultListHtml+='<tr>';resultListHtml+='<td><img src="/img/viewer/bullet_zoom.gif" style="position: relative; bottom: 2px;" /></td>';resultListHtml+='<td class="item_catalog_member"><a href="javascript: theMediator.GoToSearchResultPage('+pageNum+')" >page '+pageNum+'</a></td>';resultListHtml+='<td>&nbsp;</td>';resultListHtml+='</tr>';}
if(endPosition<(fSearchResult.length-1))
{resultListHtml+='<tr>';resultListHtml+='<td><img src="/img/viewer/bullet_zoom_up.gif" style="position: relative; bottom: 2px;" /></td>';resultListHtml+='<td class="item_catalog_member" colspan="2">.....</td>';resultListHtml+='</tr>';}
resultListHtml+='</table>';me.fSearchResultContainer.innerHTML=resultListHtml;}
var LoadSearchResult=function(searchPhrase)
{var url="/viewer/search.res?resid="+fPubID+"&search="+Url.encode(searchPhrase);new Ajax.Request(url,{method:'get',onCreate:function(){HideResultContent();ShowResultPanel();ShowProgressPanel();},onSuccess:function(transport){fSearchResult=eval(transport.responseText);RenderSearchResult();HideProgressPanel();ShowResultContent();},onFailure:function(transport){fSearchResult=[];RenderSearchResult();HideProgressPanel();ShowResultContent();}});}
var UpdateSelectPage=function(pageNumber)
{if(me.fPageNumTextBox)
{me.fPageNumTextBox.innerHTML=pageNumber;}
for(var it in me.fPageController.Bookmarks)
{var aBookmark=me.fPageController.Bookmarks[it];if(!aBookmark||!aBookmark.gid)
{continue;}
var bookmarkDiv=document.getElementById("bookmark_"+aBookmark.gid);if(!bookmarkDiv)
{continue;}
if(aBookmark.ic)
{treeUnselect(bookmarkDiv.parentNode);continue;}
var docStartPage=parseInt(aBookmark.sp);var docEndPage=docStartPage+parseInt(aBookmark.pc)-1;if(docStartPage<=pageNumber&&pageNumber<=docEndPage)
{treeSelect(bookmarkDiv.parentNode);if(aBookmark.rgid)
{var chapterBookmarkDiv=document.getElementById("bookmark_"+aBookmark.rgid);if(chapterBookmarkDiv)
{treeSelect(chapterBookmarkDiv.parentNode);}}}
else
{treeUnselect(bookmarkDiv.parentNode);}}}
var ReleaseSearchResult=function()
{fSearchResult=null;HideResultPanel();}
var OnPanelButtonMouseOver=function()
{addClass(this,"focused");}
var OnPanelButtonMouseOut=function()
{removeClass(this,"focused");}
var AutoInitPanelButton=function()
{var candidates=document.getElementsByTagName('div');for(var i=0;i<candidates.length;i++){if(candidates[i].className&&candidates[i].className.indexOf('panel_button')!=-1){candidates[i].onmouseover=OnPanelButtonMouseOver;candidates[i].onmouseout=OnPanelButtonMouseOut;}}}
this.Init=function(pagesCount,cacheSize)
{AutoInitPanelButton();var closeSideBarButton=document.getElementById("CloseSideBarButton");closeSideBarButton.onclick=this.OnCloseSideBarClick;var openSideBarButton=document.getElementById("OpenSideBarButton");openSideBarButton.onclick=this.OnOpenSideBarClick;var searchButton=document.getElementById("SearchButton");this.fSearchInput=document.getElementById("SearchInput");var pageContainer=document.getElementById("PageContainer");var scrollDiv=document.getElementById("ScrollDiv");this.fLoginArea=document.getElementById("LoginArea");this.fMainArea=document.getElementById("MainArea");this.fViewArea=document.getElementById("ViewArea");this.fViewToolBar=document.getElementById("ViewToolBar");this.fPageArea=document.getElementById("PageArea");this.fPageView=document.getElementById("PageView");this.fSideBarArea=document.getElementById("SideBarArea");this.fSideToolBar=document.getElementById("SideToolBar");this.fOpenSideBar=document.getElementById("OpenSideBar");this.fClosedSideBar=document.getElementById("ClosedSideBar");this.fSearchResultPanel=document.getElementById("SearchResultPanel");this.fSearchResultContainer=document.getElementById("SearchResultContainer");this.fSearchProgressPanel=document.getElementById("ProgressPanel");this.fPageNumTextBox=document.getElementById("PageNumTextBox");this.fPageController=new PageController(pageContainer,pagesCount,cacheSize);this.fScrollLayout=new ScrollLayout(this.fPageController,this.fPageView,scrollDiv);this.fPageController.SetPageChangedListener(this);this.fPageController.Init(this.fScrollLayout);this.fIsSideBarOpen=true;window.onresize=this.Resize;}
this.InitialLoad=function()
{me.fPageController.SetDefaultPage();}
this.Resize=function()
{var aWindowSize=me.GetWindowSize();var toolBarHeight=31;var openSideBarWidth=265;var closedSideBarWidth=15;var mainAreaHeight=aWindowSize.fHeight-me.fLoginArea.clientHeight;var mainAreaWidth=aWindowSize.fWidth;me.fMainArea.style.width=mainAreaWidth+"px";me.fMainArea.style.height=mainAreaHeight+"px";var sideBarWidth=0;var aSideBar=null;if(me.fIsSideBarOpen)
{sideBarWidth=openSideBarWidth;aSideBar=me.fOpenSideBar;me.fOpenSideBar.style.display="block";me.fClosedSideBar.style.display="none";}
else
{sideBarWidth=closedSideBarWidth;aSideBar=me.fClosedSideBar;me.fClosedSideBar.style.display="block";me.fOpenSideBar.style.display="none";}
var viewAreaWidth=mainAreaWidth-sideBarWidth;if(viewAreaWidth<0)
{viewAreaWidth=0;}
if(mainAreaHeight<0)
{mainAreaHeight=0;}
me.fViewToolBar.style.width=viewAreaWidth+"px";me.fViewToolBar.style.height=toolBarHeight+"px";var viewHeight=mainAreaHeight-toolBarHeight;if(viewHeight<0)
{viewHeight=0;}
me.fPageView.style.width=viewAreaWidth+"px";me.fPageView.style.height=(mainAreaHeight-toolBarHeight)+"px";me.fSideToolBar.style.width=sideBarWidth+"px";me.fSideToolBar.style.height=toolBarHeight+"px";aSideBar.style.width=sideBarWidth+"px";aSideBar.style.height=(mainAreaHeight-toolBarHeight)+"px";if(me.fPageController.fCurrentPage!=undefined)
{me.fPageController.RefreshLayout();}}
this.GetWindowSize=function()
{var myWidth=0,myHeight=0;if(typeof(window.innerWidth)=='number'){myWidth=window.innerWidth;myHeight=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){myWidth=document.documentElement.clientWidth;myHeight=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){myWidth=document.body.clientWidth;myHeight=document.body.clientHeight;}
return{fWidth:myWidth,fHeight:myHeight}}
this.GoToPage=function(pageNum)
{if(pageNum<=0)
return;if(this.fPageController.HasSearch())
{this.fPageController.ClearSearch();ReleaseSearchResult();}
this.fPageController.fLayout.Page(pageNum);}
this.GoToSearchResultPage=function(pageNum)
{this.fPageController.fLayout.Page(pageNum);}
this.OnPrintClick=function(pubID,docIds,accesskey)
{var url='downloadpub.aspx?vpubid='+pubID+'&docs='+docIds;if(accesskey.length>0)
url=url+'&accesskey='+accesskey;window.open(url);}
this.OnPrevClick=function()
{me.fPageController.fLayout.Prev();}
this.OnNextClick=function()
{me.fPageController.fLayout.Next();}
this.OnZoomInClick=function()
{me.fPageController.fLayout.ZoomIn();;}
this.OnZoomOutClick=function()
{me.fPageController.fLayout.ZoomOut();;}
this.OnSearchClick=function()
{var searchText=trim(me.fSearchInput.value);if(searchText.length>0)
{me.fPageController.SetSearch(searchText);LoadSearchResult(searchText);}}
this.OnCloseSideBarClick=function()
{me.fIsSideBarOpen=false;me.Resize();}
this.OnOpenSideBarClick=function()
{me.fIsSideBarOpen=true;me.Resize();}
this.OnButtonOn=function(imgId,imgName)
{if(document.images)
{var anImageSrc="/img/viewer/"+imgName+"_r.gif";document.getElementById(imgId).src=anImageSrc;}}
this.OnButtonOff=function(imgId,imgName)
{if(document.images)
{var anImageSrc="/img/viewer/"+imgName+".gif";document.getElementById(imgId).src=anImageSrc;}}
this.OnSearchTextKeyPress=function(e)
{if(window.event)
{if(window.event.keyCode==13)
{fNoSubmit=true;this.OnSearchClick();}}
else if(e.which)
{if(e.which==13)
{fNoSubmit=true;this.OnSearchClick();}}
return true;}
this.OnFormSubmit=function()
{var result=!fNoSubmit;fNoSubmit=false;return result;}
this.OnPageChanged=function(pageNum)
{UpdateSelectPage(pageNum);RenderSearchResult();}}