/***
Code to support http://markmail.org.
Copyright 2007-2009 Mark Logic Corporation.  All Rights Reserved.
Version: 1267492188
***/

var AttachmentViewer=function(){var overflowHidden=false;var thumbsLeftArrow=MochiKit.DOM.IMG({src:"/images/left_arrow.gif"});var thumbsRightArrow=MochiKit.DOM.IMG({src:"/images/right_arrow.gif"});var maxWindowWidth=700;var maxWindowHeight=627;var actualWindowHeight=maxWindowHeight;var headerHeight=0;var thumbDrawerHeight=120;var attachmentNumber=1;var pageNumber=1;var canZoom=false;var zoomed=true;var opened=false;var dims=[];var thumbs=[];var mode="image";var data=null;this.position=function(){var windowDims=MochiKit.Style.getViewportDimensions();var left=Math.floor((windowDims.w-maxWindowWidth)/2);if(windowDims.h<maxWindowHeight+40){actualWindowHeight=windowDims.h-40;}
else{actualWindowHeight=maxWindowHeight;}
var top=Math.floor((windowDims.h-actualWindowHeight)/2);container.style.top=top+"px";container.style.left=left+"px";var type="document";if(data){type=data.attachment.type;}
adjustContentHeight(type);if(opened&&(type==="document"||type==="image")){scaleImage(image,dims.width,dims.height,maxWindowWidth-60,getUsableImageHeight());}};this.show=function(id,number,page){mm.logger.logEvent("attachment","view",id+"/"+number,{"q":mm.url.q});messageId=id;attachmentNumber=number;pageNumber=parseInt(page,10);modeLabel.innerHTML="View Text";text.innerHTML="";data=null;var cells=MochiKit.DOM.getElementsByTagAndClassName("td",null,"thumbs");for(var i=1;i<cells.length-1;i+=1){thumbs[i-1]=new Thumbnail(i-1);MochiKit.DOM.swapDOM(cells[i],thumbs[i-1].cell);}
mm.layer.push(this);showLoading();this.position();container.style.display="block";opened=true;headerHeight=MochiKit.Style.getElementDimensions("controls").h;var req=MochiKit.Async.loadJSONDoc("/attachment.xqy",{"id":messageId,"number":attachmentNumber,"q":mm.url.q,"mode":"json"});req.addCallback(function(json){var src="/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page="+pageNumber;setData(json,src);_gaq.push(['_trackPageview',"/attachment/"+messageId+"/"+attachmentNumber]);});req.addErrback(function(obj){MochiKit.Logging.log(obj);});};var setData=function(json,src){data=json;data.attachment.number_of_pages=parseInt(data.attachment.number_of_pages,10);var printableFileString=data.attachment.name;if(printableFileString.length>50){printableFileString=printableFileString.substring(0,40)+"..."+printableFileString.substring(printableFileString.length-10);}
filename.innerHTML="<a href=\"/download.xqy?id="+messageId+"&number="+attachmentNumber+"\">"+MochiKit.DOM.escapeHTML(printableFileString)+"</a>";adjustContentHeight(data.attachment.type);if(data.attachment.type==="text"){viewText();showArrows();text.style.whiteSpace="pre";text.style.fontFamily="Courier, monospace";MochiKit.DOM.getElement("thumbs").style.display="none";}
else{if(data.attachment.type==="image"){MochiKit.DOM.getElement("thumbs").style.display="none";}
else if(data.attachment.type==="document"){MochiKit.DOM.getElement("thumbs").style.display="";}
text.style.whiteSpace="normal";text.style.fontFamily="Arial, Helvetica, \"Luxi Sans\", sans-serif";if(data.attachment.pages&&data.attachment.pages.page[pageNumber-1].content!==""){modeLabel.style.display="block";}
else{modeLabel.style.display="none";}
viewImage();showThumbs();showArrows();}};var adjustContentHeight=function(type){if(type==="text"||type==="image"){text.style.height=(actualWindowHeight-headerHeight)+"px";MochiKit.DOM.getElement("attachimg").style.height=(actualWindowHeight-headerHeight)+"px";}
else if(type==="document"){text.style.height=(actualWindowHeight-headerHeight-thumbDrawerHeight)+"px";MochiKit.DOM.getElement("attachimg").style.height=(actualWindowHeight-headerHeight-thumbDrawerHeight)+"px";}};this.hide=function(){mm.layer.pop();container.style.display="none";zoomLabel.style.display="none";opened=false;};this.jumpToPage=function(viewPage){if(viewPage>=1&&viewPage<=data.attachment.number_of_pages){pageNumber=parseInt(viewPage,10);displayPage("/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page="+pageNumber);showArrows();}};this.previousPage=function(){if(pageNumber>1){pageNumber-=1;var base="/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page=";displayPage(base+pageNumber);showThumbs();showArrows();if(pageNumber>1){cacheImage(base+(pageNumber-1));}}};this.nextPage=function(){if(pageNumber<data.attachment.number_of_pages){pageNumber+=1;var base="/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page=";displayPage(base+pageNumber);showThumbs();showArrows();if(pageNumber<data.attachment.number_of_pages){cacheImage(base+(pageNumber+1));}}};this.isZoomed=function(){return zoomed;};this.isOpen=function(){return opened;};this.scroll=function(amount){amount=Math.ceil(amount*5);var top=parseInt(image.style.top.replace(/px/,""),10)+amount;if(!top){top=amount;}
if(top<0&&top>0-image.height+getUsableImageHeight()){MochiKit.Visual.Move(image,{y:amount,duration:0.001});}};var zoomIn=function(){if(mode==="image"){zoomed=true;image.height=dims.height;image.width=dims.width;zoomLabel.innerHTML="Zoom Out";}};var zoomOut=function(){if(mode==="image"){zoomed=false;scaleImage(image,dims.width,dims.height,maxWindowWidth-60,getUsableImageHeight());zoomLabel.innerHTML="Zoom In";image.style.top="0px";}};var viewText=function(){if(data.attachment.type==="text"||data.attachment.type==="document"){mode="text";displayPage("/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page="+pageNumber);modeLabel.innerHTML="View Image";}};var viewImage=function(){if(data.attachment.type==="image"||data.attachment.type==="document"){mode="image";displayPage("/fetchimage.xqy?type=large&id="+messageId+"&number="+attachmentNumber+"&page="+pageNumber);modeLabel.innerHTML="View Text";}};var previousThumbsPage=function(){if(thumbs[0].getPage()===1){return;}
var start=thumbs[0].getPage()-6;if(start<1){start=1;}
var base="/fetchimage.xqy?id="+messageId+"&number="+attachmentNumber+"&page=";for(i=0;i<6;i+=1){var page=start+i;thumbs[i].set(base+page,page);}
highlightCurrentThumb(pageNumber);highlightMatchingThumbs();showArrows();};var nextThumbsPage=function(){if(thumbs[5].getPage()===data.attachment.number_of_pages){return;}
var start=thumbs[5].getPage()+1;if(start>data.attachment.number_of_pages-6){start=data.attachment.number_of_pages-5;}
var base="/fetchimage.xqy?id="+messageId+"&number="+attachmentNumber+"&page=";for(i=0;i<6;i+=1){var page=start+i;thumbs[i].set(base+page,page);}
highlightCurrentThumb(pageNumber);highlightMatchingThumbs();showArrows();};var highlightCurrentThumb=function(page){if(data.attachment.type==="document"){for(i=0;i<6;i+=1){if(thumbs[i].getPage()===parseInt(page,10)){thumbs[i].select();}
else{thumbs[i].deselect();}}}};var highlightMatchingThumbs=function(){if(data.attachment.type==="document"){for(i=0;i<6;i+=1){var page=data.attachment.pages.page[thumbs[i].getPage()-1];if(page&&page.matches==="true"){thumbs[i].isHit();}
else{thumbs[i].noHit();}}}};var getUsableImageHeight=function(){if(data){type=data.attachment.type;}
else{type="document";}
var usableImageHeight=actualWindowHeight-headerHeight;if(type==="document"){usableImageHeight-=thumbDrawerHeight;}
return usableImageHeight;};var displayPage=function(src){if(mode==="image"){showLoading();}
var getPage=MochiKit.Base.parseQueryString(src).page;highlightCurrentThumb(getPage);highlightMatchingThumbs();if(mode==="image"){text.style.display="none";image.parentNode.style.display="block";setImage(image,src,function(){MochiKit.DragAndDrop.Draggable(image,{starteffect:function(){},endeffect:function(){},snap:function(x,y){var uih=getUsableImageHeight();if(zoomed===false){return[0,0];}
if(y>0){return[0,0];}
if(y<0-image.height+uih){return[0,0-image.height+uih];}
return[0,y];}});if(zoomed){zoomIn();}
if(canZoom){zoomLabel.style.display="block";}});}
else{image.parentNode.style.display="none";var content=data.attachment.pages.page[getPage-1].content;if(typeof(ActiveXObject)==="function"){var doc=new ActiveXObject("MSXML2.DOMDocument");doc.preserveWhiteSpace=true;doc.loadXML(content);var html=htmlAlize(doc.firstChild);MochiKit.DOM.replaceChildNodes(text,html);}
else{text.innerHTML=content;}
text.style.display="block";}};var scaleImage=function(toScale,curWidth,curHeight,maxWidth,maxHeight){var scale;var hScale;var wScale;if(curHeight>maxHeight){hScale=maxHeight/curHeight;}
if(curWidth>maxWidth){wScale=maxWidth/curWidth;}
if(hScale>wScale){scale=wScale;}
else{scale=hScale;}
if(scale<1){canZoom=true;}
else{canZoom=false;}
if(zoomed){return false;}
if(scale<1){toScale.height=Math.floor(curHeight*scale);toScale.width=Math.floor(curWidth*scale);zoomed=false;zoomLabel.innerHTML="Zoom In";image.style.top="0px";zoomLabel.style.display="block";}
else{toScale.height=curHeight;toScale.width=curWidth;zoomLabel.style.display="none";}};var showLoading=function(){var parent=image.parentNode;MochiKit.DOM.removeElement(image);image=MochiKit.DOM.IMG({"id":"largeattach","src":"/images/loading.gif"});MochiKit.DOM.appendChildNodes(parent,image);};var showArrows=function(){if(pageNumber>1){leftArrow.style.visibility="visible";}
else{leftArrow.style.visibility="hidden";}
if(pageNumber<data.attachment.number_of_pages){rightArrow.style.visibility="visible";}
else{rightArrow.style.visibility="hidden";}
var lower=thumbs[0].getPage();var upper=thumbs[5].getPage();if(lower>1){thumbsLeftArrow.style.visibility="visible";}
else{thumbsLeftArrow.style.visibility="hidden";}
if(upper<data.attachment.number_of_pages){thumbsRightArrow.style.visibility="visible";}
else{thumbsRightArrow.style.visibility="hidden";}};var setImage=function(change,src,callBack){var set=function(){dims.width=cache.width;dims.height=cache.height;var DOMimg=MochiKit.DOM.IMG({"src":src,"id":"largeattach"});var usableImageHeight=actualWindowHeight-headerHeight-thumbDrawerHeight;scaleImage(DOMimg,cache.width,cache.height,maxWindowWidth-60,getUsableImageHeight());MochiKit.DOM.swapDOM(change,DOMimg);image=DOMimg;callBack();};var cache=new Image();cache.src=src;if(cache.height>0&&cache.width>0){set();}
else{cache.onload=set;}};var showThumbs=function(){var lower=thumbs[0].getPage();var upper=thumbs[5].getPage();var startPage=pageNumber;if(pageNumber>=lower&&pageNumber<=upper){return;}
if(startPage>data.attachment.number_of_pages-5){startPage=data.attachment.number_of_pages-5;}
if(startPage===lower-1){startPage=lower-6;}
if(startPage<1){startPage=1;}
var base="/fetchimage.xqy?id="+messageId+"&number="+attachmentNumber+"&page=";for(i=0;i<6;i+=1){var page=startPage+i;if(page<=data.attachment.number_of_pages){thumbs[i].set(base+page,page);}}
highlightCurrentThumb(pageNumber);highlightMatchingThumbs();};var cacheImage=function(src){var cache=new Image();cache.src=src;};this.toggleZoom=function(){if(zoomed){zoomOut();}
else{zoomIn();}};this.toggleMode=function(){if(mode==="image"){viewText();}
else{viewImage();}};this.getViewingMode=function(){return mode;};this.showOverflow=function(){text.style.overflow="auto";text.style.paddingRight="5px";overflowHidden=false;};this.hideOverflow=function(){text.style.overflow="hidden";text.style.paddingRight="20px";overflowHidden=true;};this.isOverflowHidden=function(){return overflowHidden;};var filename=MochiKit.DOM.DIV({"id":"attachfilename"},"");var closeLabel=MochiKit.DOM.DIV({"id":"attachclose","title":"close"},MochiKit.DOM.IMG({"src":"/images/close.gif","alt":"Close","title":"Close"}));var zoomLabel=MochiKit.DOM.DIV({"id":"attachzoom"},"Zoom In");var modeLabel=MochiKit.DOM.DIV({"id":"attachmode"},"View Text");var leftArrow=MochiKit.DOM.IMG({"src":"/images/left_arrow.gif"});var rightArrow=MochiKit.DOM.IMG({"src":"/images/right_arrow.gif"});var image=MochiKit.DOM.IMG({"id":"largeattach"});var text=MochiKit.DOM.DIV({"id":"attachtext"}," ");var cells=[];cells[0]=MochiKit.DOM.TD({"class":"leftarrow"},thumbsLeftArrow);for(i=1;i<=6;i+=1){cells[i]=MochiKit.DOM.TD({});}
cells[7]=MochiKit.DOM.TD({"class":"rightarrow"},thumbsRightArrow);MochiKit.Signal.connect(cells[0],"onclick",previousThumbsPage);MochiKit.Signal.connect(cells[7],"onclick",nextThumbsPage);MochiKit.Signal.connect(closeLabel,"onclick",this,"hide");MochiKit.Signal.connect(zoomLabel,"onclick",this,"toggleZoom");MochiKit.Signal.connect(modeLabel,"onclick",this,"toggleMode");MochiKit.Signal.connect(leftArrow,"onclick",this,"previousPage");MochiKit.Signal.connect(rightArrow,"onclick",this,"nextPage");MochiKit.DOM.appendChildNodes(MochiKit.DOM.getElement("header").parentNode,MochiKit.DOM.DIV({"id":"attachcontainer"},MochiKit.DOM.DIV({"class":"shaddow1"},MochiKit.DOM.DIV({"class":"shadow2"},MochiKit.DOM.DIV({"id":"attachbox"},MochiKit.DOM.TABLE({},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},MochiKit.DOM.TD({"id":"controls","colspan":"3"},filename,closeLabel,zoomLabel,modeLabel)),MochiKit.DOM.TR({},MochiKit.DOM.TD({"id":"attachleftarrow"},leftArrow),MochiKit.DOM.TD({"id":"contentcell"},MochiKit.DOM.DIV({"id":"attachimg"},image),text),MochiKit.DOM.TD({"id":"attachrightarrow"},rightArrow)),MochiKit.DOM.TR({},MochiKit.DOM.TD({"id":"thumbs","colspan":"3"},MochiKit.DOM.TABLE({},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},cells))))))))))));var container=MochiKit.DOM.getElement("attachcontainer");mm.layer.register("attachment",this);};var Thumbnail=function(position){var thisPage=null;var image=MochiKit.DOM.IMG({"style":"display: none"});var imageHolder=MochiKit.DOM.DIV({"class":"nothit"},image);var label=MochiKit.DOM.DIV({"class":"pagelabel","style":"display: none"});this.cell=MochiKit.DOM.TD({"class":"notselected"},label,imageHolder);MochiKit.Signal.connect(this.cell,"onclick",function(){attachViewer.jumpToPage(thisPage);});MochiKit.Signal.connect(label,"onmouseover",function(){label.style.opacity="0.3";fade();});this.set=function(src,labelText){label.style.visibility="hidden";thisPage=MochiKit.Base.parseQueryString(src).page;var cache=new Image();cache.src=src;if(cache.width>0&&cache.height>0){scaleThumbnail(cache);}
else{cache.onload=function(){if(cache.width>0&&cache.height>0){scaleThumbnail(cache);}};}
label.innerHTML=labelText;};this.getPage=function(){return parseInt(thisPage,10);};this.select=function(){this.cell.className="selected";};this.deselect=function(){this.cell.className="notselected";};this.isHit=function(){imageHolder.className="hit";};this.noHit=function(){imageHolder.className="nothit";};var scaleThumbnail=function(cacheImage){var scale=null;if(cacheImage.width>cacheImage.height){scale=100/cacheImage.width;}
else{scale=100/cacheImage.height;}
if(scale<1){image.height=Math.floor(cacheImage.height*scale);image.width=Math.floor(cacheImage.width*scale);}
image.src=cacheImage.src;image.style.display="inline";label.style.visibility="visible";fade();};var fade=function(){label.style.display="block";label.style.opacity="0.3";var id="p"+position;MochiKit.Visual.Opacity(label,{"from":0.3,"to":0,"duration":3,"delay":0,"queue":{"position":"break","scope":id}});};};