var myPainter=new AnnotationPainter();var layers={};var layerNames=[];var currentLayer=null;function AnnotationPainter(){AnnotationPainter.prototype.resetLayers=function(){layers={};layerNames=[];currentLayer=null};AnnotationPainter.prototype.getCurrentLayer=function(){if((currentLayer===undefined)||(currentLayer===null)){if(layerNames.length===0){this.createDefaultLayer()}else{var Q=layers.Default;if((Q!==undefined)&&(Q!==null)){currentLayer=Q}else{currentLayer=layers[layerNames[0]]}}}return currentLayer};AnnotationPainter.prototype.parseLayer=function(W){var R=document.getElementById("annotationCanvas");var a=W.getElementsByTagName("pageMeta")[0];var T=W.getElementsByTagName("annObject");if(a!=null){var Y={};Y.layerName=getValue(W,"annLayerID");Y.pageNumber=parseInt(getValue(a,"pageNumber"),10);Y.pageWidth=parseInt(getValue(a,"pageWidth"),10);Y.pageHeight=parseInt(getValue(a,"pageHeight"),10);Y.doubleByte=fixBooleanString(getValue(W,"doubleByte"));Y.visibility=true;Y.dirty=false;Y.anns=[];for(var V=0;V<T.length;V++){Y.anns[V]=new Annotation(T[V],Y.pageWidth,Y.pageHeight,Y.layerName,Y.doubleByte,V)}if(Y.layerName=="Default"){currentLayer=Y}var X=myFlexSnap.getDocumentModel();if(X==null){return }var S=X.getElementsByTagName("AnnotationLayerInfo");var U=S.length;for(var b=0;b<U;b++){var Z=X.getElementsByTagName("AnnotationLayerInfo")[b];var Q=getValue(Z,"name");if(Q==Y.layerName){Y.isRedaction=fixBooleanString(getValue(Z,"isRedaction"));Y.isDeletable=fixBooleanString(getValue(Z,"isDeletable"));Y.permissionLevel=parseInt(getValue(Z,"permissionLevel"),10);break}}layers[Y.layerName]=Y}};var O=function(T){var S=document.getElementById("layerManagerActiveLayerSelect");var R=T.layerName;var U=document.createElement("option");var W=document.createTextNode(R);U.id="annLayer"+R;U.value=R;U.appendChild(W);if(R=="Default"){U.selected="selected"}else{if((myPainter.getCurrentLayer()!=null)&&(R==myPainter.getCurrentLayer().layerName)){U.selected="selected"}}S.appendChild(U);S.onchange=J;var Q=document.getElementById("layerManagerVisibilityControl");U=document.createElement("input");W=document.createTextNode(R);var V=document.createElement("br");U.id="visLayer"+R;U.type="checkbox";U.name="visLayer"+R;U.value=R;Q.appendChild(U);Q.appendChild(W);Q.appendChild(V);U.onclick=M;if(T.visibility==true){U.checked="checked"}else{U.checked=null}};var J=function(R){if(!R){R=window.event}var Q=this.value;currentLayer=layers[Q]};AnnotationPainter.prototype.fillLayerDialog=function(){var T=document.getElementById("layerManagerActiveLayerSelect");var S=document.getElementById("layerManagerVisibilityControl");while(T.firstChild){T.removeChild(T.firstChild)}while(S.firstChild){S.removeChild(S.firstChild)}for(var Q=0;Q<layerNames.length;Q+=1){var R=layers[layerNames[Q]];if((R!==undefined)&&(R.permissionLevel>permissionLevels.PERM_HIDDEN)){O(R)}}if((this.getCurrentLayer()!=null)&&(this.getCurrentLayer().isRedaction===true)){document.getElementById("layerManagerRedactLayerButton").style.borderStyle="inset"}else{document.getElementById("layerManagerRedactLayerButton").style.borderStyle="outset"}};AnnotationPainter.prototype.checkLayerPermission=function(Q,R){if((Q!==undefined)&&(Q!==null)){if(Q.permissionLevel<R){return false}else{return true}}else{return true}};AnnotationPainter.prototype.getLayerByName=function(Q){return layers[Q]};var M=function(R){if(!R){R=window.event}var Q=this.value;layers[Q].visibility=this.checked;myPainter.paintAnnotations()};AnnotationPainter.prototype.createDefaultLayer=function(){if(layerNames.length===0){var Q="Default";currentLayer=myPainter.createAnnotationLayer(Q);this.getCurrentLayer().dirty=false;layerNames.push(Q);layers[Q]=this.getCurrentLayer()}};AnnotationPainter.prototype.createAnnotationLayer=function(R){var Q=document.getElementById("annotationCanvas");var S={};S.layerName=R;S.pageNumber=myFlexSnap.getPageNumber();S.pageWidth=myFlexSnap.getOriginalWidth();S.pageHeight=myFlexSnap.getOriginalHeight();S.doubleByte=false;S.visibility=true;S.dirty=true;S.isRedaction=false;S.isDeletable=true;S.permissionLevel=permissionLevels.PERM_DELETE;S.anns=[];return S};var K=function(Q){var R=myFlexSnap.getDocumentId();if((R==null)||(R==="")){return null}var S=servletPath;S+="?action=deleteAnnotationLayer";S+="&documentId="+R;S+="&clientInstanceId="+myFlexSnap.getClientInstanceId;S+="&layerName="+Q;S+="&pageCount="+myFlexSnap.getPageCount();ajax(S,"",H)};var H=function(R,Q){myPainter.saveAnnotations()};AnnotationPainter.prototype.deleteCurrentLayer=function(){var R=this.getCurrentLayer();K(R.layerName);var S=layerNames;layerNames=[];for(var Q=0;Q<S.length;Q+=1){var T=S[Q];if(T!=R.layerName){layerNames.push(T)}}layers[R.layerName]=undefined;currentLayer=undefined;this.getCurrentLayer();this.paintAnnotations()};AnnotationPainter.prototype.renameCurrentLayer=function(T){if(this.getCurrentLayer()!=null){var W=this.getCurrentLayer().layerName;var U=this.getCurrentLayer();U.layerName=T;var R=U.anns;for(var Q=0;Q<R.length;Q+=1){R[Q].setLayerName(T)}var S=layerNames;K(W);layers[T]=U;layers[W]=undefined;layerNames=[];for(var Q=0;Q<S.length;Q+=1){var V=S[Q];if(V!=W){layerNames.push(V)}else{layerNames.push(T)}}this.markCurrentLayerDirty()}};AnnotationPainter.prototype.markCurrentLayerDirty=function(){this.getCurrentLayer().dirty=true};AnnotationPainter.prototype.markLayerWithAnnDirty=function(T){for(var Q=0;Q<layerNames.length;Q++){var R=layers[layerNames[Q]];for(var S=0;S<R.anns.length;S++){if(R.anns[S]==T){R.dirty=true}}}};AnnotationPainter.prototype.getAnnotationAtPoint=function(Y){var S=document.getElementById("innerDiv");var R=document.getElementById("annotationCanvas");var W=null;for(var X=0;X<layerNames.length;X++){var T=layers[layerNames[X]];for(var U=0;U<T.anns.length;U++){var Q=T.anns[U];var V=Q.getBoundingBox();if(T.anns[U].getDelete()===false){if(V.contains(Y,Q.getWidthRatio(),Q.getHeightRatio())){if(W!=null){if(V.getWidth()<W.getBoundingBox().getWidth()){W=Q}}else{W=Q}}}}}return W};AnnotationPainter.prototype.isAnnotationAtPoint=function(R){var V=document.getElementById("innerDiv");var T=document.getElementById("annotationCanvas");for(var Q=0;Q<layerNames.length;Q++){var S=layers[layerNames[Q]];for(var U=0;U<S.anns.length;U++){var X=S.anns[U];var W=X.getBoundingBox();if(S.anns[U].getDelete()===false){if(W.contains(R,X.getWidthRatio(),X.getHeightRatio())){return true}}}}return false};AnnotationPainter.prototype.getAnnotationAtIndex=function(Q){return this.getCurrentLayer().anns[Q]};AnnotationPainter.prototype.getAnnotationCount=function(){return this.getCurrentLayer().anns.length};AnnotationPainter.prototype.saveAnnotations=function(){var U=document.getElementById("annotationCanvas");var R=layerNames.length;for(var Q=0;Q<R;Q++){var S=layers[layerNames[Q]];var T=null;if(S!==undefined){if(S.dirty===true){T="";T+='<?xml version="1.0" encoding="ISO-8859-1"?>';T+='<document xmlns="http://snowbound.com/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://snowbound.com/XMLSchema flexAnn.xsd">';T+="<docMeta>";T+="<docID>DOC_ID</docID>";T+="<docName>ANNOTATED_FILE_NAME</docName>";T+="</docMeta>";T+="<docLayers>";T+="<layer/>";T+="</docLayers>";T+="<docPages>";T+="<page>";T+="<pageMeta>";T+="<pageNumber>"+S.pageNumber+"</pageNumber>";T+="<pageWidth>"+S.pageWidth+"</pageWidth>";T+="<pageHeight>"+S.pageHeight+"</pageHeight>";T+="<doubleByte>"+S.doubleByte+"</doubleByte>";T+="</pageMeta>";T+="<pageObjects>";for(var W=0;W<S.anns.length;W++){T+=S.anns[W].toXML()}T+="</pageObjects>";T+="</page>";T+="</docPages>";T+="</document>"}}if(T!=null){var V=servletPath;var X=myFlexSnap.getClientInstanceId();V+="?action=saveAnnotationModel&documentId="+myFlexSnap.getDocumentId()+"&layerName="+S.layerName+"&clientInstanceId="+X+"&pageIndex="+S.pageNumber+"&isRedaction="+S.isRedaction+"&pageCount="+myFlexSnap.getPageCount();T="layerXML="+escape(T);ajax(V,T,G);S.dirty=false}}};var G=function(R,Q){myFlexSnap.requestDocumentModel(true)};AnnotationPainter.prototype.paintAnnotations=function(){myPainter.clearAnnotations();var U=document.getElementById("annotationCanvas");var T=U.getContext("2d");var R=layerNames.length;var W=degreesToRadians(rotateAngle);T.save();if(rotateAngle==90){T.translate(U.width,0)}else{if(rotateAngle==180){T.translate(U.width,U.height)}else{if(rotateAngle==270){T.translate(0,U.height)}}}T.rotate(W);for(var Q=0;Q<R;Q++){var S=layers[layerNames[Q]];if((S!==undefined)&&(S.permissionLevel>permissionLevels.PERM_HIDDEN)){if(S.visibility===true){for(var V=0;V<S.anns.length;V++){if(S.anns[V].getDelete()!==true){myPainter.paintAnnotation(U,S.anns[V])}}}}}T.restore()};AnnotationPainter.prototype.addAnnotation=function(Q){var R=document.getElementById("annotationCanvas");var W=layerNames.length;if(Q.getType()==annotationTypes.SANN_POSTIT){Q.setFillColor("ffffff");Q.setLineColor(null)}if(W===0){this.createDefaultLayer();W=layerNames.length}else{if(this.getCurrentLayer()==null){for(var X=0;X<W;X+=1){var Y=this.checkLayerPermission(layers[layerNames[X]],permissionLevels.PERM_CREATE);if(Y===true){currentLayer=layers[layerNames[X]];break}}if(this.getCurrentLayer()==null){this.createDefaultLayer()}}}var T=this.getCurrentLayer();if(myPainter.checkLayerPermission(this.getCurrentLayer(),permissionLevels.PERM_CREATE)===false){alert(errorCreateAnnLayerPermissionString);return }var V=-1;if(T.pageWidth===0){T.pageWidth=myFlexSnap.getOriginalWidth()}if(T.pageHeight===0){T.pageHeight=myFlexSnap.getOriginalHeight()}Q.setLayerName(T.layerName);Q.setPageWidth(T.pageWidth);Q.setPageHeight(T.pageHeight);if(Q.pointArray!=null){var S=[];for(var U=0;U<Q.pointArray.length;U+=1){S[U]=Q.pointArray[U];S[U].unrotate(rotateAngle,R.width,R.height)}Q.pointArray=S}Q.fixCoordinates();Q.fixBoundingBox();for(var X=0;X<T.anns.length;X++){if(T.anns[X].getOrdinal()>V){V=T.anns[X].getOrdinal()}}Q.setOrdinal(V+1);Q.setIndex(T.anns.length);T.anns.push(Q);T.dirty=true};AnnotationPainter.prototype.clearAnnotations=function(){var T=document.getElementById("annotationCanvas");var V=document.getElementById("innerDiv");for(var Q=0;Q<layerNames.length;Q++){var S=layers[layerNames[Q]];if(S!=undefined){if((S.anns!==null)&&(S.anns!==undefined)){for(var U=0;U<S.anns.length;U++){var W=document.getElementById("annotation-"+S.layerName+S.anns[U].getOrdinal());if(W!=null){V.removeChild(W)}}}}}if(T!=null){var R=T.getContext("2d");R.clearRect(0,0,T.width,T.height)}};AnnotationPainter.prototype.paintAnnotation=function(T,R){var V=R.getType();var U=R.getBoundingBox();var Q=U.getX1()*R.getWidthRatio();var W=U.getY1()*R.getHeightRatio();var S=U.getWidth()*R.getWidthRatio();var X=U.getHeight()*R.getHeightRatio();if((rotateAngle==90)||(rotateAngle==270)){W=U.getX1()*R.getWidthRatio();Q=U.getY1()*R.getHeightRatio();X=U.getWidth()*R.getWidthRatio();S=U.getHeight()*R.getHeightRatio()}if((V==annotationTypes.SANN_FILLED_RECT)||(V==annotationTypes.SANN_HIGHLIGHT_RECT)||(V==annotationTypes.SANN_RECTANGLE)){if(U.getY2()<U.getY1()){W=U.getY2()*R.getHeightRatio();X*=-1}if(U.getX2()<U.getX1()){Q=U.getX2()*R.getWidthRatio();S*=-1}}var Y=T.getContext("2d");Y.lineWidth=R.getLineWidth();if(R.getLineColor()!=null){Y.strokeStyle=R.getLineColor()}if(R.getFillColor()!=null){Y.fillStyle=R.getFillColor()}if(V==annotationTypes.SANN_RECTANGLE){if(R.getFillColor()!=null){D(Y,R,true)}else{if(R.getLineColor()!=null){D(Y,R,false)}}}else{if(V==annotationTypes.SANN_LINE){A(Y,R,false,false)}else{if(V==annotationTypes.SANN_ELLIPSE){N(Y,R)}else{if(V==annotationTypes.SANN_BITMAP){}else{if(V==annotationTypes.SANN_POSTIT){C(Y,R)}else{if(V==annotationTypes.SANN_POLYGON){A(Y,R,false,true)}else{if(V==annotationTypes.SANN_ARROW){A(Y,R,true,false)}else{if(V==annotationTypes.SANN_EDIT){I(Y,R)}else{if(V==annotationTypes.SANN_TRANSPARENT_BITMAP){}else{if(V==annotationTypes.SANN_BUBBLE){E(Y,R)}else{if(V==annotationTypes.SANN_CLOUD_EDIT){F(Y,R)}else{if(V==annotationTypes.SANN_CUSTOM_STAMP){}else{if(V==annotationTypes.SANN_CIRCLE){N(Y,R)}}}}}}}}}}}}}};var D=function(Q,T,U){var S=T.getBoundingBox();var R=[];R[0]=new Point(S.getX1(),S.getY1());R[1]=new Point(S.getX2(),S.getY1());R[2]=new Point(S.getX2(),S.getY2());R[3]=new Point(S.getX1(),S.getY2());R[4]=new Point(S.getX1(),S.getY1());T.setPointArray(R);A(Q,T,false,U);T.setPointArray(null)};var E=function(Q,S){var R=S.getBoundingBox();I(Q,S)};var F=function(Q,S){var R=S.getBoundingBox();N(Q,S);I(Q,S);var U="annotation-"+S.getLayerName()+S.getOrdinal();var T=document.getElementById(U);T.style.textAlign="center"};var C=function(Q,U){var T=U.getBoundingBox();var V=5*U.getWidthRatio();var S=5*U.getHeightRatio();I(Q,U);var X="annotation-"+U.getLayerName()+U.getOrdinal();var W=document.getElementById(X);W.style.backgroundColor="#"+U.getFillColorRGB();W.style.width=stripPx(W.style.width)-V+"px";W.style.height=stripPx(W.style.height)-S+"px";W.style.maxWidth=W.style.width;W.style.maxHeight=W.style.height;var R=Q.fillStyle;Q.fillStyle="rgba(0,0,0,0.25)";Q.fillRect((T.getX1()*U.getWidthRatio())+(V),(T.getY1()*U.getHeightRatio())+(S),(T.getWidth()*U.getWidthRatio()),(T.getHeight()*U.getHeightRatio()));Q.fillStyle=R};var I=function(a,R){var W=R.getBoundingBox();var V=document.getElementById("innerDiv");var U=document.getElementById("annotationCanvas");var T="annotation-"+R.getLayerName()+R.getOrdinal();var X=document.getElementById(T);if(X==null){X=document.createElement("div");V.appendChild(X)}var Q=W.getX1()*R.getWidthRatio();var Y=W.getY1()*R.getHeightRatio();var S=W.getWidth()*R.getWidthRatio();var Z=W.getHeight()*R.getHeightRatio();if(rotateAngle==90){Q=U.width-(W.getY2()*R.getHeightRatio());Y=W.getX1()*R.getWidthRatio();S=W.getHeight()*R.getHeightRatio();Z=W.getWidth()*R.getWidthRatio()}else{if(rotateAngle==180){Q=U.width-(W.getX2()*R.getWidthRatio());Y=U.height-(W.getY2()*R.getHeightRatio());S=W.getWidth()*R.getWidthRatio();Z=W.getHeight()*R.getHeightRatio()}else{if(rotateAngle==270){Q=W.getY1()*R.getHeightRatio();Y=U.height-(W.getX2()*R.getWidthRatio());S=W.getHeight()*R.getHeightRatio();Z=W.getWidth()*R.getWidthRatio()}}}X.id=T;X.style.position="absolute";X.style.top=Y+"px";X.style.left=Q+"px";X.style.width=S+"px";X.style.height=Z+"px";X.style.maxWidth=X.style.width;X.style.maxHeight=X.style.height;X.style.overflow="hidden";X.style.zIndex=100;X.style.color="#"+R.getFontColor();X.style.fontFamily=R.getFontName();X.style.fontSize=R.getFontSize()+"px";if(R.getFontBold()===true){X.style.fontWeight="bold"}if(R.getFontItalic()===true){X.style.fontStyle="italic"}if(R.getFontStrike()===true){X.style.textDecoration="line-through"}if(R.getFontUnderline()===true){X.style.textDecoration="underline"}X.innerHTML=R.getTextString()};var N=function(b,Q){var Y=Q.getBoundingBox();var U=Y.getX1()*Q.getWidthRatio();var a=Y.getY1()*Q.getHeightRatio();var S=Y.getX2()*Q.getWidthRatio();var Z=Y.getY2()*Q.getHeightRatio();var V=4*((Math.sqrt(2)-1)/3);var T=(S-U)/2;var R=(Z-a)/2;var X=U+T;var W=a+R;b.beginPath();b.moveTo(X,W-R);b.bezierCurveTo(X+(V*T),W-R,X+T,W-(V*R),X+T,W);b.bezierCurveTo(X+T,W+(V*R),X+(V*T),W+R,X,W+R);b.bezierCurveTo(X-(V*T),W+R,X-T,W+(V*R),X-T,W);b.bezierCurveTo(X-T,W-(V*R),X-(V*T),W-R,X,W-R);if(Q.getFillColor()!=null){b.strokeStyle=Q.getFillColor();b.fill()}b.closePath();b.stroke()};var A=function(e,Q,U,X){var a=Q.getLineColor();var T=Q.getFillColor();var d=Q.getPointArray();if(d!=null){e.beginPath();e.moveTo(d[0].getX()*Q.getWidthRatio(),d[0].getY()*Q.getHeightRatio());for(var b=1;b<d.length;b+=1){e.lineTo(d[b].getX()*Q.getWidthRatio(),d[b].getY()*Q.getHeightRatio())}if(T!=null){e.strokeStyle=T;e.fill()}if(X&&(Q.getPreview()!==true)){e.closePath()}e.stroke();if((Q.getPreview()===true)&&(Q.getType()==annotationTypes.SANN_POLYGON)){e.fillStyle=polygonNubFillColor;e.fillRect(d[0].getX()-(polygonNubSize/2),d[0].getY()-(polygonNubSize/2),polygonNubSize,polygonNubSize)}}if(U===true){var Z=d[0].getX()*Q.getWidthRatio();var f=d[0].getY()*Q.getHeightRatio();var R=d[1].getX()*Q.getWidthRatio();var c=d[1].getY()*Q.getHeightRatio();var W=L(Z,f,R,c);var V=B(Z,f,R,c);var Y=V*0.11;if(Y<8){Y=8}if(Y>25){Y=25}var S=30;e.save();e.moveTo(R,c);e.translate(R,c);e.rotate(W);e.rotate(degreesToRadians(S));e.moveTo(0,Y);e.lineTo(0,0);e.stroke();e.restore();e.save();e.moveTo(R,c);e.translate(R,c);e.rotate(W);e.rotate(degreesToRadians(S*-1));e.moveTo(0,Y);e.lineTo(0,0);e.stroke();e.restore()}};var B=function(T,R,Q,S){return Math.sqrt(Math.pow((Q-T),2)+(Math.pow((S-R),2)))};var P=function(T,R,Q,S){return(S-R)/(Q-T)};var L=function(S,b,R,Z){var Q=S;var X=b;var c=S;var W=Z;var V=P(S,b,R,Z);var Y=((R-S)*(c-Q))+((Z-b)*(W-X));var U=Math.sqrt(Math.pow((R-S),2)+Math.pow((Z-b),2));var a=Math.sqrt(Math.pow((c-Q),2)+Math.pow((W-X),2));var T=Math.acos(Y/(U*a));if(isNaN(T)===true){T=90}else{T=radiansToDegrees(T)}if(V>0){T=90-T}if(R>S){if(V>0){T+=90}}else{if(R==S){if(V<0){T=0}else{T=180}}else{if(V>0){T+=270}else{T+=180}}}return degreesToRadians(T)}};
