var CadX={};CadX.Net={};CadX.Process={};CadX.Xml={};CadX.Error={};CadX.Geo={};CadX.Controls={};CadX.menu={};CadX.Dialog={};CadX.log=function(A){if(typeof console!="undefined"&&typeof console.log!="undefined"){console.log(CadX.dump(A))}};CadX.assert=function(A){if(!A){CadX.log("assertion faied")}};CadX.dump=function(A){if(typeof A=="object"){var C="";for(var B in A){if(typeof A[B]!="function"){C+=(B+" : "+A[B]+";")}}return C}else{return A}};CadX.Units=function(){CadX.Units.superclass.constructor.call(this);this.addEvents({unitchanged:true})};Ext.extend(CadX.Units,Ext.util.Observable,{userUnit:"in",toDisplayString:function(A){return this.toUser(A)+" "+this.userUnit},setUnit:function(B){var A=this.userUnit;this.userUnit=B;this.fireEvent("unitchanged",this,A,B)},updateUser:function(A,B){return this.toUser(this.toDocument(B,A))},toUser:function(A){var B;switch(this.userUnit){case"mm":B=A;break;case"cm":B=A/10;break;case"in":B=A/25.4;break;case"pt":B=A/25.4*72;break}return parseFloat(B).toFixed(2)},toDocument:function(B,A){var C=(A)?A:this.userUnit;switch(C){case"mm":return B;case"cm":return B*10;case"in":return B*25.4;case"pt":return B*25.4/72}}});CadX.Xml.appendObjectToXml=function(A,B,D){var C=A.ownerDocument.createElement(D);A.appendChild(C);CadX.Xml.applyObjectToXml(C,B);return C};CadX.Xml.applyObjectToXml=function(E,A,F){var B=F?Ext.DomQuery.selectNode(F,E):E;if(B){for(var C in A){var D=A[C];if(typeof D=="number"&&parseInt(D)!=parseFloat(D)){D=D.toFixed(3)}B.setAttribute(CadX.Xml.toXmlCase(C.toString()),D.toString())}}};CadX.Xml.applyXmlToObject=function(A,D,E){var C=E?Ext.DomQuery.selectNode(E,D):D;if(C){for(var B=0;B<C.attributes.length;++B){A[CadX.Xml.toObjectCase(C.attributes[B].nodeName)]=C.attributes[B].nodeValue}}};CadX.Xml.appendElement=function(B,A){var C=B.ownerDocument.createElement(A);B.appendChild(C);return C};CadX.Xml.setAttribute=function(B,A,C){B.setAttribute(A,C.toString())};CadX.Xml.importNode=function(B,C,A){if(typeof (B.ownerDocument.importNode)!="undefined"){B.appendChild(B.ownerDocument.importNode(C,A))}else{B.appendChild(C.cloneNode(A))}};CadX.Xml.getFloat=function(C,B,A){var D=parseFloat(Ext.DomQuery.selectValue(B,C));if(isNaN(D)){return A}else{return D}};CadX.Xml.getBool=function(C,B,A){var D=Ext.DomQuery.selectValue(B,C);if(D&&D.toLowerCase()=="true"){return true}else{if(D&&D.toLowerCase()=="false"){return false}else{return A}}};CadX.Xml.getString=function(C,B,A){var D=Ext.DomQuery.selectValue(B,C);if(D==null){return A}else{return D}};CadX.Xml.getTextContent=function(B,C){var A=C?Ext.DomQuery.selectNode(C,B):B;if(A){return A.textContent?A.textContent:A.text}else{return null}};CadX.Xml.Convert=function(A){if(isNaN(A)){return A}else{if(A.indexOf(".")==-1){return parseInt(A)}else{return parseFloat(A)}}};CadX.Xml.ConvertBool=function(A){if(A=="true"){return true}else{return false}};CadX.Xml.toXmlCase=function(A){return A.charAt(0).toUpperCase()+A.substr(1)};CadX.Xml.toObjectCase=function(A){return A.charAt(0).toLowerCase()+A.substr(1)};CadX.Xml.toString=function(A){return(new XMLSerializer()).serializeToString(A)};CadX.Geo.TransformStack=function(A){this.stack=[]};CadX.Geo.TransformStack.prototype={compose:function(A){if(this.stack.length<1){this.add(A)}else{this.stack[this.stack.length-1]=CadX.Geo.Matrix.concat(A,this.stack[this.stack.length-1])}},add:function(A){this.stack[this.stack.length]=A},toString:function(){var B="";for(var A=0;A<this.stack.length;++A){B=B+this.stack[A].toString()+";"}return B}};CadX.Geo.Frame=function(A){this.p0={x:0,y:0};this.p1={x:0,y:0};this.p2={x:0,y:0};this.p3={x:0,y:0};if(A){this.p0.x=A.p0.x;this.p0.y=A.p0.y;this.p1.x=A.p1.x;this.p1.y=A.p1.y;this.p2.x=A.p2.x;this.p2.y=A.p2.y;this.p3.x=A.p3.x;this.p3.y=A.p3.y}};CadX.Geo.Frame.fromBounds=function(A){return new CadX.Geo.Frame({p0:{x:A.lx,y:A.ly},p1:{x:A.hx,y:A.ly},p2:{x:A.hx,y:A.hy},p3:{x:A.lx,y:A.hy}})};CadX.Geo.Frame.prototype={getBounds:function(){var A=this.getPoints();return CadX.Geo.computeBounds(A)},getPoints:function(){return[this.p0,this.p1,this.p2,this.p3]},setPoints:function(A){this.p0.x=A[0].x;this.p0.y=A[0].y;this.p1.x=A[1].x;this.p1.y=A[1].y;this.p2.x=A[2].x;this.p2.y=A[2].y;this.p3.x=A[3].x;this.p3.y=A[3].y}};CadX.Geo.getFitSize=function(E,D,A){var C=(E.hx-E.lx);var B=(E.hy-E.ly);if(C>B){A=parseInt(Math.floor(D*B/C))}else{D=parseInt(Math.floor(A*C/B))}return{width:D,height:A}};CadX.Geo.computeBounds=function(B){var D=Number.MAX_VALUE,C=Number.MAX_VALUE,F=-Number.MAX_VALUE,E=-Number.MAX_VALUE;for(var A=0;A<B.length;++A){if(B[A].x<D){D=B[A].x}if(B[A].x>F){F=B[A].x}if(B[A].y<C){C=B[A].y}if(B[A].y>E){E=B[A].y}}return{lx:D,ly:C,hx:F,hy:E}};CadX.Geo.computeFigureBounds=function(C){var A={lx:Number.MAX_VALUE,ly:Number.MAX_VALUE,hx:-Number.MAX_VALUE,hy:-Number.MAX_VALUE};for(var B=0;B<C.length;++B){var D=C[B].getBounds();if(D.lx<A.lx){A.lx=D.lx}if(D.ly<A.ly){A.ly=D.ly}if(D.hx>A.hx){A.hx=D.hx}if(D.hy>A.hy){A.hy=D.hy}}return A};CadX.Geo.translate=function(C,A){var B=CadX.Geo.Matrix.translate(C.offsetX,C.offsetY);B.transformPoints(A)};CadX.Geo.scale=function(A,C,B){var C=CadX.Geo.Matrix.scaleFrom(A,C.scaleX,C.scaleY);C.transformPoints(B)};CadX.Geo.shear=function(A,C,B){var C=CadX.Geo.Matrix.shearAround(A,C.shearX,C.shearY);C.transformPoints(B)};CadX.Geo.rad2deg=function(A){var B=360*A/(2*Math.PI);return B};CadX.Geo.deg2rad=function(B){var A=(2*Math.PI*B)/360;return A};CadX.Geo.rotate=function(A,B,C){var D=CadX.Geo.deg2rad(B.rotation);var B=CadX.Geo.Matrix.rotateAround(A,D);B.transformPoints(C)};CadX.Geo.transform=function(A,B,C){var D={offsetX:0,offsetY:0,scaleX:1,scaleY:1,shearX:0,shearY:0,rotation:0};Ext.apply(D,B);CadX.Geo.shear(A,D,C);CadX.Geo.scale(A,D,C);CadX.Geo.rotate(A,D,C);CadX.Geo.translate(D,C)};CadX.Geo.boundsCenter=function(A){return{x:A.lx+(A.hx-A.lx)/2,y:A.ly+(A.hy-A.ly)/2}};CadX.Geo.isPointInsideBounds=function(B,A){if(A.x<B.lx){return false}if(A.y<B.ly){return false}if(A.x>B.hx){return false}if(A.y>B.hy){return false}return true};CadX.Geo.isInsideBounds=function(A,B){var C=A.getBounds();if(C.lx<B.lx){return false}if(C.ly<B.ly){return false}if(C.hx>B.hx){return false}if(C.hy>B.hy){return false}return true};CadX.Geo.Matrix=function(A){if(A){this.s00=A.s00;this.s01=A.s01;this.dx=A.dx;this.s10=A.s10;this.s11=A.s11;this.dy=A.dy}else{this.s00=1;this.s01=0;this.dx=0;this.s10=0;this.s11=1;this.dy=0}};CadX.Geo.Matrix.stringToMatrix22=function(B){var A=B.split(",");var D=parseFloat(A[0]);var C=parseFloat(A[1]);var F=parseFloat(A[2]);var E=parseFloat(A[3]);return new CadX.Geo.Matrix({s00:D,s01:C,s10:F,s11:E,dx:0,dy:0})};CadX.Geo.Matrix.concat=function(){CadX.assert(arguments.length>=2);var A=arguments[0];for(var B=1;B<arguments.length;B++){A=CadX.Geo.Matrix.multiply(A,arguments[B])}return A};CadX.Geo.Matrix.multiply=function(B,G){CadX.assert(G);var E=(B.s00*G.s00)+(B.s01*G.s10);var D=(B.s00*G.s01)+(B.s01*G.s11);var C=(B.s00*G.dx)+(B.s01*G.dy)+B.dx;var H=(B.s10*G.s00)+(B.s11*G.s10);var F=(B.s10*G.s01)+(B.s11*G.s11);var A=(B.s10*G.dx)+(B.s11*G.dy)+B.dy;return new CadX.Geo.Matrix({s00:E,s01:D,dx:C,s10:H,s11:F,dy:A})};CadX.Geo.Matrix.translate=function(B,A){return new CadX.Geo.Matrix({s00:1,s01:0,s10:0,s11:1,dx:B,dy:A})};CadX.Geo.Matrix.scale=function(B,A){return new CadX.Geo.Matrix({s00:B,s01:0,s10:0,s11:A,dx:0,dy:0})};CadX.Geo.Matrix.scaleFrom=function(A,C,B){return CadX.Geo.Matrix.concat(CadX.Geo.Matrix.translate(A.x,A.y),CadX.Geo.Matrix.scale(C,B),CadX.Geo.Matrix.translate(-A.x,-A.y))};CadX.Geo.Matrix.rotate=function(B){if(B!=0){var C=Math.cos(B);var A=Math.sin(B);return new CadX.Geo.Matrix({s00:C,s01:-A,s10:A,s11:C,dx:0,dy:0})}else{return new CadX.Geo.Matrix()}};CadX.Geo.Matrix.rotateAround=function(A,B){return CadX.Geo.Matrix.concat(CadX.Geo.Matrix.translate(A.x,A.y),CadX.Geo.Matrix.rotate(B),CadX.Geo.Matrix.translate(-A.x,-A.y))};CadX.Geo.Matrix.shear=function(B,A){return new CadX.Geo.Matrix({s00:1,s01:B,s10:A,s11:1,dx:0,dy:0})};CadX.Geo.Matrix.shearAround=function(A,C,B){return CadX.Geo.Matrix.concat(CadX.Geo.Matrix.translate(A.x,A.y),CadX.Geo.Matrix.shear(C,B),CadX.Geo.Matrix.translate(-A.x,-A.y))};CadX.Geo.Matrix.prototype={transformBounds:function(B){var A=[{x:B.lx,y:B.ly},{x:B.hx,y:B.hy}];this.transformPoints(A);var C=CadX.Geo.computeBounds(A);B.lx=C.lx;B.ly=C.ly;B.hx=C.hx;B.hy=C.hy},transformPoints:function(C){for(var B=0;B<C.length;++B){var A=C[B].x*this.s00+C[B].y*this.s01+this.dx;var D=C[B].x*this.s10+C[B].y*this.s11+this.dy;C[B].x=A;C[B].y=D}},getRotation:function(){return Math.atan2(-this.s01,this.s00)},getShear:function(){},getScale:function(){},toMatrix22String:function(){return this.s00.toFixed(4)+","+this.s01.toFixed(4)+","+this.s10.toFixed(4)+","+this.s11.toFixed(4)}};CadX.Net.SERVER="";CadX.Net.getQueryValue=function(B){var D=window.location.search.substring(1);var A=D.split("&");for(var C=0;C<A.length;++C){var E=A[C].split("=");if(E[0].toLowerCase()==B.toLowerCase()){return E[1]}}return null};CadX.Net.SESSION_ID=CadX.Net.getQueryValue("sid");CadX.Net.SESSION_PARAM="?sessionid="+CadX.Net.SESSION_ID;CadX.Net.getUrl=function(B,A){return B+CadX.Net.SESSION_PARAM+(A?A:"")};CadX.Net.EXPORT_DOCUMENT=CadX.Net.SERVER+"/Interface/exportDocument.ashx";CadX.Net.IMPORT_DOCUMENT=CadX.Net.SERVER+"/Interface/importDocument.ashx";CadX.Net.FIGURE_ISCACHED=CadX.Net.SERVER+"/Interface/isOutputCached.ashx";CadX.Net.RENDER_CACHEDOUTPUT=CadX.Net.SERVER+"/Interface/renderCachedOutput.ashx";CadX.Net.RENDER_FIGURE=CadX.Net.SERVER+"/Interface/renderFigure.ashx";CadX.Net.RENDER_FIGURETRANSFORM=CadX.Net.SERVER+"/Interface/renderFigureTransform.ashx";CadX.Net.LOAD_DOCUMENT=CadX.Net.SERVER+"/Interface/loadDocument.ashx";CadX.Net.SAVE_DOCUMENT=CadX.Net.SERVER+"/Interface/saveDocument.ashx";CadX.Net.ARCHIVE_DOCUMENT=CadX.Net.SERVER+"/Interface/archiveDocument.ashx";CadX.Net.RENDER_DOCUMENTTHUMBNAIL=CadX.Net.SERVER+"/Interface/renderDocumentThumbnail.ashx";CadX.Net.RENDER_FONTTHUMBNAIL=CadX.Net.SERVER+"/Interface/renderFontThumbnail.ashx";CadX.Net.IMAGE_LIST=CadX.Net.SERVER+"/Interface/ImageStore/ListImages.ashx";CadX.Net.IMAGE_UPLOAD=CadX.Net.SERVER+"/Interface/ImageStore/StoreImage.ashx";CadX.Net.IMAGE_RENDER=CadX.Net.SERVER+"/Interface/ImageStore/RenderImage.ashx";CadX.Net.IMAGE_GETCOLORAT=CadX.Net.SERVER+"/Interface/ImageStore/ImageColorAt.ashx";CadX.Net.IMAGE_VECTORIZE=CadX.Net.SERVER+"/Interface/Vectorize/VectorizeImage.ashx";CadX.Net.FIGURE_RESHAPE=CadX.Net.SERVER+"/Interface/Shaping/ReShape.ashx";CadX.Net.SEARCH_DOCUMENTS=CadX.Net.SERVER+"/Interface/SearchDocuments.ashx";CadX.Net.SEARCH_FONTS=CadX.Net.SERVER+"/Interface/SearchFonts.ashx";CadX.Net.LIST_DOCUMENT_CATEGORY=CadX.Net.SERVER+"/Interface/ListDocumentCategories.ashx";CadX.Net.LIST_FONT_CATEGORY=CadX.Net.SERVER+"/Interface/ListFontCategories.ashx";CadX.Net.BROWSER_DIRECTORY=CadX.Net.SERVER+"/Interface/BrowserDirectory.ashx";CadX.Net.GENERATE_CUTOUTLINE=CadX.Net.SERVER+"/Interface/GenerateCutOutline.ashx";CadX.Net.STORE_IMAGE=CadX.Net.SERVER+"/Interface/ImageStore/StoreImage.ashx";CadX.Net.Response=function(A){this.success=false;this.errorMessage="Unreported Error";this.xmlResponse=null;if(A){this.parseServerResponse(A)}};CadX.Net.Response.prototype={parseServerResponse:function(A){try{this.xmlResponse=A;var C=Ext.DomQuery.selectValue("/@success",this.xmlResponse.documentElement,"false");if(C.toLowerCase()=="true"){this.success=true}else{this.success=false}this.errorMessage=Ext.DomQuery.selectValue("/error/@message",this.xmlResponse.documentElement,"")}catch(B){CadX.log(B);this.success=false;this.errorMessage=B.toString();this.xmlResponse=null}},getSuccess:function(){return this.success},setSuccess:function(A){this.success=A},getErrorMessage:function(){return this.errorMessage},setErrorMessage:function(A){this.errorMessage=A},getData:function(A){if(!A&&this.xmlResponse.documentElement.firstChild){return this.xmlResponse.documentElement.firstChild}else{return Ext.DomQuery.selectNode(A,this.xmlResponse.documentElement)}}};CadX.Net.request=function(B,E,F,D){try{if(!F||!D||!B){throw"CadX.Net.request : missing parameters"}return Ext.Ajax.request({url:B,params:E||{},method:"POST",success:CadX.Net.netSuccess,failure:CadX.Net.netFailure,responseCallback:F,responseScope:D})}catch(C){CadX.log(C);var A=new CadX.Net.Response();A.setSuccess(false);A.setErrorMessage(C.toString())}};CadX.Net.netSuccess=function(D,B){var A=new CadX.Net.Response();try{A.parseServerResponse(D.responseXML)}catch(C){CadX.log(C);A.setSuccess(false);A.setErrorMessage(C.toString())}finally{B.responseCallback.call(B.responseScope,A)}};CadX.Net.netFailure=function(D,B){var A=new CadX.Net.Response();try{A.setSuccess(false);A.setErrorMessage(D.status+":"+D.statusText+":"+D.responseText);CadX.log(A.errorMessage)}catch(C){CadX.log(C);A.setSuccess(false);A.setErrorMessage(C.toString())}finally{B.responseCallback.call(B.responseScope,A)}};CadX.Net.abort=function(A){if(A&&A!=null){CadX.log("abort transaction: "+CadX.dump(A));Ext.Ajax.abort(A)}};CadX.apply=function(B,A){Ext.apply(B,A)};CadX.BROWSER_NOT_SUPPORTED="Browser is unsupported.";CadX.CallbackArgs=function(){CadX.apply(this,args)};CadX.CallbackArgs.prototype={success:false,errorMessage:"None"};CadX.Document=function(){this.mId=null;this.mPath=null;this.mFigures=new Ext.util.MixedCollection();this.isStored=false;this.label="";this.notes="";this.category=0;this.addEvents({load:true});this.addEvents({saved:true});this.addEvents({figureadded:true});this.addEvents({figureremoved:true});this.addEvents({figurereplaced:true});this.addEvents({propertiesupdated:true});this.addEvents({zorderchanged:true});this.addEvents({renderstarted:true});this.addEvents({rendercomplete:true});this.addEvents({renderfailed:true});CadX.Document.superclass.constructor.call(this)};CadX.Document.fromXml=function(D){var C=new CadX.Document();for(var B=0;B<D.childNodes.length;++B){var A=D.childNodes[B];switch(A.nodeName){case"TextBlock":C.mFigures.add(CadX.TextBlockFigure.fromXml(A));break;case"Shape":C.mFigures.add(CadX.ShapeFigure.fromXml(A));break;case"Envelope":C.mFigures.add(CadX.EnvelopeFigure.fromXml(A));break}}return C};CadX.Document.toXml=function(C){var D=Sarissa.getDomDocument(null,"Cdl");for(var A=0;A<C.length;++A){C[A].buildXml(D.documentElement)}var B=new XMLSerializer();return B.serializeToString(D)};CadX.Document.SaveProperties=function(A,C,B){CadX.Net.request(CadX.Net.getUrl(CadX.Net.SAVE_DOCUMENT),A,C,B)};CadX.Document.Archive=function(B,C,A){CadX.Net.request(CadX.Net.getUrl(CadX.Net.ARCHIVE_DOCUMENT),{documentId:B},C,A)};CadX.Document.load=function(B,E,A){function C(F){if(F.getSuccess()==true){var G=CadX.Document.fromXml(F.getData("Cdl"));G.label=CadX.Xml.getTextContent(F.getData("label"));G.notes=CadX.Xml.getTextContent(F.getData("notes"));G.category=CadX.Xml.getTextContent(F.getData("category"));G.owner=(CadX.Xml.getTextContent(F.getData("owner")).toLowerCase()=="true")?true:false;if(G.owner){G.setId(B)}E.call(A,G,"")}else{CadX.log("document failed to load: "+CadX.dump(F));E.call(A,null,F.getErrorMessage())}}var D={documentId:B};CadX.Net.request(CadX.Net.getUrl(CadX.Net.LOAD_DOCUMENT),D,C,this)};Ext.extend(CadX.Document,Ext.util.Observable,{getId:function(){return this.mId},setId:function(A){this.mId=A},getPath:function(){return this.mPath},setPath:function(A){this.mPath=A},getIsStored:function(){return this.isStored},setIsStored:function(A){this.isStored=A},toXmlString:function(){return CadX.Document.toXml(this.mFigures.getRange())},fowardOne:function(A){for(var B=0;B<A.length;++B){var D=A[B];var C=this.mFigures.indexOf(D);if(C<(this.mFigures.getCount()-1)){this.mFigures.insert(C+2,D);this.mFigures.removeAt(C)}}this.fireEvent("zorderchanged",this.mFigures.getRange())},hide:function(){for(var A=0;A<this.mFigures.getCount();++A){this.mFigures.itemAt(A).hide=true}},show:function(){for(var A=0;A<this.mFigures.getCount();++A){this.mFigures.itemAt(A).hide=false}},backOne:function(A){for(var B=0;B<A.length;++B){var D=A[B];var C=this.mFigures.indexOf(D);if(C>0){this.mFigures.removeAt(C);this.mFigures.insert(C-1,D)}}this.fireEvent("zorderchanged",this.mFigures.getRange())},toBack:function(A){for(var B=0;B<A.length;++B){var D=A[B];var C=this.mFigures.indexOf(D);this.mFigures.removeAt(C);this.mFigures.insert(B,D)}this.fireEvent("zorderchanged",this.mFigures.getRange())},toFront:function(A){for(var B=0;B<A.length;++B){var D=A[B];var C=this.mFigures.indexOf(D);this.mFigures.removeAt(C);this.mFigures.add(D)}this.fireEvent("zorderchanged",this.mFigures.getRange())},render:function(C,H,E){var G=this.mFigures.getCount();var F=0;var B=0;function A(I){if(I.success){++F}else{++B}if((F+B)==G){if(B!=0){this.fireEvent("renderfailed",this)}else{if(H&&E){H.call(E)}this.fireEvent("rendercomplete",this)}}}this.fireEvent("renderstarted",this);if(G>0){for(var D=0;D<G;++D){this.mFigures.itemAt(D).render(A,this,C)}}else{if(H&&E){H.call(E)}this.fireEvent("rendercomplete",this)}},addFigureRange:function(A){this.mFigures.addAll(A);this.fireEvent("figureadded",A)},addFigure:function(A){this.addFigureRange([A])},replaceFigure:function(C,A){var B=this.mFigures.indexOf(C);this.mFigures.removeAt(B);this.mFigures.insert(B,A);this.fireEvent("figurereplaced",C,A)},removeFigures:function(A){for(var B=0;B<A.length;++B){this.mFigures.remove(A[B])}this.fireEvent("figureremoved",A)},clearFigures:function(A){var B=this.mFigures.getRange();this.mFigures.clear();this.fireEvent("figureremoved",B)},getFigureCount:function(){return this.mFigures.getCount()},getFigureIndex:function(A){return this.mFigures.indexOf(A)},getFigureAt:function(A){return this.mFigures.itemAt(A)},getFigures:function(){return this.mFigures.getRange()},getBounds:function(){return CadX.Geo.computeFigureBounds(this.getFigures())},onDocumentSaved:function(A){},updateProperties:function(A){if(A){this.label=A.label;this.notes=A.notes;this.category=A.category;this.fireEvent("propertiesupdated",this)}},saveAs:function(A,C,B){A.overwrite=false;this.save(A,C,B)},save:function(A,E,B){function C(F){if(F.getSuccess()){this.setIsStored(true);var G=Ext.DomQuery.selectValue("@id",F.getData());if(G&&G!=null){this.setId(G)}this.fireEvent("saved",this)}E.call(B,F)}if(A.label){this.label=A.label}if(A.notes){this.notes=A.notes}if(A.category){this.category=A.category}var D={label:this.label,notes:this.notes,category:this.category,document:this.toXmlString()};if(this.getId()!=null&&A.overwrite&&A.overwrite==true){D.documentId=this.getId()}CadX.apply(D,A);CadX.Net.request(CadX.Net.getUrl(CadX.Net.SAVE_DOCUMENT),D,C,this)}});CadX.Figure=function(B,A,C){CadX.Figure.superclass.constructor.call(this);this.mProcesses=new Ext.util.MixedCollection();this.brush={color:"FFFFFF"};this.pin={x:0,y:0,rX:0,rY:0};this.transform=new CadX.Geo.Matrix();this.bounds={lx:0,ly:0,hx:0,hy:0};this.baseline={x:0,y:0};this.isText=false;this.hide=false;this.renderId=null;this.renderTransId=null;this.renderType="all";this.addEvents({renderstarted:true});this.addEvents({rendercomplete:true});this.addEvents({renderfailed:true})};CadX.Figure.fromXml=function(E){CadX.Xml.applyXmlToObject(this.brush,E,"/Brush");this.pin.x=CadX.Xml.getFloat(E,"/Pin/@X",this.pin.x);this.pin.y=CadX.Xml.getFloat(E,"/Pin/@Y",this.pin.y);this.pin.rX=CadX.Xml.getFloat(E,"/Pin/@X",this.pin.x);this.pin.rY=CadX.Xml.getFloat(E,"/Pin/@Y",this.pin.y);var C=CadX.Xml.getString(E,"/Transform/@Matrix22","1,0,0,1");this.transform=CadX.Geo.Matrix.stringToMatrix22(C);var B=Ext.DomQuery.selectNode("/Processes",E);if(B!=null){for(var A=0;A<B.childNodes.length;++A){var D=B.childNodes[A];switch(D.nodeName){case"Contour":this.mProcesses.add(CadX.ContourProcess.fromXml(D));break;case"Shadow":this.mProcesses.add(CadX.ShadowProcess.fromXml(D));break;case"FitEnvelope":this.mProcesses.add(CadX.FitEnvelopeProcess.fromXml(D));break;case"FitEllipse":this.mProcesses.add(CadX.FitEllipseProcess.fromXml(D));break;case"Capital":this.mProcesses.add(CadX.CapitalProcess.fromXml(D));break;case"ClassicArc":this.mProcesses.add(CadX.ClassicArcProcess.fromXml(D));break;case"VerticalArch":this.mProcesses.add(CadX.VerticalArchProcess.fromXml(D));break;case"Split":this.mProcesses.add(CadX.SplitFrontProcess.fromXml(D));break;case"Border":this.mProcesses.add(CadX.BorderProcess.fromXml(D));break}}}};Ext.extend(CadX.Figure,Ext.util.Observable,{clone:function(){var C=this.toXmlString();var B=(new DOMParser()).parseFromString(C,"text/xml");var D=CadX.Document.fromXml(B.documentElement);var A=D.getFigureAt(0);return A},getColorRegions:function(B){B.push({id:this,color:this.brush.color,description:"Figure Color"});for(var A=0;A<this.mProcesses.getCount();++A){this.mProcesses.itemAt(A).getColorRegions(B)}},setColorRegions:function(C){var A=C.getColorById(this);if(A!=null){this.brush.color=A}for(var B=0;B<this.mProcesses.getCount();++B){this.mProcesses.itemAt(B).setColorRegions(C)}this.invalidateAll()},isRendered:function(){return this.renderType=="none"},invalidateAll:function(){this.renderType="all"},invalidateTransform:function(){if(this.renderType!="all"){this.renderType="transform"}},invalidateScale:function(){if(this.renderType!="all"&&this.renderType!="transform"){this.renderType="scale"}},invalidateZoom:function(){if(this.renderType!="all"&&this.renderType!="transform"&&this.renderType!="scale"){this.renderType="zoom"}},invalidateTranslate:function(){if(this.renderType!="all"&&this.renderType!="transform"&&this.renderType!="scale"&&this.renderType!="zoom"){this.renderType="translate"}},getRenderType:function(){return this.renderType},render:function(D,C,B){var A={renderType:this.getRenderType()};CadX.apply(A,B);switch(A.renderType){case"all":this.fireRenderStarted();this.doRender(false,D,C,A);break;case"transform":this.fireRenderStarted();this.doRender(true,D,C,A);break;default:this.fireRenderStarted();this.fireRenderSuccess(D,C,A);break}},getRenderParams:function(){return"&id="+this.renderId+"&pinX="+this.pin.x.toFixed(3)+"&pinY="+this.pin.y.toFixed(3)+"&matrix22="+this.transform.toMatrix22String()},getRenderCacheUrl:function(C){var A={zoom:1};CadX.apply(A,C);CadX.assert(this.renderId!=null);var B=CadX.Net.getUrl(CadX.Net.RENDER_CACHEDOUTPUT,this.getRenderParams()+"&zoom="+A.zoom+"&nocache="+new Date().getTime());return B},fireRenderSuccess:function(D,C,B){this.renderType="none";var A={success:true,errorMessage:"No Error",figure:this,url:this.getRenderCacheUrl(B),renderArgs:B};if(D&&C){D.call(C,A)}this.fireEvent("rendercomplete",A)},fireRenderFailure:function(D,C,B){var A={success:false,errorMessage:B,figure:this};if(D&&C){D.call(C,A)}this.fireEvent("renderfailed",A)},fireRenderStarted:function(){var A={success:true,errorMessage:"No Error",figure:this};this.fireEvent("renderstarted",A)},doRender:function(C,F,D,B){function A(G){this.renderTransId=null;if(G.getSuccess()==true){try{this.parseRenderResponse(G.getData());this.fireRenderSuccess(F,D,B)}catch(H){CadX.log(H);this.fireRenderFailure(F,D,H)}}else{this.fireRenderFailure(F,D,G.getErrorMessage())}}if(C){CadX.Net.abort(this.renderTransId);this.renderTransId=CadX.Net.request(CadX.Net.getUrl(CadX.Net.RENDER_FIGURETRANSFORM),this.getRenderParams(),A,this)}else{var E={figure:this.toXmlString()};if(this.renderId!=null){E.id=this.renderId}CadX.Net.abort(this.renderTransId);this.renderTransId=CadX.Net.request(CadX.Net.getUrl(CadX.Net.RENDER_FIGURE),E,A,this)}},parseRenderResponse:function(A){var B=Ext.DomQuery.selectValue("/@id",A);CadX.assert(B!=null);this.renderId=B;this.baseline.x=CadX.Xml.getFloat(A,"/baseline/@x",0);this.baseline.y=CadX.Xml.getFloat(A,"/baseline/@y",0);this.bounds.lx=CadX.Xml.getFloat(A,"/bounds/@lx",0);this.bounds.ly=CadX.Xml.getFloat(A,"/bounds/@ly",0);this.bounds.hx=CadX.Xml.getFloat(A,"/bounds/@hx",0);this.bounds.hy=CadX.Xml.getFloat(A,"/bounds/@hy",0)},toXmlString:function(){var B=Sarissa.getDomDocument(null,"Cdl");this.buildXml(B.documentElement);var A=(new XMLSerializer()).serializeToString(B.documentElement);return A},buildXml:function(A){CadX.Xml.appendObjectToXml(A,this.brush,"Brush");CadX.Xml.appendObjectToXml(A,this.pin,"Pin");var D=CadX.Xml.appendElement(A,"Transform");D.setAttribute("Matrix22",this.transform.toMatrix22String());if(this.mProcesses.getCount()>0){var C=A.ownerDocument.createElement("Processes");A.appendChild(C);for(var B=0;B<this.mProcesses.getCount();++B){this.mProcesses.itemAt(B).buildXml(C)}}},addProcessesFromFigure:function(B){var F=B.clone();var C=false;var E=F.getProcesses();for(var A=0;A<E.length;++A){var D=E[A];if(!this.addProcess(D)){C=true}}return !C},replaceProcessesFromFigure:function(A){this.clearProcesses();this.addProcessesFromFigure(A)},validProcessStack:function(B,E){var A=this.mProcesses.clone();A.insert(B,E);var D=true;for(var C=0;C<A.length;++C){if(!(((!A.itemAt(C).requiresText)||(A.itemAt(C).requiresText&&C==0&&this.isText)||(A.itemAt(C).requiresText&&C>0&&A.itemAt(C-1).outputsText))&&A.itemAt(C).canTarget(this))){D=false}}return D},insertProcess:function(A,B){CadX.assert(A<=this.mProcesses.getCount()&&A>=0);if(this.validProcessStack(A,B)){B.ownerFigure=this;this.mProcesses.insert(A,B);this.invalidateAll();return true}else{return false}},addProcess:function(A){return this.insertProcess(this.mProcesses.getCount(),A)},removeProcess:function(A){if(this.mProcesses.contains(A)){this.mProcesses.remove(A);return true}else{return false}},clearProcesses:function(){this.mProcesses.clear();this.invalidateAll()},getProcesses:function(){return this.mProcesses.getRange()},setBrush:function(A){if(A.color){this.brush.color=A.color;this.invalidateAll()}},getBrush:function(){return this.brush},setPin:function(A){this.pin=A;this.invalidateTranslate()},getPin:function(){return this.pin},setSize:function(A,C,F){var B=this.bounds.hx-this.bounds.lx;var D=this.bounds.hy-this.bounds.ly;var G=A/B;var E=C/D;if(F){if(B>D){E=G}else{G=E}}this.scaleFrom(this.pin,G,E)},translate:function(B,A){var C=CadX.Geo.Matrix.translate(B,A);C.transformPoints([this.pin]);C.transformBounds(this.bounds);C.transformPoints([this.baseline]);this.invalidateTranslate()},scaleFrom:function(A,D,C){var B=CadX.Geo.Matrix.scaleFrom(A,D,C);B.transformPoints([this.pin]);this.transform=CadX.Geo.Matrix.concat(CadX.Geo.Matrix.scale(D,C),this.transform);B.transformBounds(this.bounds);B.transformPoints([this.baseline]);this.invalidateScale()},rotateAround:function(A,C){var B=CadX.Geo.Matrix.rotateAround(A,CadX.Geo.deg2rad(C));B.transformPoints([this.pin]);this.transform=CadX.Geo.Matrix.concat(CadX.Geo.Matrix.rotate(CadX.Geo.deg2rad(C)),this.transform);this.invalidateTransform()},shearAround:function(A,D,C){var B=CadX.Geo.Matrix.shearAround(A,D,C);B.transformPoints([this.pin]);this.transform=CadX.Geo.Matrix.concat(CadX.Geo.Matrix.shear(D,C),this.transform);this.invalidateTransform()},resetTransform:function(){this.transform=new CadX.Geo.Matrix();this.invalidateTransform()},getBounds:function(){return this.bounds}});CadX.ShapeFigure=function(A){CadX.ShapeFigure.superclass.constructor.call(this,A)};CadX.ShapeFigure.fromXml=function(C){var A=new CadX.ShapeFigure();var B=(new XMLSerializer()).serializeToString(C);A.shapeFragment=(new DOMParser()).parseFromString(B,"text/xml");CadX.Figure.fromXml.call(A,C);return A};Ext.extend(CadX.ShapeFigure,CadX.Figure,{shapeFragment:null,buildXml:function(A){var D=A.ownerDocument.createElement("Shape");A.appendChild(D);CadX.ShapeFigure.superclass.buildXml.call(this,D);var B=this.getPolyregionNodes();for(var C=0;C<B.length;++C){CadX.Xml.importNode(D,B[C],true)}},setBrush:function(B){if(B.color){var A=this.getBrushNodes();this.brush.color=B.color;for(var C=0;C<A.length;++C){A[C].setAttribute("Color",B.color);A[C].setAttribute("Alpha",255)}this.invalidateAll()}},getColorRegions:function(C){CadX.ShapeFigure.superclass.getColorRegions.call(this,C);var A=this.getBrushNodes();for(var B=0;B<A.length;++B){C.push({id:A[B],color:A[B].getAttribute("Color"),description:"Shape Region"})}},setColorRegions:function(D){CadX.ShapeFigure.superclass.setColorRegions.call(this,D);var A=this.getBrushNodes();for(var C=0;C<A.length;++C){var B=D.getColorById(A[C]);if(B!=null){A[C].setAttribute("Color",B)}}this.invalidateAll()},getPolyregionNodes:function(){return Ext.DomQuery.select("Polyregion",this.shapeFragment.documentElement)},getBrushNodes:function(){var A=[];var C=this.getPolyregionNodes();for(var D=0;D<C.length;++D){var B=Ext.DomQuery.select("Brush",C[D]);A=A.concat(B)}return A}});CadX.TextBlockFigure=function(){CadX.TextBlockFigure.superclass.constructor.call(this);this.mText="Sample";this.mFont={guid:"2e0ad4c9-d303-4e8b-88b9-0a39725e015f",name:"VX Problock",style:"Regular",size:50.8,spacing:0};this.lineDirection=0;this.charDirection=0;this.isText=true;this.setBrush({color:"000000"})};CadX.TextBlockFigure.fromXml=function(B){var A=new CadX.TextBlockFigure();A.lineDirection=CadX.Xml.getFloat(B,"@LineDirection",0);A.charDirection=CadX.Xml.getFloat(B,"@CharDirection",0);A.mText=CadX.Xml.getTextContent(B,"/Line");CadX.Xml.applyXmlToObject(A.mFont,B,"/Font");CadX.Figure.fromXml.call(A,B);return A};Ext.extend(CadX.TextBlockFigure,CadX.Figure,{buildXml:function(A){var B=A.ownerDocument.createElement("TextBlock");var D=A.ownerDocument.createElement("Line");var C=A.ownerDocument.createTextNode(this.mText);A.appendChild(B);B.appendChild(D);D.appendChild(C);B.setAttribute("LineDirection",this.lineDirection);CadX.Xml.appendObjectToXml(B,this.mFont,"Font");CadX.TextBlockFigure.superclass.buildXml.call(this,B)},setLine:function(A){this.mText=A;this.invalidateAll()},getLine:function(){return this.mText},setSpacing:function(A){this.mFont.spacing=A;this.invalidateAll()},getSpacing:function(){return this.mFont.spacing},setLineDirection:function(A){this.lineDirection=A;this.invalidateAll()},getLineDirection:function(){return this.lineDirection},setCharDirection:function(A){this.charDirection=A;this.invalidateAll()},getCharDirection:function(){return this.charDirection},setFont:function(A){if(A.guid){this.mFont.guid=A.guid}if(A.name){this.mFont.name=A.name}if(A.style){this.mFont.style=A.style}if(A.size){this.mFont.size=A.size}this.invalidateAll()},getFont:function(){return this.mFont}});CadX.EnvelopeFigure=function(){CadX.EnvelopeFigure.superclass.constructor.call(this)};CadX.EnvelopeFigure.fromXml=function(B){var A=new CadX.EnvelopeFigure();if(typeof B=="string"){A.envelopeXml=B}else{A.envelopeXml=(new XMLSerializer()).serializeToString(B)}return A};Ext.extend(CadX.EnvelopeFigure,CadX.Figure,{envelopeXml:null,buildXml:function(A){var B=(new DOMParser()).parseFromString(this.envelopeXml,"text/xml");Sarissa.copyChildNodes(B,A,true)}});CadX.Process=function(){CadX.Process.superclass.constructor.call(this);this.attr={};this.requiresText=false;this.outputsText=false};CadX.Process.fromXml=function(B,A){};Ext.extend(CadX.Process,Ext.util.Observable,{buildXml:function(A){},canTarget:function(A){return true},setAttr:function(A){Ext.apply(this.attr,A)},getAttr:function(){return this.attr},getColorRegions:function(A){},setColorRegions:function(A){}});CadX.ShadowProcess=function(){CadX.ShadowProcess.superclass.constructor.call(this);CadX.apply(this.attr,{offsetX:0,offsetY:0,gap:0,simplify:false});this.brush={color:"000000"}};CadX.ShadowProcess.fromXml=function(A){var B=new CadX.ShadowProcess();CadX.Xml.applyXmlToObject(B.attr,A);CadX.Xml.applyXmlToObject(B.brush,A,"/Brush");B.attr.simplify=CadX.Xml.ConvertBool(B.attr.simplify);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.ShadowProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"Shadow");CadX.Xml.appendObjectToXml(B,this.brush,"Brush");CadX.ShadowProcess.superclass.buildXml.call(this,B)},setBrush:function(A){Ext.apply(this.brush,A)},getBrush:function(){return this.brush},getColorRegions:function(A){A.push({id:this,color:this.brush.color,description:"Shadow Color"})},setColorRegions:function(B){var A=B.getColorById(this);if(A!=null){this.brush.color=A}}});CadX.ContourProcess=function(){CadX.ContourProcess.superclass.constructor.call(this);CadX.apply(this.attr,{offset:0,steps:parseInt("1"),inside:false,outside:true,includeHoles:true,combine:false});this.brush={color:"000000"}};CadX.ContourProcess.fromXml=function(A){var B=new CadX.ContourProcess();CadX.Xml.applyXmlToObject(B.attr,A);CadX.Xml.applyXmlToObject(B.brush,A,"/Brush");B.attr.inside=CadX.Xml.ConvertBool(B.attr.inside);B.attr.outside=CadX.Xml.ConvertBool(B.attr.outside);B.attr.includeHoles=CadX.Xml.ConvertBool(B.attr.includeHoles);B.attr.combine=CadX.Xml.ConvertBool(B.attr.combine);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.ContourProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"Contour");CadX.Xml.appendObjectToXml(B,this.brush,"Brush");CadX.ContourProcess.superclass.buildXml.call(this,B)},setBrush:function(A){Ext.apply(this.brush,A)},getBrush:function(){return this.brush},getColorRegions:function(A){A.push({id:this,color:this.brush.color,description:"Contour Color"})},setColorRegions:function(B){var A=B.getColorById(this);if(A!=null){this.brush.color=A}}});CadX.FitEnvelopeProcess=function(){CadX.FitEnvelopeProcess.superclass.constructor.call(this);CadX.apply(this.attr,{vPos:"Stretched",hPos:"Stretched"});this.envelope=null};CadX.FitEnvelopeProcess.fromXml=function(A){var B=new CadX.FitEnvelopeProcess();var C=Ext.DomQuery.selectNode("/Envelope",A);B.envelope=CadX.EnvelopeFigure.fromXml(C);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.FitEnvelopeProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"FitEnvelope");this.envelope.buildXml(B);CadX.FitEnvelopeProcess.superclass.buildXml.call(this,B)},setEnvelope:function(A){this.envelope=A},getEnvelope:function(){return this.envelope}});CadX.SplitFrontProcess=function(){CadX.SplitFrontProcess.superclass.constructor.call(this);CadX.apply(this.attr,{overlap:0,pos:0.5,turn:0,gap:10})};CadX.SplitFrontProcess.fromXml=function(A){var B=new CadX.SplitFrontProcess();B.attr.overlap=CadX.Xml.getFloat(A,"@Overlap",B.attr.overlap);B.attr.pos=CadX.Xml.getFloat(A,"@Pos",B.attr.pos);B.attr.turn=CadX.Xml.getFloat(A,"@Turn",B.attr.turn);B.attr.gap=CadX.Xml.getFloat(A,"@Gap",B.attr.gap);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.SplitFrontProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"Split");CadX.SplitFrontProcess.superclass.buildXml.call(this,B)}});CadX.FitEllipseProcess=function(){CadX.FitEllipseProcess.superclass.constructor.call(this);CadX.apply(this.attr,{height:0,width:0,rotation:0,placement:90,mirror:false,inside:true,dontRotate:true,fit:"None"});this.requiresText=true;this.outputsText=false};CadX.FitEllipseProcess.fromXml=function(A){var B=new CadX.FitEllipseProcess();B.attr.height=CadX.Xml.getFloat(A,"@Height",B.attr.height);B.attr.width=CadX.Xml.getFloat(A,"@Width",B.attr.width);B.attr.rotation=CadX.Xml.getFloat(A,"@Rotation",B.attr.rotation);B.attr.placement=CadX.Xml.getFloat(A,"@Placement",B.attr.placement);B.attr.mirror=CadX.Xml.getBool(A,"@Mirror",B.attr.mirror);B.attr.inside=CadX.Xml.getBool(A,"@Inside",B.attr.inside);B.attr.dontRotate=CadX.Xml.getBool(A,"@DontRotate",B.attr.dontRotate);B.attr.fit=CadX.Xml.getString(A,"@Fit",B.attr.fit);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.FitEllipseProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"FitEllipse");CadX.FitEllipseProcess.superclass.buildXml.call(this,B)}});CadX.VerticalArchProcess=function(){CadX.VerticalArchProcess.superclass.constructor.call(this);CadX.apply(this.attr,{height:0,width:0,from:170,to:10})};CadX.VerticalArchProcess.fromXml=function(A){var B=new CadX.VerticalArchProcess();B.attr.height=CadX.Xml.getFloat(A,"@Height",B.attr.height);B.attr.width=CadX.Xml.getFloat(A,"@Width",B.attr.width);B.attr.from=CadX.Xml.getFloat(A,"@From",B.attr.from);B.attr.to=CadX.Xml.getFloat(A,"@To",B.attr.to);return B};Ext.extend(CadX.VerticalArchProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"VerticalArch");CadX.VerticalArchProcess.superclass.buildXml.call(this,B)}});CadX.ClassicArcProcess=function(){CadX.ClassicArcProcess.superclass.constructor.call(this);CadX.apply(this.attr,{height:0,width:0,from:160,to:20,dontRotate:false});this.requiresText=true;this.outputsText=false};CadX.ClassicArcProcess.fromXml=function(A){var B=new CadX.ClassicArcProcess();B.attr.height=CadX.Xml.getFloat(A,"@Height",B.attr.height);B.attr.width=CadX.Xml.getFloat(A,"@Width",B.attr.width);B.attr.from=CadX.Xml.getFloat(A,"@From",B.attr.from);B.attr.to=CadX.Xml.getFloat(A,"@To",B.attr.to);B.attr.dontRotate=CadX.Xml.getBool(A,"@DontRotate",B.attr.dontRotate);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.ClassicArcProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"ClassicArc");CadX.ClassicArcProcess.superclass.buildXml.call(this,B)}});CadX.CapitalProcess=function(){CadX.CapitalProcess.superclass.constructor.call(this);CadX.apply(this.attr,{scaleX:1,scaleY:2,pattern:"First Last",vAlignment:"Baseline",hAlignment:"Center"});this.requiresText=true;this.outputsText=true};CadX.CapitalProcess.fromXml=function(A){var B=new CadX.CapitalProcess();B.attr.scaleX=CadX.Xml.getFloat(A,"@Scale",B.attr.scaleX);B.attr.scaleY=CadX.Xml.getFloat(A,"@ScaleY",B.attr.scaleY);B.attr.pattern=CadX.Xml.getString(A,"@Pattern",B.attr.pattern);B.attr.vAlignment=CadX.Xml.getString(A,"@VAlignment",B.attr.vAlignment);B.attr.hAlignment=CadX.Xml.getString(A,"@HAlignment",B.attr.hAlignment);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.CapitalProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"Capital");CadX.CapitalProcess.superclass.buildXml.call(this,B)}});CadX.BorderProcess=function(){CadX.BorderProcess.superclass.constructor.call(this);CadX.apply(this.attr,{dX:10,dY:10})};CadX.BorderProcess.fromXml=function(A){var B=new CadX.BorderProcess();CadX.Xml.applyXmlToObject(B.attr,A);CadX.Process.fromXml(B,A);return B};Ext.extend(CadX.BorderProcess,CadX.Process,{buildXml:function(A){var B=CadX.Xml.appendObjectToXml(A,this.attr,"Border");CadX.BorderProcess.superclass.buildXml.call(this,B)}});Ext.form.ColorField=function(A){Ext.form.ColorField.superclass.constructor.call(this,A);this.on("render",this.handleRender)};Ext.extend(Ext.form.ColorField,Ext.form.TriggerField,{editable:false,showHexValue:true,triggerClass:"x-form-color-trigger",defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off",maxlength:"6"},lengthText:"Color hex values must be either 3 or 6 characters.",blankText:"Must have a hexidecimal value in the format ABCDEF.",maskRe:/[a-f0-9]/i,regex:/[a-f0-9]/i,curColor:"ffffff",validateValue:function(A){return true},validateBlur:function(){return !this.menu||!this.menu.isVisible()},markInvalid:function(A){Ext.form.ColorField.superclass.markInvalid.call(this,A);this.el.setStyle({"background-image":"url(../lib/resources/images/default/grid/invalid_line.gif)"})},setValue:function(A){this.el.setStyle({"background-color":"#"+A,"background-image":"none"});if(parseInt(A,16)<parseInt("C0C0C0",16)){this.el.setStyle({color:"#ffffff"})}else{this.el.setStyle({color:"#000000"})}if(!this.showHexValue){this.el.setStyle({"text-indent":"-100px"});if(Ext.isIE){this.el.setStyle({"margin-left":"100px"})}}Ext.form.ColorField.superclass.setValue.call(this,A)},setEditable:function(A){if(A==this.editable){return }this.editable=A;if(!A){this.el.dom.setAttribute("readOnly",true);this.el.on("mousedown",this.onTriggerClick,this);this.el.addClass("x-combo-noedit")}else{this.el.dom.setAttribute("readOnly",false);this.el.un("mousedown",this.onTriggerClick,this);this.el.removeClass("x-combo-noedit")}},handleRender:function(){if(!this.editable){this.editable=true;this.setEditable(false)}},menuListeners:{select:function(A,B){this.setValue(B)},show:function(){this.onFocus()},hide:function(){this.focus();var A=this.menuListeners;this.menu.un("select",A.select,this);this.menu.un("show",A.show,this);this.menu.un("hide",A.hide,this)}},handleSelect:function(B,A){this.setValue(A)},onTriggerClick:function(){if(this.disabled){return }if(this.menu==null){this.menu=new Ext.menu.ColorMenu();this.menu.palette.on("select",this.handleSelect,this)}this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.show(this.el,"tl-bl?")}});CadX.Controls.FontBox=Ext.extend(Ext.form.TriggerField,{font:null,allowBlur:false,initComponent:function(){CadX.Controls.FontBox.superclass.initComponent.call(this);this.fontBrowser=new CadX.Dialog.FontBrowser()},onTriggerClick:function(){if(!this.disabled){this.fontBrowser.show({callback:this.onFontSelected,initPath:"/Search/All",scope:this})}},setValue:function(B,A){if(B){this.font=B;this.setRawValue(B.name+"("+B.style+")");if(!A){this.fireEvent("valid",this)}}else{this.setRawValue("")}},getValue:function(){return this.font},onFontSelected:function(A){if(A!=null){this.setValue(A)}}});CadX.Controls.Spinner=function(A){CadX.Controls.Spinner.superclass.constructor.call(this,A);this.addEvents({spinup:true,clickdown:true})};Ext.extend(CadX.Controls.Spinner,Ext.form.TriggerField,{triggerClass:"x-form-spinner-trigger",splitterClass:"x-form-spinner-splitter",strategy:undefined,msgTarget:"side",allowDecimal:true,preventMark:true,onRender:function(B,A){CadX.Controls.Spinner.superclass.onRender.call(this,B,A);this.wrap.setStyle("margin-right","5px");this.initSpinner();this.preventMark=false},initTrigger:Ext.emptyFn,initSpinner:function(){this.keyNav=new Ext.KeyNav(this.el,{up:function(A){this.onSpinUp()},down:function(A){this.onSpinDown()},pageUp:function(A){this.onSpinUpAlternate()},pageDown:function(A){this.onSpinDownAlternate()},scope:this});this.repeater=new Ext.util.ClickRepeater(this.trigger.dom);this.repeater.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.on("mouseover",this.onMouseOver,this,{preventDefault:true});this.trigger.on("mouseout",this.onMouseOut,this,{preventDefault:true});this.trigger.on("mousemove",this.onMouseMove,this,{preventDefault:true});this.trigger.on("mousedown",this.onMouseDown,this,{preventDefault:true});this.trigger.on("mouseup",this.onMouseUp,this,{preventDefault:true});this.wrap.on("mousewheel",this.handleMouseWheel,this);if(this.strategy==undefined){this.strategy=new CadX.Controls.Spinner.NumberStrategy()}},initTrigger:function(){CadX.Controls.Spinner.superclass.initTrigger.call(this);this.trigger.on("click",function(C){if(this.disabled){return }var B=this.getMiddle();var A=(C.getPageY()<B)?"Up":"Down";this["onSpin"+A]()},this,{preventDefault:true})},onMouseOver:function(){if(this.disabled){return }var A=this.getMiddle();this.__tmphcls=(Ext.EventObject.getPageY()<A)?"x-form-spinner-overup":"x-form-spinner-overdown";this.trigger.addClass(this.__tmphcls)},onMouseOut:function(){this.trigger.removeClass(this.__tmphcls)},onMouseMove:function(){if(this.disabled){return }var A=this.getMiddle();if(((Ext.EventObject.getPageY()>A)&&this.__tmphcls=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<A)&&this.__tmphcls=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return }var A=this.getMiddle();this.__tmpccls=(Ext.EventObject.getPageY()<A)?"x-form-spinner-clickup":"x-form-spinner-clickdown";this.trigger.addClass(this.__tmpccls)},onMouseUp:function(){this.trigger.removeClass(this.__tmpccls)},getMiddle:function(){var B=this.trigger.getTop();var C=this.trigger.getHeight();var A=B+(C/2);return A},handleMouseWheel:function(A){var B=A.getWheelDelta();if(B>0){this.onSpinUp();A.stopEvent()}else{if(B<0){this.onSpinDown();A.stopEvent()}}},onSpinUp:function(){if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return }else{this.strategy.onSpinUp(this)}this.fireEvent("spinup",this)},onSpinDown:function(){if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return }else{this.strategy.onSpinDown(this)}this.fireEvent("spindown",this)},onSpinUpAlternate:function(){this.strategy.onSpinUpAlternate(this);this.fireEvent("spinup",this)},onSpinDownAlternate:function(){this.strategy.onSpinDownAlternate(this);this.fireEvent("spindown",this)},validateValue:function(A){if(isNaN(A)){this.markInvalid("Not a Number");return false}else{if(A<this.strategy.minValue){this.markInvalid("Value needs to be larger than "+CadX.designer.units.toDisplayString(this.strategy.minValue));return false}else{if(A>this.strategy.maxValue){this.markInvalid("Value needs to be smaller than "+CadX.designer.units.toDisplayString(this.strategy.maxValue));return false}else{return true}}}},setValue:function(B){var A;if(this.allowDecimal){A=parseFloat(B).toFixed(2)}else{A=parseInt(B)}CadX.Controls.Spinner.superclass.setValue.call(this,A)}});CadX.Controls.Spinner.Strategy=function(A){Ext.apply(this,A)};Ext.extend(CadX.Controls.Spinner.Strategy,Ext.util.Observable,{defaultValue:0,minValue:undefined,maxValue:undefined,incrementValue:1,alternateIncrementValue:5,onSpinUp:function(A){},onSpinDown:function(A){},onSpinUpAlternate:function(A){},onSpinDownAlternate:function(A){},fixBoundries:function(A){}});CadX.Controls.Spinner.UnitStrategy=function(A){CadX.Controls.Spinner.UnitStrategy.superclass.constructor.call(this,A)};Ext.extend(CadX.Controls.Spinner.UnitStrategy,CadX.Controls.Spinner.Strategy,{onSpinUp:function(A){this.spinNumber(A,false,false)},onSpinDown:function(A){this.spinNumber(A,true,false)},onSpinUpAlternate:function(A){this.spinNumber(A,false,true)},onSpinDownAlternate:function(A){this.spinNumber(A,true,true)},spinNumber:function(B,E,C){var A=parseFloat(B.getValue());var D=(C==true)?this.alternateIncrementValue:this.incrementValue;A=(isNaN(A)||Ext.isEmpty(A))?this.defaultValue:A;(E==true)?A-=D:A+=D;A=this.fixBoundries(A);B.setValue(A)},fixBoundries:function(B){var A=B;if(this.minValue!=undefined&&CadX.designer.units.toDocument(A)<this.minValue){A=CadX.designer.units.toUser(this.minValue)}if(this.maxValue!=undefined&&CadX.designer.units.toDocument(A)>this.maxValue){A=CadX.designer.units.toUser(this.maxValue)}return A}});CadX.Controls.Spinner.NumberStrategy=function(A){CadX.Controls.Spinner.NumberStrategy.superclass.constructor.call(this,A)};Ext.extend(CadX.Controls.Spinner.NumberStrategy,CadX.Controls.Spinner.Strategy,{onSpinUp:function(A){this.spinNumber(A,false,false)},onSpinDown:function(A){this.spinNumber(A,true,false)},onSpinUpAlternate:function(A){this.spinNumber(A,false,true)},onSpinDownAlternate:function(A){this.spinNumber(A,true,true)},spinNumber:function(B,E,C){var A=parseFloat(B.getValue());var D=(C==true)?this.alternateIncrementValue:this.incrementValue;A=(isNaN(A)||Ext.isEmpty(A))?this.defaultValue:A;(E==true)?A-=D:A+=D;A=this.fixBoundries(A);B.setValue(A)},fixBoundries:function(B){var A=B;if(this.minValue!=undefined&&A<this.minValue){A=this.minValue}if(this.maxValue!=undefined&&A>this.maxValue){A=this.maxValue}return A}});CadX.Controls.Spinner.DateStrategy=function(A){CadX.Controls.Spinner.DateStrategy.superclass.constructor.call(this,A)};Ext.extend(CadX.Controls.Spinner.DateStrategy,CadX.Controls.Spinner.Strategy,{defaultValue:new Date(),format:"Y-m-d",incrementValue:1,incrementConstant:Date.DAY,alternateIncrementValue:1,alternateIncrementConstant:Date.MONTH,onSpinUp:function(A){this.spinDate(A,false,false)},onSpinDown:function(A){this.spinDate(A,true,false)},onSpinUpAlternate:function(A){this.spinDate(A,false,true)},onSpinDownAlternate:function(A){this.spinDate(A,true,true)},spinDate:function(D,G,E){var A=D.getValue();var C=(G==true)?-1:1;var F=(E==true)?this.alternateIncrementValue:this.incrementValue;var B=(E==true)?this.alternateIncrementConstant:this.incrementConstant;A=(Ext.isEmpty(A))?this.defaultValue:Date.parseDate(A,this.format);A=A.add(B,C*F);A=this.fixBoundries(A);D.setValue(A.format(this.format))},fixBoundries:function(B){var D=B;var C=(typeof this.minValue=="string")?Date.parseDate(this.minValue,this.format):this.minValue;var A=(typeof this.maxValue=="string")?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&D<C){D=C}if(this.maxValue!=undefined&&D>A){D=A}return D}});CadX.Controls.Spinner.TimeStrategy=function(A){CadX.Controls.Spinner.TimeStrategy.superclass.constructor.call(this,A)};Ext.extend(CadX.Controls.Spinner.TimeStrategy,CadX.Controls.Spinner.Strategy,{defaultValue:new Date(),format:"H:i",incrementValue:1,incrementConstant:Date.MINUTE,alternateIncrementValue:1,alternateIncrementConstant:Date.HOUR,onSpinUp:function(A){this.spinTime(A,false,false)},onSpinDown:function(A){this.spinTime(A,true,false)},onSpinUpAlternate:function(A){this.spinTime(A,false,true)},onSpinDownAlternate:function(A){this.spinTime(A,true,true)},spinTime:function(D,G,E){var A=D.getValue();var B=(G==true)?-1:1;var F=(E==true)?this.alternateIncrementValue:this.incrementValue;var C=(E==true)?this.alternateIncrementConstant:this.incrementConstant;A=(Ext.isEmpty(A))?this.defaultValue:Date.parseDate(A,this.format);A=A.add(C,B*F);A=this.fixBoundries(A);D.setValue(A.format(this.format))},fixBoundries:function(D){var C=D;var B=(typeof this.minValue=="string")?Date.parseDate(this.minValue,this.format):this.minValue;var A=(typeof this.maxValue=="string")?Date.parseDate(this.maxValue,this.format):this.maxValue;if(this.minValue!=undefined&&C<B){C=B}if(this.maxValue!=undefined&&C>A){C=A}return C}});CadX.Controls.UnitSpinner=function(A){CadX.Controls.UnitSpinner.superclass.constructor.call(this,A);CadX.designer.units.on("unitchanged",this.onUnitChanged,this)};Ext.extend(CadX.Controls.UnitSpinner,CadX.Controls.Spinner,{validationDelay:250,cls:"cadx-unit-spinner",emptyText:"nothing selected",validateValue:function(B){var A=CadX.designer.units.toDocument(B);return CadX.Controls.UnitSpinner.superclass.validateValue.call(this,A)},initValue:function(){if(this.documentValue!=undefined){this.setDocumentValue(this.documentValue)}},onUnitChanged:function(C,A,B){var D=CadX.designer.units.updateUser(A,this.getValue());this.setRawValue(D);this.removeClass("cadx-unit-"+A);this.addClass("cadx-unit-"+B)},setDocumentValue:function(A){if(!isNaN(A)){this.setValue(CadX.designer.units.toUser(A))}},setRawDocumentValue:function(A){if(!isNaN(A)){this.setRawValue(CadX.designer.units.toUser(A))}},getDocumentValue:function(){return CadX.designer.units.toDocument(this.getValue())}});CadX.Controls.PercentSpinner=function(A){CadX.Controls.PercentSpinner.superclass.constructor.call(this,A)};Ext.extend(CadX.Controls.PercentSpinner,CadX.Controls.Spinner,{validationDelay:250,emptyText:"nothing selected",getDecimalValue:function(){return this.getValue()/100},setDecimalValue:function(A){this.setValue(A*100)},validateValue:function(A){if(isNaN(A)){this.markInvalid("Not a Number");return false}else{if(A<this.strategy.minValue){this.markInvalid("Value needs to be larger than "+this.strategy.minValue+"%");return false}else{if(A>this.strategy.maxValue){this.markInvalid("Value needs to be smaller than "+this.strategy.maxValue+"%");return false}else{return true}}}}});CadX.Mask=function(A){this.el=typeof A=="string"?Ext.get(A):A;this.isVisible=false;this.show=function(B){var C=this.el,H=B.callback,E=B.clickToHide,G=B.msg,D="";if(!B.msgCls&&B.type){D="cadx-mask-"+B.type}else{D=B.msgCls}if(C.getStyle("position")=="static"){C.setStyle("position","relative")}if(C._maskMsg){C._maskMsg.remove()}if(C._mask){C._mask.remove()}C._mask=Ext.DomHelper.append(C.dom,{cls:"ext-el-mask"},true);C.addClass("x-masked");C._mask.setDisplayed(true);if(typeof G=="string"){if(B.type==="alert"){G="<p><b>Alert!</b></p><p>"+G+"</p>"}else{if(B.type==="progress"){G="<p><b>Please Wait</b></p><p>"+G+"</p>"}}if(E){G=G+'<p class="cadx-mask-close">Click to close</p>'}C._maskMsg=Ext.DomHelper.append(C.dom,{cls:"ext-el-mask-msg",cn:{tag:"div"}},true);var F=C._maskMsg;F.dom.className=D?"ext-el-mask-msg "+D:"ext-el-mask-msg";F.dom.firstChild.innerHTML=G;F.setDisplayed(true);F.center(C);if(E){F.on("click",this.hide.createDelegate(this,[H]),this)}}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&C.getStyle("height")=="auto"){C._mask.setSize(C.dom.clientWidth,C.getHeight())}this.isVisible=true;return C._mask};this.hide=function(B){var C=this.el;if(C._mask){if(C._maskMsg){C._maskMsg.remove();delete C._maskMsg}C._mask.remove();delete C._mask}C.removeClass("x-masked");if(B&&B.fn&&B.scope){B.fn.call(B.scope)}this.isVisible=false}};Ext.app.SearchField=Ext.extend(Ext.form.TwinTriggerField,{initComponent:function(){Ext.app.SearchField.superclass.initComponent.call(this);this.on("specialkey",function(A,B){if(B.getKey()==B.ENTER){this.onTrigger2Click()}},this)},validationEvent:false,validateOnBlur:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",hideTrigger1:true,width:180,hasSearch:false,paramName:"query",limit:25,onTrigger1Click:function(){if(this.hasSearch){var A={start:0,limit:this.limit};A[this.paramName]="";this.store.baseParams={search:""};this.store.reload({params:A});this.store.reload();this.el.dom.value="";this.triggers[0].hide();this.hasSearch=false}},onTrigger2Click:function(){var A=this.getRawValue();if(A.length<1){this.onTrigger1Click();return }var B={start:0,limit:this.limit};B[this.paramName]=A;this.store.baseParams={search:A};this.store.reload({params:B});this.hasSearch=true;this.triggers[0].show()}});CadX.DataView=function(A){CadX.DataView.superclass.constructor.call(this,{emptyText:"No Items to display...",itemSelector:"div.thumb-wrap",height:A.height||null,multiSelect:true,overClass:"x-view-over",store:new Ext.data.JsonStore({url:CadX.Net.getUrl(CadX.Net.SEARCH_DOCUMENTS),root:"documents",fields:["id","label","notes","category"]}),style:"overflow:auto;outline-color:invert;outline-style:none;outline-width:0;",tpl:new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="{name}">','<div class="thumb"><img src="'+CadX.Net.getUrl(CadX.Net.RENDER_DOCUMENTTHUMBNAIL)+'&id={id}&width=128&height=64&nocache={[new Date().getTime()]}" title="{name}"></div>','<span class="x-editable">{name}</span></div>',"</tpl>",'<div class="x-clear"></div>'),width:A.width||null})};Ext.extend(CadX.DataView,Ext.DataView);CadX.menu.DataViewItem=function(A){CadX.menu.DataViewItem.superclass.constructor.call(this,new CadX.DataView(A),A);this.view=this.component;this.addEvents("select");this.view.on("render",function(B){B.container.addClass("ux-menu-view-item")});this.view.on("selectionchange",this.onSelect,this)};Ext.extend(CadX.menu.DataViewItem,Ext.menu.Adapter,{onSelect:function(A,B){this.fireEvent("select",this,A,B)}});CadX.menu.DataViewMenu=function(A){CadX.menu.DataViewMenu.superclass.constructor.call(this,A);this.plain=true;var B=new CadX.menu.DataViewItem(A);this.add(B);this.view=B.view;this.relayEvents(B,["select"]);this.resizable=true;this.on("beforeshow",function(){if(this.view.store){this.view.store.load({params:{category:19}})}},this)};Ext.extend(CadX.menu.DataViewMenu,Ext.menu.Menu,{cls:"ux-view-menu",handleHeight:8,render:function(){CadX.menu.DataViewMenu.superclass.render.call(this);if(this.resizable){this.resizer=new Ext.Resizable(this.el,{pinned:true,handles:"se",resizeChild:this.view.el});this.resizer.on("resize",function(C,A,B){this.maxHeight=B-this.handleHeight-this.el.getFrameWidth("tb")},this)}}});CadX.Controls.EffectStack=Ext.extend(Ext.BoxComponent,{initComponent:function(){CadX.Controls.EffectStack.superclass.initComponent.call(this);this.addEvents({additem:true,removeitem:true,orderchanged:true,beforeselectitem:true,selectitem:true});this.itemList=new CadX.Controls.EffectStack.StackManager();this.selectedItem=null;this.dragging=false;this.selectedClass="cadx-effectstack-selected";this.removeClass="cadx-effectstack-remove";this.delayShow=new Ext.util.DelayedTask(this.showIcons,this)},getCount:function(){return this.itemList.getCount()},onResize:function(){this.arrange()},onRender:function(B,A){if(!this.el){this.iconContainer=Ext.DomHelper.append(Ext.get(B),{tag:"div",cls:"cadx-effectstack-container"},true);this.el=this.iconContainer;this.renderIcons()}},renderIcons:function(){if(this.iconContainer){for(var A=0;A<this.itemList.getCount();++A){var B=this.itemList.itemAt(A);if(!B.icon){B.icon=Ext.DomHelper.append(this.iconContainer,{tag:"div",style:"position:absolute;z-index:999999;",cls:"x-hide-visibility "+this.getIconInfo(B.data).cls},true);B.icon.image=Ext.DomHelper.append(B.icon,{tag:"img",src:"./Image/Control/"+this.getIconInfo(B.data).cls+".png"});B.icon.on("mousedown",this.onItemMouseDown,this,B);B.icon.on("mouseover",this.onItemMouseOver,this,B);B.icon.on("mouseout",this.onItemMouseOut,this,B)}}}},clearIcons:function(){for(var A=0;A<this.itemList.getCount();++A){var B=this.itemList.itemAt(A);if(B.icon){B.icon.remove();B.icon=null}}},getIconInfo:function(A){if(A instanceof CadX.TextBlockFigure){return{cls:"cadx-effectstack-textblock",label:"text"}}else{if(A instanceof CadX.ShapeFigure){return{cls:"cadx-effectstack-shape",label:"shape"}}else{if(A instanceof CadX.ContourProcess){return{cls:"cadx-effectstack-contour",label:"contour"}}else{if(A instanceof CadX.ShadowProcess){return{cls:"cadx-effectstack-shadow",label:"shadow"}}else{if(A instanceof CadX.FitEnvelopeProcess){return{cls:"cadx-effectstack-fitEnvelope",label:"fit envelope"}}else{if(A instanceof CadX.SplitFrontProcess){return{cls:"cadx-effectstack-splitFront",label:"split front"}}else{if(A instanceof CadX.FitEllipseProcess){return{cls:"cadx-effectstack-FitEllipse",label:"circle text"}}else{if(A instanceof CadX.VerticalArchProcess){return{cls:"cadx-effectstack-verticalArch",label:"vertical arch"}}else{if(A instanceof CadX.CapitalProcess){return{cls:"cadx-effectstack-capital",label:"book ends"}}else{if(A instanceof CadX.ClassicArcProcess){return{cls:"cadx-effectstack-classicArc",label:"classic arc"}}else{if(A instanceof CadX.BorderProcess){return{cls:"cadx-effectstack-border",label:"border"}}}}}}}}}}}}},renderSelection:function(C){for(var A=0;A<this.itemList.getCount();++A){var B=this.itemList.itemAt(A);if(B.icon){B.icon.removeClass(this.selectedClass)}}if(this.selectedItem.icon){this.selectedItem.icon.addClass(this.selectedClass)}},arrange:function(){if(this.iconContainer){var H=10;var G=this.iconContainer.getBox();var F=this.itemList.getCount()+1;var B={x:G.x+H,y:0};for(var C=0;C<this.itemList.getCount();++C){var E=this.itemList.itemAt(C);if(!(E==this.selectedItem&&this.dragging)&&E.icon){var D=E.icon.getBox();D.width=130;D.height=60;B.y=G.y+Math.round((G.height/2)-(D.height/2));if(D.x!=B.x||D.y!=B.y){this.animateArrange({element:E.icon,x:B.x,y:B.y})}}B.x+=D.width+H}var A=32;this.delayShow.delay(250)}},showIcons:function(){if(this.iconContainer){var C=this.itemList.getCount()+1;for(var A=0;A<this.itemList.getCount();++A){var B=this.itemList.itemAt(A);B.icon.removeClass("x-hide-visibility")}}},animateArrange:function(A){A.callback=this.arrangeComplete;A.scope=this;A.element.shift(A)},arrangeComplete:function(A){},load:function(A){this.clearIcons();this.itemList.load(A);this.renderIcons();this.arrange()},onAddItemClick:function(){this.fireEvent("additem",this)},onRemoveItemClick:function(){if(this.selectedItem!=null){if(this.itemList.remove(this.selectedItem)){if(this.selectedItem.icon){this.selectedItem.icon.remove()}this.selectedItem==null;this.arrange();this.fireEvent("removeitem",this)}}},selectStackItem:function(A){if(this.fireEvent("beforeselectitem",this,A)===false){return }this.selectedItem=A;this.renderSelection();this.fireEvent("selectitem",this,A)},selectStackItemByIndex:function(A){this.selectStackItem(this.itemList.itemAt(A))},onItemMouseDown:function(C,A,B){C.stopEvent();this.selectStackItem(B);this.dragging=true;Ext.fly(document).on("mouseup",this.onMouseUp,this);Ext.fly(document).on("mousemove",this.onMouseMove,this);this.itemOrderChanged=false;this.selectedCursorOffset={x:C.getPageX()-this.selectedItem.icon.getX(),y:C.getPageY()-this.selectedItem.icon.getY()}},onItemMouseOver:function(B,A){},onItemMouseOut:function(B,A){},onMouseUp:function(B,A){if(this.selectedItem!=null&&this.dragging){if(!this.itemList.contains(this.selectedItem)){this.selectedItem.icon.puff({easing:"easeOut",duration:0.5,remove:true,useDisplay:false});this.fireEvent("removeitem",this);this.selectedItem=null}}if(this.itemOrderChanged){this.fireEvent("orderchanged",this)}this.dragging=false;Ext.fly(document).un("mouseup",this.onMouseUp,this);Ext.fly(document).un("mousemove",this.onMouseMove,this);this.arrange()},onMouseMove:function(D,A){if(this.selectedItem!=null&&this.dragging){this.selectedItem.icon.setXY([D.getPageX()-this.selectedCursorOffset.x,D.getPageY()-this.selectedCursorOffset.y]);var C=this.iconContainer.getRegion().intersect(this.selectedItem.icon.getRegion());var B=this.getIndexByIconPos(this.selectedItem.icon);if(this.itemList.itemAt(B)!=this.selectedItem&&C){if(this.itemList.contains(this.selectedItem)){this.itemOrderChanged=this.itemList.move(B,this.selectedItem)}else{this.itemOrderChanged=this.itemList.insert(B,this.selectedItem)}if(this.itemOrderChanged){this.arrange()}}else{if(this.itemList.contains(this.selectedItem)&&!C){this.itemOrderChanged=this.itemList.remove(this.selectedItem);if(this.itemOrderChanged){this.arrange()}}}}},getIndexByIconPos:function(D){var F=this.itemList.getCount();var A=D.getBox();var B=0;for(var C=0;C<F;++C){var E=this.itemList.itemAt(C);if(E.icon!=D){var G=E.icon.getBox();if(A.x<G.x){return B}++B}}return B}});CadX.Controls.EffectStack.StackManager=function(){this.items=new Ext.util.MixedCollection();this.figure=null};CadX.Controls.EffectStack.StackManager.prototype={load:function(A){this.items.clear();this.figure=A;this.items.add({data:A});var C=A.getProcesses();for(var B=0;B<C.length;++B){this.items.add({data:C[B]})}},insert:function(A,B){if(A>0){if(this.figure.insertProcess(A-1,B.data)){this.items.insert(A,B);return true}}else{if(A==0&&B.data instanceof CadX.Figure){this.items.insert(A,B);return true}}return false},add:function(A){return this.insert(this.getCount(),A)},move:function(B,C){var A=this.items.indexOf(C);if(this.remove(C)){if(this.insert(B,C)){return true}else{this.insert(A,C);return false}}else{return false}},remove:function(A){if(this.getFigureItem()!=A){if(this.figure.removeProcess(A.data)){this.items.remove(A);return true}else{return false}}else{return false}},itemAt:function(A){return this.items.itemAt(A)},getCount:function(){return this.items.getCount()},getFigureItem:function(){return this.items.itemAt(0)},getRange:function(){return this.items.getRange()},contains:function(A){return this.items.contains(A)}};CadX.Controls.SearchTree=function(A){CadX.Controls.SearchTree.superclass.constructor.call(this,Ext.apply({animate:true,autoScroll:true,containerScroll:true,enableDD:false,loader:new Ext.tree.TreeLoader({dataUrl:CadX.Net.getUrl(CadX.Net.BROWSER_DIRECTORY),listeners:{load:{fn:function(B,C){},scope:this,single:true}}}),root:new Ext.tree.AsyncTreeNode({id:"root",text:"Search"}),rootVisible:false,useArrows:true,singleExpand:true},A))};Ext.extend(CadX.Controls.SearchTree,Ext.tree.TreePanel,{});Ext.menu.TreeItem=Ext.extend(Ext.menu.Adapter,{constructor:function(A){Ext.menu.TreeItem.superclass.constructor.call(this,A.tree,A);this.tree=this.component;this.addEvents("selectionchange");this.tree.on("render",function(B){B.body.swallowEvent(["click","keydown","keypress","keyup"])});this.tree.getSelectionModel().on("selectionchange",this.onSelect,this)},onSelect:function(A,B){this.fireEvent("select",this,B,A)}});Ext.menu.TreeMenu=Ext.extend(Ext.menu.Menu,{cls:"x-tree-menu",keyNav:true,hideOnClick:false,plain:true,constructor:function(A){Ext.menu.TreeMenu.superclass.constructor.call(this,A);this.treeItem=new Ext.menu.TreeItem(A);this.add(this.treeItem);this.tree=this.treeItem.tree;this.tree.on("beforeclick",this.onBeforeClick,this);this.tree.on("click",this.onNodeClick,this);this.relayEvents(this.treeItem,["selectionchange"])},beforeDestroy:function(){this.tree.destroy()},onBeforeClick:function(A,B){if(isNaN(A.id)){return false}},onNodeClick:function(A,B){this.treeItem.handleClick(B)}});Ext.ux.TreeSelector=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.ux.TreeSelector.superclass.initComponent.call(this);this.addEvents("selectionchange");this.tree.getSelectionModel().on("selectionchange",this.onSelection,this);this.tree.on({expandnode:this.sync,collapsenode:this.sync,append:this.sync,remove:this.sync,insert:this.sync,scope:this});this.on("focus",this.onTriggerClick,this)},sync:function(){if(this.menu&&this.menu.isVisible()){if(this.tree.body.getHeight()>this.maxHeight){this.tree.body.setHeight(this.maxHeight);this.restricted=true}else{if(this.restricted&&this.tree.body.dom.firstChild.offsetHeight<this.maxHeight){this.tree.body.setHeight("");this.restricted=false}}this.menu.el.sync()}},onSelection:function(A,B){if(!B){this.setRawValue("")}else{this.setRawValue(B.text)}},initEvents:function(){Ext.ux.TreeSelector.superclass.initEvents.call(this);this.el.on("mousedown",this.onTriggerClick,this);this.el.on("keydown",this.onKeyDown,this)},onKeyDown:function(A){if(A.getKey()==A.DOWN){this.onTriggerClick()}},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){var B=this.tree.getSelectionModel();var A=B.getSelectedNode();return A?A.id:""},setValue:function(B){var A=this.tree.getNodeById(B);if(A){A.select()}else{this.tree.getSelectionModel().clearSelections()}},onDestroy:function(){if(this.menu){this.menu.destroy()}if(this.wrap){this.wrap.remove()}Ext.ux.TreeSelector.superclass.onDestroy.call(this)},menuListeners:{show:function(){this.onFocus()},hide:function(){var A=this.menuListeners;this.menu.un("show",A.show,this);this.menu.un("hide",A.hide,this)}},onTriggerClick:function(){if(this.disabled){return }this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.show(this.el,"tl-bl?");this.sync();var B=this.tree.getSelectionModel();var A=B.getSelectedNode();if(A){A.ensureVisible()}},beforeBlur:function(){},onRender:function(){Ext.ux.TreeSelector.superclass.onRender.apply(this,arguments);this.menu=new Ext.menu.TreeMenu(Ext.apply(this.menuConfig||{},{tree:this.tree}));this.menu.render();this.tree.body.addClass("x-tree-selector")},readOnly:true});CadX.ColorEditor=function(A){Ext.apply(this,A);this.addEvents({hide:true,show:true});this.buildWindow()};Ext.extend(CadX.ColorEditor,Ext.util.Observable,{height:300,mainWindow:null,resizable:false,selected:null,width:300,buildWindow:function(){var B=new Ext.Panel({autoScroll:true,bodyStyle:"padding:15px;",border:false,height:80,html:'<p><b>Instructions:</b></p><table><tr><td><div id="cadx-coloreditor-newcolor" class="cadx-newcolor-img"></div></td><td valign="top">Select the regions below that you want to change to this color.</td></tr></table>',id:"cadx-color-editor-instr",region:"north",split:false});this.treePanel=new Ext.tree.TreePanel({autoScroll:true,bodyStyle:"padding:0px",border:true,id:"cadx-color-editor-tree",lines:false,listeners:{checkchange:{fn:this.onCheckChange,scope:this}},loader:new Ext.tree.TreeLoader(),rootVisible:false,root:new Ext.tree.AsyncTreeNode({text:"Regions",children:[{checked:false,color:"ffffff",id:999,leaf:true,text:'<img src="'+Ext.BLANK_IMAGE_URL+'" class="cadx-color-img" style="background-color:#fff" />Default'}]})});var A=new Ext.Panel({bodyStyle:"padding:15px;padding-top:0;",border:false,items:this.treePanel,layout:"fit",region:"center"});this.mainWindow=new Ext.Window({bodyStyle:"background-color:transparent",buttons:[{handler:this.onOk,scope:this,text:"Ok"},{handler:function(){this.mainWindow.hide()},scope:this,text:"Cancel"}],closeAction:"hide",closable:true,constrainHeader:true,height:this.height,id:"cadx-color-editor",items:[B,A],layout:"border",modal:true,resizable:this.resizable,title:"Edit Color",width:this.width});this.mainWindow.on({hide:{fn:function(){this.fireEvent("hide",this)},scope:this},show:{fn:function(){this.fireEvent("show",this)},scope:this}})},loadTree:function(E){var C=[];for(var D=0,A=E.length;D<A;D++){C.push(new Ext.tree.TreeNode({checked:false,color:E[D].color,region:E[D],leaf:true,text:'<img src="'+Ext.BLANK_IMAGE_URL+'" class="cadx-color-img" style="background-color:#'+E[D].color+'" />'+E[D].description}))}B(this.treePanel.root);this.treePanel.root.appendChild(C);function B(H){var F=H.childNodes;if(F){A=F.length;for(var G=A-1;G>=0;G--){F[G].remove()}}}},setNewColor:function(A){Ext.get("cadx-coloreditor-newcolor").setStyle("background-color","#"+A)},onCheckChange:function(E,D){if(E.leaf&&E.id){if(D){this.selected.push(E.id)}else{var C=[];for(var B=0,A=this.selected.length;B<A;B++){if(this.selected[B]!=E.id){C.push(this.selected[B])}}this.selected=C}}},onOk:function(){if(this.callback){var F=this.hexColor;var C=this.selected;this.hexColor=null;this.selected=null;this.mainWindow.hide();var D=[];for(var B=0,A=C.length;B<A;++B){var E=this.treePanel.getNodeById(C[B]).attributes.region.id;D.push({id:E,color:F})}this.callback(D)}},show:function(A){if(A.callback){this.callback=A.callback}this.selected=[];this.mainWindow.show();if(A.hexColor){this.hexColor=A.hexColor;this.setNewColor(this.hexColor)}if(A.regions){this.regions=A.regions;this.loadTree(this.regions)}}});Ext.override(Ext.tree.TreeNodeUI,{toggleCheck:function(B){var A=this.checkbox;if(A){A.checked=(B===undefined?!A.checked:B);this.fireEvent("checkchange",this.node,A.checked)}}});CadX.FileUploader=function(A){Ext.applyIf(this,A);this.addEvents({hide:true,uploadComplete:true,show:true});this.buildWindow()};Ext.extend(CadX.FileUploader,Ext.util.Observable,{allowedExtension:null,fileField:null,fileLabel:null,formPanel:null,height:250,mainWindow:null,mask:null,mimeType:null,okButton:null,resizable:true,title:"Import File",width:300,buildWindow:function(){this.fileField=new Ext.form.TextField({fieldLabel:'Select your <span class="file-label">SVG</span> file',inputType:"file",name:"file"});this.formPanel=new Ext.form.FormPanel({bodyStyle:"background-color:transparent;padding:10px;",border:true,fileUpload:true,items:this.fileField,labelAlign:"top",method:"post",url:CadX.Net.getUrl(CadX.Net.IMPORT_DOCUMENT)});var B=new Ext.Panel({bodyStyle:"padding:15px;padding-top:0;",border:false,height:80,items:this.formPanel,layout:"fit",region:"south"});var A=new Ext.Panel({bodyStyle:"background-color:transparent; padding:15px 15px 0 15px;",border:false,html:'<p><b>Instructions:</b></p><p>Only <span class="file-label">SVG</span> files are allowed.  Please use the field below to select your file and then click the Ok button.</p>',region:"center"});this.mainWindow=new Ext.Window({bodyStyle:"background-color:#fff; padding:15px;",buttons:[{handler:this.onOk,scope:this,text:"Ok"},{handler:function(){this.mainWindow.hide()},scope:this,text:"Cancel"}],closeAction:"hide",closable:true,constrainHeader:true,height:this.height,items:[A,B],layout:"border",modal:true,plain:false,resizable:this.resizable,title:this.title,width:this.width});this.okButton=this.mainWindow.buttons[0];this.mainWindow.on({hide:{fn:function(){this.fireEvent("hide",this)},scope:this},show:{fn:function(){this.fireEvent("show",this)},scope:this},render:{fn:function(){this.pMask=new Ext.LoadMask(this.mainWindow.body,{msg:"Importing..."})},scope:this}});this.formPanel.on("actioncomplete",this.actionComplete,this)},onFileSelected:function(B){var A=B.input_file.dom.value,C=this.fileField;C.setValue(A);this.onOk()},onOk:function(){if(this.checkExtension(this.fileField.getValue())){this.startProgressIndicator();this.formPanel.getForm().doAction("xmlsubmit",{params:{mimeType:this.mimeType},clientValidation:false})}},checkExtension:function(A){var C=false;while(A.indexOf("\\")!=-1){A=A.slice(A.indexOf("\\")+1);var B=A.slice(A.indexOf(".")).toLowerCase();if(B===this.allowedExtension){C=true}}if(C){return true}else{CadX.alert("Please only upload files that end in type:  "+(this.allowedExtension)+"\nPlease select a new file to upload and submit again.");return false}},actionComplete:function(C,D){var A=new CadX.Net.Response(D.response.responseXML);if(A.getSuccess()){var B=CadX.Document.fromXml(A.getData());if(B!=null&&this.callback&&this.scope){this.callback.call(this.scope,B.getFigures());this.hide()}else{CadX.alert("Import Failed: Invalid Document")}}else{CadX.alert("Import Failed: "+A.getErrorMessage())}this.endProgressIndicator()},updateLabels:function(B,D){for(var A=0;A<B.length;A++){var C=Ext.get(B[A]);if(C){C.update(D)}}return B},show:function(A){this.allowedExtension=A.allowedExtension;this.fileLabel=A.fileLabel;this.iconCls=A.iconCls;this.mimeType=A.mimeType;this.callback=A.callback;this.scope=A.scope;if(this.iconCls){this.mainWindow.setIconClass(this.iconCls)}if(this.mimeType){this.mainWindow.setTitle(this.mimeType==="image/cdl+xml"?"Open Local":"Import: "+this.mimeType)}this.mainWindow.show();if(this.fileLabel){this.updateLabels(Ext.query(".file-label"),this.fileLabel)}if(this.fileField){this.fileField.setValue("")}},hide:function(){this.mainWindow.hide()},startProgressIndicator:function(){this.pMask.show();this.okButton.disable()},endProgressIndicator:function(){this.pMask.hide();this.okButton.enable()}});CadX.Submit=function(B,A){CadX.Submit.superclass.constructor.call(this,B,A)};Ext.extend(CadX.Submit,Ext.form.Action.Submit,{processResponse:function(A){this.response=A;if(!A.responseText||A.responseXML){return true}this.result=this.handleResponse(A);return this.result}});Ext.form.Action.ACTION_TYPES.xmlsubmit=CadX.Submit;CadX.Dialog.Save=function(A){this.formPanel=new CadX.Dialog.SaveForm();CadX.Dialog.Save.superclass.constructor.call(this,Ext.apply({border:true,buttons:[{handler:this.onSave,scope:this,tabIndex:4,text:this.mode==="saveAs"?"Save":"Ok"},{handler:this.onCancel,scope:this,tabIndex:5,text:"Cancel"}],closeAction:"hide",closable:true,cls:"cadx-dialog",height:300,items:this.formPanel,layout:"fit",modal:true,resizable:false,title:"Save As...",shadow:false,plain:true,width:400},A));this.on("hide",this.onCancel,this);this.formPanel.treeLoader.on("load",this.onTreeLoaderLoad,this);this.formPanel.treeLoader.on("beforeload",this.onTreeLoaderBeforeLoad,this);this.formPanel.treeLoader.on("loadexception",this.onTreeLoaderException,this)};Ext.extend(CadX.Dialog.Save,Ext.Window,{defaultCategory:11,mask:null,mDocument:null,onTreeLoaderBeforeLoad:function(A){},onTreeLoaderLoad:function(A){this.hideMask();this.formPanel.category.setValue(this.document.category||this.defaultCategory)},onTreeLoaderException:function(B,C,A){CadX.log("onTreeLoaderException: "+A)},onRender:function(B,A){CadX.Dialog.Save.superclass.onRender.call(this,B,A);this.pMask=new Ext.LoadMask(this.body,{msg:"Saving..."})},enableButtons:function(){var C=this.buttons;for(var B=0,A=C.length;B<A;B++){C[B].enable()}},disableButtons:function(){var C=this.buttons;for(var B=0,A=C.length;B<A;B++){if(C[B].text!=="Cancel"){C[B].disable()}}},hideMask:function(){this.pMask.hide();this.enableButtons()},onCancel:function(){if(this.pMask&&this.pMask.isVisible){this.pMask.hide();this.enableButtons()}this.hide()},onSave:function(){var A=this.formPanel,B={label:A.label.getValue(),notes:A.notes.getValue(),category:A.category.getValue()||this.defaultCategory};if(B.label!==""){if(this.mode==="saveAs"){this.saveAs(B)}else{if(this.mode==="properties"){this.saveProperties(B)}}}else{A.label.markInvalid()}},saveAs:function(A){this.showMask("Saving...");this.document.saveAs(A,function(B){if(B.getSuccess()==true){this.hideMask();this.hide()}else{CadX.alert(B.getErrorMessage())}},this);if(this.callback){this.callback.call(this,A)}},saveProperties:function(B){var A=this.formPanel;if(this.document){this.document.updateProperties({label:B.label,notes:B.notes,category:B.category});this.hide()}else{if(this.properties){this.showMask("Saving Properties...");B.documentId=this.properties.id;CadX.Document.SaveProperties(B,function(C){if(C.getSuccess()==true){this.hideMask();this.hide()}else{CadX.alert(C.getErrorMessage())}},this)}}if(this.callback){this.callback.call(this,B)}},show:function(F,E,B,C){CadX.Dialog.Save.superclass.show.call(this,E,B,C);this.hideMask();this.enableButtons();this.callback=F.callback||null;this.document=F.document||null;this.properties=F.properties||null;this.mode=F.mode||null;var A=this.document||this.properties;var D=this.formPanel;D.clear();if(D.category.tree.root.isLoaded()){D.category.setValue(A.category||this.defaultCategory)}else{this.showMask("Loading Categories....")}D.label.setValue(A.label||"");D.notes.setValue(A.notes||"");D.label.focus(true,350);this.setTitle(this.mode==="saveAs"?"Save As...":"Edit Properties")},showMask:function(A){if(A){this.pMask.msg=A}this.pMask.show();this.disableButtons()}});CadX.Dialog.SaveForm=function(B){this.label=new Ext.form.TextField({anchor:"100%",fieldLabel:"Name",labelSeparator:"",tabIndex:1});this.notes=new Ext.form.TextArea({anchor:"100% -118",fieldLabel:"Keywords",labelSeparator:"",tabIndex:2});this.treeLoader=new Ext.tree.TreeLoader({dataUrl:CadX.Net.getUrl(CadX.Net.LIST_DOCUMENT_CATEGORY)});var A=new Ext.tree.TreePanel({useArrows:true,autoScroll:true,containerScroll:true,height:200,loader:this.treeLoader,width:356,root:new Ext.tree.AsyncTreeNode({text:"Categories",id:"root"}),rootVisible:false});this.category=new Ext.ux.TreeSelector({anchor:"100%",fieldLabel:"Category",labelSeparator:"",listeners:{focus:{fn:function(){this.tree.root.collapse(true)},scope:this.category,single:true}},tabIndex:3,tree:A,maxHeight:200});CadX.Dialog.SaveForm.superclass.constructor.call(this,Ext.apply({bodyStyle:"background-color:transparent;padding:10px;",border:false,items:[this.label,this.notes,this.category],buttonAlign:"right",labelAlign:"top"},B))};Ext.extend(CadX.Dialog.SaveForm,Ext.form.FormPanel,{clear:function(){this.getForm().reset()}});CadX.Vectorize=function(A){this.uploadPanel=new CadX.Vectorize.UploadPanel({allowedExtensions:this.allowedExtensions,id:this.cards[0],instructions:"<p><b>Instructions:</b> *Note: Images with transparency are not supported.</p><p>Option 1: Use the field below to select the file you wish to vectorize.</p><p>Option 2: Choose an image from your recent images.</p><p><b>Allowed file types:</b> "+(this.allowedExtensions.join(", "))+"</p><p><b>Allowed file sizes:</b> all under 2 MB.</p>",listeners:{fileupdated:{fn:this.onFileUpdated,scope:this},fileopened:{fn:this.onFileOpened,scope:this},uploadcomplete:{fn:this.onUploadComplete,scope:this},uploadfailed:{fn:this.onUploadFailed,scope:this}},owner:this});this.backgroundColorPanel=new CadX.Vectorize.ColorPanel({id:this.cards[1],instructions:'<p><b>Instructions:</b></p><p>Click on the <b>BACKGROUND</b> color of your image ( typically this is white ). If there is no background color just click "Next".',listeners:{beforecolorpicked:{fn:this.onBeforeColorPicked,scope:this},colorpicked:{fn:this.onColorPicked,scope:this},colorremoved:{fn:this.onColorRemoved,scope:this}},maxColorAllowed:1,minColorRequired:0,viewPanelTitle:"Background Colors"});this.foregroundColorPanel=new CadX.Vectorize.ColorPanel({id:this.cards[2],instructions:"<p><b>Instructions:</b></p><p>Pick up to <b>3 foreground</b> colors. Its important to pick the most contrasting colors for the best result.</p><p>These are the colors that will make up your final image.</p>",listeners:{beforecolorpicked:{fn:this.onBeforeColorPicked,scope:this},colorpicked:{fn:this.onColorPicked,scope:this},colorremoved:{fn:this.onColorRemoved,scope:this}},maxColorAllowed:9,minColorRequired:1,viewPanelTitle:"Foreground Colors"});this.vectorizePanel=new CadX.Vectorize.VectorizePanel({id:this.cards[3],instructions:"<p><b>Instructions:</b></p><p><b>Region Resolution:</b> Increasing the value will merge smaller regions of color into larger regions of color.</p><p><b>Fit To Curve:</b> Increasing the value will smooth corners.<p>",formPanelTitle:"Adjust Image",listeners:{formupdated:{fn:this.onFormUpdated,scope:this},vectorizecomplete:{fn:this.onVectorizeComplete,scope:this},vectorizefailed:{fn:this.onVectorizeFailed,scope:this}}});CadX.Vectorize.superclass.constructor.call(this,Ext.apply({activeItem:0,closeAction:"hide",closable:true,deferredRender:true,height:420,hideMode:"offsets",iconCls:"CadX-file-vectorize",items:[this.uploadPanel,this.foregroundColorPanel,this.backgroundColorPanel,this.vectorizePanel],layout:"card",listeners:{hide:{fn:this.onHide,scope:this}},modal:true,plain:true,resizable:false,title:"Vectorize",width:550},A))};Ext.extend(CadX.Vectorize,Ext.Window,{allowedExtensions:[".jpg",".jpeg",".gif",".png",".bmp",".tiff"],cards:["cadx-vect-card-1","cadx-vect-card-2","cadx-vect-card-3","cadx-vect-card-4"],image:null,isDirty:false,layout:null,isColorPicked:function(C,B){if(!Ext.isArray(B)){B=B.split(",")}for(var D=0,A=B.length;D<A;D++){if(B[D]===C){return false}}return true},getBackgroundColor:function(){return this.backgroundColorPanel.getData()},getForegroundColor:function(){return this.foregroundColorPanel.getData()},navHandler:function(C){var B=this.layout.activeItem.id,F=this.cards,E;for(var D=0,A=F.length;D<A;D++){if(F[D]===B){E=F[D+C];break}}if(E){if(this.image){this.layout.setActiveItem(E);if(E===F[1]){this.backgroundColorPanel.updatePreview(this.image.id,this.image.width,this.image.height)}if(E===F[2]){this.foregroundColorPanel.updatePreview(this.image.id,this.image.width,this.image.height)}if(E===F[3]){this.vectorizePanel.vectorize(true)}}}},onBeforeColorPicked:function(B,D){var C=this.foregroundColorPanel.getData(),A=this.backgroundColorPanel.getData();if(this.isColorPicked(D,C)===false){return false}if(this.isColorPicked(D,A)===false){return false}return true},onCancel:function(){this.hide()},onColorPicked:function(A,B){this.isDirty=true},onColorRemoved:function(A,B){this.isDirty=true},onFileOpened:function(C,D,B,A){this.image={id:D,width:B,height:A};this.navHandler(1)},onFileUpdated:function(B,A){this.foregroundColorPanel.reset();this.backgroundColorPanel.reset();this.vectorizePanel.reset();this.isDirty=true},onFinish:function(){if(this.callback&&this.scope){var A=this.vectorizePanel.figure;this.vectorizePanel.figure=null;this.hide();this.callback.call(this.scope,A)}},onFormUpdated:function(){this.isDirty=true},onHide:function(){this.reset();CadX.Vectorize.superclass.onHide.call(this)},onUploadComplete:function(D,A,B){var C=Ext.decode(B.response.responseText);if(C.success===true&&C.id&&C.width&&C.height){this.image={id:C.id,width:C.width,height:C.height};this.navHandler(1)}else{CadX.alert("Upload Failed!")}},onUploadFailed:function(){CadX.alert("Upload failed!")},onVectorizeComplete:function(){this.isDirty=false},onVectorizeFailed:function(){this.isDirty=false},reset:function(){this.uploadPanel.reset();this.foregroundColorPanel.reset();this.backgroundColorPanel.reset();this.vectorizePanel.reset();this.isDirty=false;this.layout.setActiveItem(0)},show:function(C,A,B){if(!this.rendered){this.render(Ext.getBody())}if(this.hidden===false){this.toFront();return }if(this.fireEvent("beforeshow",this)===false){return }if(A){this.callback=A}if(B){this.scope=B}this.hidden=false;if(C!==undefined){this.setAnimateTarget(C)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}this.reset()}});CadX.Vectorize.UploadPanel=function(B){this.addEvents({fileupdated:true,fileopened:true,uploadstarted:true,uploadcomplete:true,uploadfailed:true});var A=new Ext.Panel({autoScroll:true,bodyStyle:"background-color:transparent; padding:15px 15px 0 15px;",cls:"cadx-vectorize-instr",border:false,height:120,html:B.instructions,margins:"4 4 4 4",region:"north"});this.view=new Ext.DataView({cls:"cadx-vectorize-colorpicker",listeners:{dblclick:{fn:this.onNext,scope:this},selectionchange:{fn:this.onSelectionChange,scope:this}},loadingText:"Loading...",singleSelect:true,store:new Ext.data.JsonStore({fields:["id","width","height"],id:"id",root:"documents",totalProperty:"totalCount",url:CadX.Net.getUrl(CadX.Net.IMAGE_LIST)}),tpl:new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="{name}">','<div class="thumb"><img src="'+CadX.Net.getUrl(CadX.Net.IMAGE_RENDER)+'&imageid={id}&width=64&height=64"></div>',"</div>","</tpl>",'<div class="x-clear"></div>'),overClass:"x-view-over",itemSelector:"div.thumb-wrap",emptyText:'<p style="padding:10px;">No recent images...</p>'});this.viewPanel=new Ext.Panel({bbar:new Ext.PagingToolbar({items:["->",{disabled:true,handler:this.onClearSelection,require:{selection:{min:1,required:true}},scope:this,text:"Clear Selection"}],store:this.view.store,pageSize:this.pageSize}),border:true,cls:"cadx-vectorize-recent-images",items:this.view,layout:"fit",margins:"0 18 18 18",region:"center",title:"Recent Images"});this.fileField=new Ext.form.TextField({enableKeyEvents:true,fieldLabel:"Select your file here",inputType:"file",name:"file"});this.formPanel=new Ext.form.FormPanel({bodyStyle:"background-color:transparent;padding:15px;padding-bottom:0;",border:false,fileUpload:true,frame:false,height:50,items:this.fileField,labelWidth:150,margins:"0 4 4 4",method:"post",region:"north"});CadX.Vectorize.UploadPanel.superclass.constructor.call(this,Ext.apply({border:false,buttons:[{disabled:true,text:"Back"},{handler:this.onNext,scope:this,text:"Next"},{handler:this.onCancel,scope:this,text:"Cancel"}],hideMode:"offsets",id:B.id,items:[A,{border:false,items:[this.viewPanel,this.formPanel],layout:"border",margins:"",region:"center"}],layout:"border"},B))};Ext.extend(CadX.Vectorize.UploadPanel,Ext.Panel,{file:null,pageSize:14,pMask:null,afterRender:function(){this.refreshRecentImages();CadX.Vectorize.UploadPanel.superclass.afterRender.call(this)},checkExtension:function(D){var F=false,C=this.allowedExtensions;while(D.indexOf("\\")!=-1){D=D.slice(D.indexOf("\\")+1);var E=D.slice(D.lastIndexOf(".")).toLowerCase();for(var B=0,A=C.length;B<A;B++){if(E===C[B]){F=true;break}}if(F){break}}if(F){return true}else{CadX.alert("Please only upload files that end in type: "+(C.join(", "))+"\nPlease select a new file to upload and submit again.");return false}},doAction:function(){this.showMask();this.formPanel.getForm().doAction("xmlsubmit",{clientValidation:false,failure:this.onActionFailed,scope:this,success:this.onActionComplete,url:CadX.Net.getUrl(CadX.Net.IMAGE_UPLOAD)});this.fireEvent("uploadstarted",this)},handleItemState:function(B){var G=this.view.store.getCount(),F=this.view.getSelectedNodes();for(var D=0,A=B.length;D<A;D++){if(B[D].require){var E=B[D].require,C=false;if(E.selection&&E.selection.required&&E.selection.min){C=F<E.selection.min?true:C}if(C){B[D].disable()}else{if(B[D].disabled){B[D].enable()}}}}},hideMask:function(){this.pMask.hide();this.buttons[1].enable()},onActionComplete:function(A,B){this.hideMask();if(this.ownerCt.hidden===false){this.refreshRecentImages();this.fireEvent("uploadcomplete",this,A,B)}},onActionFailed:function(A,B){this.hideMask();this.fireEvent("uploadfailed",this,A,B)},onCancel:function(){this.ownerCt.onCancel()},onClearSelection:function(){this.view.clearSelections()},onNext:function(){var E=this.fileField.getValue(),D=this.view.getSelectionCount();if(D>0){var C=this.view.getRecords(this.view.getSelectedNodes());var F=C[0].id;var B=C[0].data.width;var A=C[0].data.height;if(F!==this.file){this.file=F;this.fireEvent("fileupdated",this,E)}this.fireEvent("fileopened",this,F,B,A)}else{if(E&&E===this.file){this.ownerCt.navHandler(1)}else{this.file=E;if(this.checkExtension(E)){this.fireEvent("fileupdated",this,E);this.doAction()}}}},onSelectionChange:function(A,B){this.handleItemState(this.viewPanel.getBottomToolbar().items.items)},refreshRecentImages:function(){this.view.store.load({params:{limit:this.pageSize,start:0}})},reset:function(){this.fileField.setValue("");this.view.clearSelections();if(this.pMask&&this.pMask.isVisible){this.pMask.hide()}},showMask:function(A){if(!this.pMask){this.pMask=new Ext.LoadMask(this.body,{msg:"Loading..."})}if(A){this.pMask.msg=A}this.pMask.show();this.buttons[1].disable()}});CadX.Vectorize.ColorPanel=function(A){this.addEvents({beforecolorpicked:true,colorpicked:true,colorremoved:true});this.instructionPanel=new Ext.Panel({autoScroll:true,bodyStyle:"background-color:transparent; padding:15px 15px 0 15px;",cls:"cadx-vectorize-instr",border:false,height:80,html:A.instructions,margins:"4 4 4 4",split:false,region:"north"});this.previewPanel=new Ext.Panel({autoScroll:false,cls:"cadx-vectorize-preview",listeners:{render:{fn:this.onPreviewRender,scope:this}},margins:"5 5 5 5",region:"center"});this.view=new Ext.DataView({cls:"cadx-vectorize-colorpicker",store:new Ext.data.SimpleStore({fields:[{name:"color",type:"string"}],data:[],listeners:{add:{fn:this.onStoreUpdated,scope:this},clear:{fn:this.onStoreUpdated,scope:this},remove:{fn:this.onStoreUpdated,scope:this}}}),tpl:new Ext.XTemplate('<tpl for=".">','<div class="item-selector">','<div class="color" style="background-color:#{color};"></div>',"</div>","</tpl>",'<div class="x-clear"></div>'),multiSelect:true,overClass:"x-view-over",itemSelector:"div.item-selector",listeners:{selectionchange:{fn:this.onSelectionChange,scope:this}}});this.viewPanel=new Ext.Panel({autoScroll:true,items:this.view,layout:"fit",margins:"5 5 5 0",region:"east",bbar:[{disabled:true,handler:this.onClear,require:{color:{min:1,required:true}},scope:this,text:"Clear"},{disabled:true,handler:this.onRemove,require:{selection:{min:1,required:true}},scope:this,text:"Remove"}],title:A.viewPanelTitle,width:180});CadX.Vectorize.ColorPanel.superclass.constructor.call(this,Ext.apply({border:false,buttons:[{handler:this.onBack,scope:this,text:"Back"},{disabled:true,handler:this.onNext,require:{color:{min:A.minColorRequired,required:true}},scope:this,text:"Next"},{handler:this.onCancel,scope:this,text:"Cancel"}],hideMode:"offsets",id:A.id,items:[this.instructionPanel,this.previewPanel,this.viewPanel],layout:"border"},A))};Ext.extend(CadX.Vectorize.ColorPanel,Ext.Panel,{maxColorAllowed:1,minColorRequired:0,previewImage:null,pMask:null,clearPreview:function(){this.previewImage.dom.src=Ext.BLANK_IMAGE_URL},getData:function(){var B=this.view,E=[];if(B.store.getCount()>0){var D=B.getRecords(B.getNodes());for(var C=0,A=D.length;C<A;C++){if(D[C].data&&D[C].data.color){E.push(D[C].data.color)}}}return E.join(",")},getPreviewImageBox:function(D,B){var E=this.previewPanel.body.getBox();var A={x:E.x+E.width/2,y:E.y+E.height/2};E.width-=25;E.height-=25;var F=E.width/D;var C=E.height/B;if(F<C){zoom=F}else{zoom=C}return{height:Math.round(B*zoom),width:Math.round(D*zoom),x:A.x-(D*zoom/2),y:A.y-(B*zoom/2),zoom:zoom}},handleItemState:function(B){var G=this.view.store.getCount(),F=this.view.getSelectedNodes();for(var D=0,A=B.length;D<A;D++){if(B[D].require){var E=B[D].require,C=false;if(E.color&&E.color.required&&E.color.min){C=G<E.color.min?true:C}if(E.selection&&E.selection.required&&E.selection.min){C=F<E.selection.min?true:C}if(C){B[D].disable()}else{if(B[D].disabled){B[D].enable()}}}}},hideMask:function(){this.pMask.hide()},onBack:function(){this.ownerCt.navHandler(-1)},onCancel:function(){this.ownerCt.onCancel()},onClear:function(){this.view.store.removeAll()},onColorPicked:function(F){var D=F.getPageX(),B=F.getPageY();var E=this.previewImage.getBox();var C=D-E.x,A=B-E.y;var H=C/E.width,G=A/E.height;Ext.Ajax.request({url:CadX.Net.getUrl(CadX.Net.IMAGE_GETCOLORAT)+"&imageid="+this.ownerCt.image.id+"&rx="+H+"&ry="+G,success:function(J){var I=Ext.decode(J.responseText);if(I.success&&I.color){if(this.view.store.getCount()>=this.maxColorAllowed){CadX.alert("The maximum number of colors allowed is "+this.maxColorAllowed+"!");return }if(this.fireEvent("beforecolorpicked",this,I.color)!==false){this.view.store.loadData([[I.color]],true);this.fireEvent("colorpicked",this,I.color)}else{CadX.alert("This color has already been picked!")}}},failure:function(){Ext.MessageBox.alert("Error","Lost connection to server.")},scope:this})},onNext:function(){this.ownerCt.navHandler(1)},onPreviewRender:function(){this.previewImage=Ext.DomHelper.append(this.previewPanel.body,{tag:"img",src:Ext.BLANK_IMAGE_URL},true);this.previewImage.addClass("CadX-color-picker");this.previewImage.on("mousedown",this.onColorPicked,this)},onRemove:function(){var C=this.view.getSelectedRecords();for(var B=0,A=C.length;B<A;B++){this.view.store.remove(C[B])}this.fireEvent("colorremoved",this,C)},onSelectionChange:function(A,B){this.handleItemState(this.viewPanel.getBottomToolbar().items.items)},onStoreUpdated:function(){this.handleItemState(this.viewPanel.getBottomToolbar().items.items);this.handleItemState(this.buttons)},reset:function(){this.clearPreview();this.onClear();if(this.pMask&&this.pMask.isVisible){this.pMask.hide()}},updatePreview:function(C,D,A){this.clearPreview();this.showMask();var E=this.getPreviewImageBox(D,A);var F=new Image();F.src=CadX.Net.getUrl(CadX.Net.IMAGE_RENDER)+"&imageid="+C+"&width="+E.width+"&height="+E.height;var B=new Ext.util.DelayedTask(function(){if(F.complete){B.cancel();this.previewImage.dom.src=F.src;this.previewImage.setSize(E.width,E.height);this.previewImage.setLocation(E.x,E.y);this.hideMask()}else{B.delay(200)}},this);B.delay(200)},showMask:function(A){if(!this.pMask){this.pMask=new Ext.LoadMask(this.previewPanel.body,{msg:"Updating..."})}if(A){this.pMask.msg=A}this.pMask.show()}});CadX.Vectorize.FormPanel=function(A){this.addEvents({applyclicked:true,formupdated:true});var B;B=this.createSlider({x:5,y:20,min:1,max:32,value:7});this.sliderOne=B.slider;this.sliderOneDisplay=B.display;B=this.createSlider({x:5,y:70,min:0,max:32,value:0});this.sliderTwo=B.slider;this.sliderTwoDisplay=B.display;this.applyButton=new Ext.Button({disabled:true,handler:this.onApply,require:{isValid:{required:true},vectorizeComplete:{required:true}},scope:this,text:"Apply"});CadX.Vectorize.FormPanel.superclass.constructor.call(this,Ext.apply({items:[{x:5,y:5,xtype:"label",text:"Region Resolution"},this.sliderOne,this.sliderOneDisplay,{x:5,y:55,xtype:"label",text:"Fit To Curve"},this.sliderTwo,this.sliderTwoDisplay,{border:false,items:this.applyButton,x:120,y:115}],layout:"absolute",require:{previewImageLoaded:{required:true}}},A))};Ext.extend(CadX.Vectorize.FormPanel,Ext.FormPanel,{createSlider:function(B){function H(J){var K=J.min||0,I=J.max||100,M=J.value||K,L=J.width||50;return new Ext.form.NumberField({enableKeyEvents:true,maxValue:I,minValue:K,value:M,width:L,x:J.x,y:J.y})}var C=B.min||0,A=B.max||100,F=B.value||C,D=B.width||100;var E=new Ext.Slider({minValue:C,maxValue:A,value:F,width:D,x:B.x,y:B.y});var G=H({x:B.x+D+15,y:B.y-1,min:C,max:A,value:F});E.on({change:{fn:function(I){G.setValue(I.getValue());this.fireEvent("formupdated",this)},scope:this},drag:{fn:function(I){G.setValue(I.getValue());this.fireEvent("formupdated",this)},scope:this}});G.on({keyup:{fn:function(J){var I=J.getValue();if(I!==""&&!isNaN(I)&&I>=J.minValue&&I<=J.maxValue){E.setValue(I)}this.fireEvent("formupdated",this)},buffer:450,scope:this}});return{slider:E,display:G}},getData:function(){var A={RegionResolution:this.sliderOne.getValue(),FitToCurveResolution:this.sliderTwo.getValue()};return A},onApply:function(){this.fireEvent("applyclicked",this)},reset:function(){this.sliderOne.setValue(7);this.sliderOneDisplay.setValue(7);this.sliderTwo.setValue(0);this.sliderTwoDisplay.setValue(0)}});CadX.Vectorize.VectorizePanel=function(A){this.addEvents({formupdated:true,vectorizecomplete:true,vectorizefailed:true});this.instructionPanel=new Ext.Panel({autoScroll:true,bodyStyle:"background-color:transparent; padding:15px 15px 0 15px;",cls:"cadx-vectorize-instr",border:false,height:80,html:A.instructions,margins:"4 4 4 4",split:false,region:"north"});this.previewPanel=new Ext.Panel({autoScroll:false,cls:"cadx-vectorize-preview",listeners:{render:{fn:this.onPreviewRender,scope:this}},margins:"5 5 5 5",region:"center"});this.formPanel=new CadX.Vectorize.FormPanel({autoScroll:true,listeners:{applyclicked:{fn:this.onApply,scope:this},formupdated:{fn:this.onFormUpdated,scope:this}},margins:"5 5 5 0",region:"east",title:A.formPanelTitle,width:180});CadX.Vectorize.VectorizePanel.superclass.constructor.call(this,Ext.apply({border:false,buttons:[{handler:this.onBack,require:{vectorizeComplete:{required:true}},scope:this,text:"Back"},{disabled:true,handler:this.onFinish,require:{vectorizeComplete:{required:true},vectorizeSuccess:{required:true}},scope:this,text:"Finish"},{handler:this.onCancel,scope:this,text:"Cancel"}],hideMode:"offsets",id:A.id,items:[this.instructionPanel,this.previewPanel,this.formPanel],layout:"border"},A));this.delayedApply=new Ext.util.DelayedTask(this.updatePreview,this)};Ext.extend(CadX.Vectorize.VectorizePanel,Ext.Panel,{figure:null,previewImage:null,pMask:null,vectorizeComplete:false,vectorizeSuccess:false,clearPreview:function(){this.previewImage.dom.src=Ext.BLANK_IMAGE_URL},getData:function(){var A=this.formPanel.getData();A.imageId=this.ownerCt.image.id;A.forecolor=this.ownerCt.getForegroundColor();A.backcolor=this.ownerCt.getBackgroundColor();A.renderId=this.figure?this.figure.renderId:null;return A},getPreviewImageBox:function(E){var F=E.getBounds(),B=F.hx-F.lx,H=F.hy-F.ly,D=this.previewPanel.body.getBox(),G={x:D.x+D.width/2,y:D.y+D.height/2},I=1;D.width-=25;D.height-=25;var A=D.width/B;var J=D.height/H;if(A<J){I=A}else{I=J}var C={height:H*I,width:B*I,x:G.x-(B*I/2),y:G.y-(H*I/2),zoom:I};return C},handleItemState:function(){var B=this.buttons;B.push(this.formPanel.applyButton);for(var D=0,A=B.length;D<A;D++){if(B[D].require){var E=B[D].require,C=false;if(E.isDirty&&E.isDirty.required){C=this.ownerCt.isDirty===false?true:C}if(E.isValid&&E.isValid.required){C=this.formPanel.getForm().isValid()===false?true:C}if(E.vectorizeComplete&&E.vectorizeComplete.required){C=this.vectorizeComplete===false?true:C}if(E.vectorizeSuccess&&E.vectorizeSuccess.required){C=this.vectorizeSuccess===false?true:C}if(C){B[D].disable()}else{if(B[D].disabled){B[D].enable()}}}}},hideMask:function(){this.pMask.hide()},onApply:function(){this.vectorizeComplete=false;this.vectorizeSuccess=false;this.vectorize(false)},onBack:function(){this.ownerCt.navHandler(-1)},onCancel:function(){this.ownerCt.onCancel()},onFormUpdated:function(){this.fireEvent("formupdated",this);this.handleItemState()},onFinish:function(){this.ownerCt.onFinish()},onPreviewRender:function(){this.previewImage=Ext.DomHelper.append(this.previewPanel.body,{tag:"img",src:Ext.BLANK_IMAGE_URL},true)},onVectorizeComplete:function(A){this.vectorizeComplete=true;if(A.success===true){this.vectorizeSuccess=true;this.fireEvent("vectorizecomplete",this)}else{this.vectorizeSuccess=false;this.fireEvent("vectorizefailed",this);CadX.alert("Communication Failure: Try again!")}this.hideMask();this.handleItemState()},reset:function(){this.clearPreview();this.formPanel.reset();this.figure=null;this.vectorizeComplete=false;this.vectorizeSuccess=false;if(this.pMask&&this.pMask.isVisible){this.pMask.hide()}},updatePreviewImage:function(A){var C=this.getPreviewImageBox(A);var D=new Image();D.src=A.getRenderCacheUrl({zoom:C.zoom});var B=new Ext.util.DelayedTask(function(){if(D.complete){B.cancel();this.previewImage.dom.src=D.src;this.previewImage.setSize(C.width,C.height);this.previewImage.setLocation(C.x,C.y);this.onVectorizeComplete({success:true})}else{B.delay(200)}},this);B.delay(200)},updatePreview:function(){this.clearPreview();this.handleItemState();var A=CadX.Net.getUrl(CadX.Net.IMAGE_VECTORIZE),B=this.getData();CadX.Net.request(A,B,function(F){if(F.getSuccess()){var D=CadX.Document.fromXml(F.getData()),E=D.getFigures(),C=E[0];C.render(function(G){if(G&&G.success){this.updatePreviewImage(C);this.figure=C}else{this.onVectorizeComplete({success:false})}},this)}else{this.onVectorizeComplete({success:false})}},this);this.showMask()},vectorize:function(A){if(A===true&&!this.ownerCt.isDirty){return }this.updatePreview()},showMask:function(A){if(!this.pMask){this.pMask=new Ext.LoadMask(this.previewPanel.body,{msg:"Updating..."})}if(A){this.pMask.msg=A}this.pMask.show()}});CadX.FigureEditor=function(A){CadX.FigureEditor.superclass.constructor.apply(this,arguments);this.addEvents({editComplete:true,hide:true,show:true});this.buildWindow();this.previewImage=null;this.workingFigure=null;this.editorFigure=null;this.loadedObject=null;this.updatingUi=false;this.updatePreviewTask=new Ext.util.DelayedTask(this.updatePreview,this)};Ext.extend(CadX.FigureEditor,Ext.util.Observable,{height:500,mainWindow:null,mask:null,preview:null,propertyGrid:null,resizable:false,width:700,defaultTimeout:1000,maxEffectCount:8,buildWindow:function(){this.processStack=new CadX.Controls.EffectStack();this.processStack.on("additem",this.onAddProcessItem,this);this.processStack.on("removeitem",this.onRemoveProcessItem,this);this.processStack.on("beforeselectitem",this.isDataValid,this);this.processStack.on("selectitem",this.onSelectProcessItem,this);this.processStack.on("orderchanged",this.onProcessOrderChanged,this);this.effectStack=new Ext.Panel({id:"cadx-figure-editor-effects",collapsible:false,height:125,layout:"fit",margins:"0 5 5 5",region:"south",items:[this.processStack],tbar:["->",{handler:this.processStack.onAddItemClick,iconCls:"cadx-add-effect-icon",scope:this.processStack,text:"Add Effect"},{handler:this.processStack.onRemoveItemClick,iconCls:"cadx-remove-effect-icon",scope:this.processStack,text:"Remove Effect"}]});this.previewPanel=new Ext.Panel({id:"cadx-figure-editor-west",region:"west",width:330,margins:"5 5 5 5",minHeight:0});this.propertyPanel=new Ext.Panel({autoScroll:true,bodyStyle:"padding:10px",id:"cadx-figure-editor-center",layout:"form",region:"center",margins:"5 5 5 0",autoScroll:true,minHeight:0});this.mainWindow=new Ext.Window({border:true,buttons:[{handler:this.onGeneratePreview,id:"apply",scope:this,text:"Apply"},{handler:this.onOk,scope:this,text:"Ok"},{handler:function(){this.mainWindow.hide()},scope:this,text:"Cancel"}],closeAction:"hide",closable:true,cls:"cadx-dialog",height:this.height,id:"cadx-figure-editor",items:[this.effectStack,this.previewPanel,this.propertyPanel],layout:"border",plain:true,title:"Editor",width:this.width,modal:true});this.mainWindow.on({hide:{fn:function(){this.fireEvent("hide",this)},scope:this},show:{fn:function(){this.onShow();this.fireEvent("show",this)},scope:this}});this.previewPanel.on("render",this.onPreviewRender,this);this.processBrowser=new CadX.Dialog.DocumentBrowser({width:700,height:480})},onPreviewRender:function(){this.previewImage=Ext.DomHelper.append(this.previewPanel.body,{tag:"img",src:Ext.BLANK_IMAGE_URL},true)},show:function(A){this.config=A;if(A.callback&&A.scope){this.callback=A.callback;this.scope=A.scope}this.mainWindow.show();this.mainWindow.center()},hide:function(){this.mainWindow.hide()},onShow:function(){this.mask=new Ext.LoadMask(this.previewPanel.body,{msg:"Rendering..."});this.hideMask();if(this.config.editFigure){this.editFigure=this.config.editFigure}if(this.config.mode=="create"){this.workingFigure=new CadX.TextBlockFigure();this.updatePreview()}else{this.workingFigure=this.config.editFigure.clone();this.updatePreviewImage(this.config.editFigure)}this.processStack.load(this.workingFigure);this.processStack.selectStackItemByIndex(0)},showMask:function(B,A){this.mask.show()},hideMask:function(){this.mask.hide()},animateApplyButton:function(){this.mainWindow.buttons[0].el.frame("000099",1,{block:true,duration:1})},enableApplyButton:function(){this.mainWindow.buttons[0].enable()},disableApplyButton:function(){this.mainWindow.buttons[0].disable()},enableOkButton:function(){},disableOkButton:function(){},onAddProcessItem:function(){if(this.isDataValid()){this.processBrowser.show({mode:"process",initPath:"/Search/Quick Styles",callback:this.onDocumentLoaded,scope:this})}},onDocumentLoaded:function(B){if(B){var A=B.getFigureAt(0);if(!this.workingFigure.addProcessesFromFigure(A)){Ext.Msg.alert("Effect Rule Notice","Not all effects could be added. The effect you were trying to add is required to be the first item")}this.processStack.load(this.workingFigure);this.processStack.selectStackItemByIndex(this.processStack.getCount()-1);this.onEditComplete(0)}},onRemoveProcessItem:function(){this.processStack.selectStackItemByIndex(0);this.onEditComplete(0)},onSelectProcessItem:function(A,B){this.loadProperties(B.data);this.handleToolbarState()},onProcessOrderChanged:function(A,B){this.onEditComplete(0)},handleToolbarState:function(){var A=this.effectStack.getTopToolbar().items,B=this.processStack.selectedItem,C=this.processStack.getCount();A.each(function(D){if(D.text==="Add Effect"){if(C>this.maxEffectCount){D.disable()}else{D.enable()}}else{if(D.text==="Remove Effect"){if(B&&B.data){if(B.data instanceof CadX.TextBlockFigure){D.disable()}else{if(D.disabled){D.enable()}}}}}},this)},buildForm:function(F){var A=this.propertyPanel;var E=A.items.clone();for(var C=0;C<E.length;++C){var H=E.itemAt(C);A.remove(H,true)}var D=new Ext.util.MixedCollection();for(var C=0;C<F.length;++C){var B=F[C];var J=B.group;if(!D.containsKey(J)){D.add(J,new Ext.form.FieldSet({title:J,autoHeight:true,titleCollapse:true}))}var I=D.key(J);if(B.createEditor){var G=B.createEditor();I.add(G)}else{I.add(new Ext.form.TextField({value:"No Impl"}))}}for(var C=0;C<D.length;++C){var I=D.itemAt(C);A.add(I)}A.doLayout()},onEditComplete:function(A){if(!this.updatingUi&&this.workingFigure!=null){this.workingFigure.invalidateAll();this.updatePreviewTask.delay(A)}},createTextEditor:function(D){var B=this;function A(E){this.set(E.getValue());B.onEditComplete(2000)}var C=new Ext.form.TextField({value:D.get(),fieldLabel:D.label,selectOnFocus:true,allowBlank:false});C.on("valid",A,D);return C},createFontEditor:function(C){var A=this;var B=new CadX.Controls.FontBox({value:C.get(),fieldLabel:C.label,selectOnFocus:false,allowBlank:false,readOnly:true});B.on("valid",function(D){this.set(D.getValue());A.onEditComplete(1)},C);return B},createOptionEditor:function(D,A){var B=this;var C=new Ext.form.ComboBox({editable:false,value:D.get(),fieldLabel:D.label,selectOnFocus:true,mode:"local",triggerAction:"all",displayField:"label",valueField:"key",store:new Ext.data.SimpleStore({fields:["label","key"],data:A})});C.on("select",function(E){this.set(E.getValue());B.onEditComplete(1)},D);return C},createIndexEditor:function(F,C,E){var B=this;var A={};if(C!=null||typeof (C)!=undefined){A.minValue=C}if(E!=null||typeof (E)!=undefined){A.maxValue=E}var D=new CadX.Controls.Spinner({value:F.get(),allowDecimal:false,fieldLabel:F.label,strategy:new CadX.Controls.Spinner.NumberStrategy(A)});D.on("valid",function(G){this.set(G.getValue());B.onEditComplete(B.defaultTimeout)},F);return D},createDegreeEditor:function(F,C,E){var B=this;var A={minValue:0,maxValue:360};if(C!=null||typeof (C)!=undefined){A.minValue=C}if(E!=null||typeof (E)!=undefined){A.maxValue=E}var D=new CadX.Controls.Spinner({value:F.get(),fieldLabel:F.label,strategy:new CadX.Controls.Spinner.NumberStrategy(A)});D.addClass("cadx-degree");D.on("valid",function(G){this.set(G.getValue());B.onEditComplete(B.defaultTimeout)},F);return D},createPercentEditor:function(F,C,E){var B=this;var A={incrementValue:0.01,minValue:0.01,maxValue:2};if(C!=null||typeof (C)!=undefined){A.minValue=C}if(E!=null||typeof (E)!=undefined){A.maxValue=E}var D=new CadX.Controls.PercentSpinner({minValue:C,maxValue:E,fieldLabel:F.label,strategy:new CadX.Controls.Spinner.NumberStrategy(A)});D.setDecimalValue(F.get());D.addClass("cadx-percent");D.on("valid",function(G){this.set(G.getDecimalValue());B.onEditComplete(B.defaultTimeout)},F);return D},createUnitEditor:function(F,C,E){var B=this;var A={incrementValue:0.01,minValue:-406.4,maxValue:406.4};if(C!=null||typeof (C)!=undefined){A.minValue=C}if(E!=null||typeof (E)!=undefined){A.maxValue=E}var D=new CadX.Controls.UnitSpinner({minValue:C,maxValue:E,documentValue:F.get(),fieldLabel:F.label,regex:"/^(((+|-)?\d+(.\d*)?)|((+|-)?(\d*.)?\d+))$/",strategy:new CadX.Controls.Spinner.UnitStrategy(A)});D.addClass("cadx-unit-"+CadX.designer.units.userUnit);D.on("valid",function(G){this.set(G.getDocumentValue());B.onEditComplete(B.defaultTimeout)},F);return D},createColorEditor:function(C){var A=this;var B=new Ext.form.ColorField({value:C.get(),fieldLabel:C.label,editable:false});B.on("valid",function(D){this.set(D.getValue());A.onEditComplete(1)},C);return B},createBoolEditor:function(C){var A=this;var B=new Ext.form.Checkbox({checked:C.get(),fieldLabel:C.label});B.on("check",function(D){this.set(D.getValue());A.onEditComplete(1)},C);return B},getBoxCenter:function(A){return{x:A.x+A.width/2,y:A.y+A.height/2}},getPreviewImageBox:function(C){var H=C.getBounds();var E=H.hx-H.lx;var B=H.hy-H.ly;var D=this.previewPanel.body.getBox();var A={x:D.x+D.width/2,y:D.y+D.height/2};var G=1;if(E>B){G=(D.width-25)/E}else{G=(D.height-25)/B}var F={x:A.x-(E*G/2),y:A.y-(B*G/2)};F.zoom=G;return F},updatePreviewImage:function(A){var B=this.getPreviewImageBox(A);this.previewImage.setLocation(B.x,B.y);this.previewImage.dom.src=A.getRenderCacheUrl({zoom:B.zoom})},updatePreview:function(B,A){if(this.previewImage!=null&&this.workingFigure!=null){this.disableApplyButton();this.disableOkButton();this.showMask();this.workingFigure.render(function(C){if(this.workingFigure!=null&&C.success){this.updatePreviewImage(this.workingFigure);if(B&&A){B.call(A)}}else{Ext.MessageBox.confirm("Server Error","Connection failed.  Try again?",function(D){if(D=="yes"){this.updatePreview()}},this)}this.enableApplyButton();this.enableOkButton();this.hideMask()},this)}},onPreviewResize:function(){this.updatePreview()},isDataValid:function(){var B=true;function A(D){function C(E){if(E.isValid&&!E.isValid()){B=false}}if(D.getXType()==="fieldset"){D.items.each(C,this)}}this.propertyPanel.items.each(A,this);if(!B){Ext.MessageBox.alert("Invalid Data","Please correct invalid data.")}return B},onGeneratePreview:function(){if(this.isDataValid()){this.workingFigure.invalidateAll();this.updatePreview()}},onOk:function(){if(this.callback&&this.scope){var B=this.workingFigure;var A=this.editFigure;this.workingFigure=null;this.editFigure=null;this.hide();this.callback.call(this.scope,B,A)}},loadProperties:function(A){if(this.loadedObject==A){return }this.loadedObject=A;this.updatingUi=true;var C=[];var B=this;if(A instanceof CadX.TextBlockFigure){C.push({group:"Text",label:"Text",set:function(D){A.setLine(D)},get:function(){return A.getLine()},createEditor:function(){return B.createTextEditor(this)}});C.push({group:"Text",label:"Font",set:function(D){A.setFont({guid:D.id,name:D.name,style:D.style})},get:function(){return A.getFont()},createEditor:function(){return B.createFontEditor(this)}});C.push({group:"Text",label:"Size",set:function(D){A.setFont({size:D})},get:function(){return A.getFont().size},createEditor:function(){return B.createUnitEditor(this,0.254,406.4)}});C.push({group:"Text",label:"Color",set:function(D){A.setBrush({color:D})},get:function(){return A.getBrush().color},createEditor:function(){return B.createColorEditor(this)}});C.push({group:"Advanced",label:"Char. Spacing",set:function(D){A.setSpacing(D)},get:function(){return A.getSpacing()},createEditor:function(){return B.createUnitEditor(this,-406.4,406.4,"cadx-kerning-field")}});C.push({group:"Advanced",label:"Text Direction",set:function(D){A.setLineDirection(D)},get:function(){return A.getLineDirection()},createEditor:function(){return B.createDegreeEditor(this,0,360)}})}else{if(A instanceof CadX.ShapeFigure){C.push({group:"Shape",label:"Color:",set:function(D){A.setBrush({color:D})},get:function(){return A.getBrush().color},createEditor:function(){return B.createColorEditor(this)}})}else{if(A instanceof CadX.ContourProcess){C.push({group:"Contour",label:"Offset",set:function(D){A.setAttr({offset:D})},get:function(){return A.getAttr().offset},createEditor:function(){return B.createUnitEditor(this,0.254,406.4)}});C.push({group:"Contour",label:"Steps",set:function(D){A.setAttr({steps:D})},get:function(){return A.getAttr().steps},createEditor:function(){return B.createIndexEditor(this,1,9)}});C.push({group:"Contour",label:"Color",set:function(D){A.setBrush({color:D})},get:function(){return A.getBrush().color},createEditor:function(){return B.createColorEditor(this)}});C.push({group:"Advanced",label:"Inside",set:function(D){A.setAttr({inside:D})},get:function(){return A.getAttr().inside},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Advanced",label:"Outside",set:function(D){A.setAttr({outside:D})},get:function(){return A.getAttr().outside},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Advanced",label:"No Holes",set:function(D){A.setAttr({includeHoles:!D})},get:function(){return !A.getAttr().includeHoles},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Advanced",label:"Combine",set:function(D){A.setAttr({combine:D})},get:function(){return A.getAttr().combine},createEditor:function(){return B.createBoolEditor(this)}})}else{if(A instanceof CadX.ShadowProcess){C.push({group:"Shadow",label:"Horizontal Offset",set:function(D){A.setAttr({offsetX:D})},get:function(){return A.getAttr().offsetX},createEditor:function(){return B.createUnitEditor(this,-406.4,406.4)}});C.push({group:"Shadow",label:"Vertical Offset",set:function(D){A.setAttr({offsetY:D})},get:function(){return A.getAttr().offsetY},createEditor:function(){return B.createUnitEditor(this,-406.4,406.4)}});C.push({group:"Shadow",label:"Color",set:function(D){A.setBrush({color:D})},get:function(){return A.getBrush().color},createEditor:function(){return B.createColorEditor(this)}});C.push({group:"Advanced",label:"Gap",set:function(D){A.setAttr({gap:D})},get:function(){return A.getAttr().gap},createEditor:function(){return B.createUnitEditor(this,0,406.4)}});C.push({group:"Advanced",label:"Simplify",set:function(D){A.setAttr({simplify:D})},get:function(){return A.getAttr().simplify},createEditor:function(){return B.createBoolEditor(this)}})}else{if(A instanceof CadX.FitEnvelopeProcess){C.push({group:"Envelope Fit",label:"Horizontal Fit",set:function(D){A.setAttr({hPos:D})},get:function(){return A.getAttr().hPos},createEditor:function(){return B.createOptionEditor(this,[["Stretched","Stretched"],["Center","Center"],["Left","Left"],["Right","Right"]])}});C.push({group:"Envelope Fit",label:"Vertical Fit",set:function(D){A.setAttr({vPos:D})},get:function(){return A.getAttr().vPos},createEditor:function(){return B.createOptionEditor(this,[["Stretched","Stretched"],["Top","Top"],["Middle","Middle"],["Bottom","Bottom"]])}})}else{if(A instanceof CadX.SplitFrontProcess){C.push({group:"Split Front",label:"Split",set:function(D){A.setAttr({pos:D})},get:function(){return A.getAttr().pos},createEditor:function(){return B.createPercentEditor(this,0.01,100)}});C.push({group:"Split Front",label:"Overlap",set:function(D){A.setAttr({overlap:D})},get:function(){return A.getAttr().overlap},createEditor:function(){return B.createUnitEditor(this,0,406.4)}});C.push({group:"Split Front",label:"Turn",set:function(D){A.setAttr({turn:D})},get:function(){return A.getAttr().turn},createEditor:function(){return B.createPercentEditor(this,0,100)}});C.push({group:"Split Front",label:"Gap",set:function(D){A.setAttr({gap:D})},get:function(){return A.getAttr().gap},createEditor:function(){return B.createUnitEditor(this,0,406.4)}})}else{if(A instanceof CadX.FitEllipseProcess){C.push({group:"Circle Text",label:"Height",set:function(D){A.setAttr({height:D})},get:function(){return A.getAttr().height},createEditor:function(){return B.createUnitEditor(this,25.4,406.4)}});C.push({group:"Circle Text",label:"Width",set:function(D){A.setAttr({width:D})},get:function(){return A.getAttr().width},createEditor:function(){return B.createUnitEditor(this,25.4,406.4)}});C.push({group:"Circle Text",label:"Placement",set:function(D){A.setAttr({placement:D})},get:function(){return A.getAttr().placement},createEditor:function(){return B.createDegreeEditor(this,0,360)}});C.push({group:"Circle Text",label:"Reverse",set:function(D){A.setAttr({mirror:D})},get:function(){return A.getAttr().mirror},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Circle Text",label:"Fit",set:function(D){A.setAttr({fit:D})},get:function(){return A.getAttr().fit},createEditor:function(){return B.createOptionEditor(this,[["None","None"],["Stretched","Stretched"],["Scaled","Scaled"]])}});C.push({group:"Advanced",label:"Rotate Char.",set:function(D){A.setAttr({dontRotate:!D})},get:function(){return !A.getAttr().dontRotate},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Advanced",label:"Inside",set:function(D){A.setAttr({inside:D})},get:function(){return A.getAttr().inside},createEditor:function(){return B.createBoolEditor(this)}});C.push({group:"Advanced",label:"Rotation",set:function(D){A.setAttr({rotation:D})},get:function(){return A.getAttr().rotation},createEditor:function(){return B.createDegreeEditor(this,0,360)}})}else{if(A instanceof CadX.VerticalArchProcess){C.push({group:"Vertical Arch",label:"Height",set:function(E){var D,G,F;if(E<0){D=Math.abs(E);G=190;F=350}else{D=E;G=170;F=10}A.setAttr({height:D,from:G,to:F})},get:function(){if(A.getAttr().from<A.getAttr().to){return -A.getAttr().height}else{return A.getAttr().height}},createEditor:function(){return B.createUnitEditor(this,-1625.6,1625.6)}});C.push({group:"Vertical Arch",label:"Width",set:function(D){A.setAttr({width:D})},get:function(){return A.getAttr().width},createEditor:function(){return B.createUnitEditor(this,25.4,1625.6)}})}else{if(A instanceof CadX.CapitalProcess){C.push({group:"Book Ends",label:"Horizontal",set:function(D){A.setAttr({scaleX:D})},get:function(){return A.getAttr().scaleX},createEditor:function(){return B.createPercentEditor(this,0.01,500)}});C.push({group:"Book Ends",label:"Vertical",set:function(D){A.setAttr({scaleY:D})},get:function(){return A.getAttr().scaleY},createEditor:function(){return B.createPercentEditor(this,0.01,500)}});C.push({group:"Book Ends",label:"V-Align",set:function(D){A.setAttr({vAlignment:D})},get:function(){return A.getAttr().vAlignment},createEditor:function(){return B.createOptionEditor(this,[["Baseline","Baseline"],["Top","Top"],["Middle","Middle"],["Bottom","Bottom"]])}})}else{if(A instanceof CadX.ClassicArcProcess){C.push({group:"Classic Arc",label:"Height Diameter",set:function(E){var D,G,F;if(E<0){D=Math.abs(E);G=190;F=350}else{D=E;G=170;F=10}A.setAttr({height:D,from:G,to:F})},get:function(){if(A.getAttr().from<A.getAttr().to){return -A.getAttr().height}else{return A.getAttr().height}},createEditor:function(){return B.createUnitEditor(this,-1625.6,1625.6)}});C.push({group:"Classic Arc",label:"Width Diameter",set:function(D){A.setAttr({width:D})},get:function(){return A.getAttr().width},createEditor:function(){return B.createUnitEditor(this,25.4,406.4)}});C.push({group:"Classic Arc",label:"Rotate Char.",set:function(D){A.setAttr({dontRotate:!D})},get:function(){return !A.getAttr().dontRotate},createEditor:function(){return B.createBoolEditor(this)}})}else{if(A instanceof CadX.BorderProcess){C.push({group:"Border",label:"Horizontal Gap",set:function(D){A.setAttr({dX:D})},get:function(){return A.getAttr().dX},createEditor:function(){return B.createUnitEditor(this,0,812.8)}});C.push({group:"Border",label:"Vertical Gap",set:function(D){A.setAttr({dY:D})},get:function(){return A.getAttr().dY},createEditor:function(){return B.createUnitEditor(this,0,812.8)}})}}}}}}}}}}}this.buildForm(C);this.updatingUi=false}});CadX.Dialog.BrowserBase=function(B){this.mask=null;this.pageSize=B.pageSize||6;this.directoryTemplate=B.directoryTemplate;this.itemStore=B.itemStore;this.itemTemplate=B.itemTemplate;this.categoryStore=B.categoryStore;var C=new Ext.app.SearchField({limit:this.pageSize,store:this.itemStore,paramName:"search"});this.toolbar=new Ext.Toolbar({items:[{iconCls:"CadX-file-delete",handler:this.documentArchive,scope:this,text:"Delete"},{iconCls:"CadX-file-edit",handler:this.onEditDocument,scope:this,text:"Edit Properties"},"->",new Ext.Toolbar.TextItem("Search")," "," ",C," "]});this.label=new Ext.form.TextField({width:175});this.notes=new Ext.form.TextArea({width:400,rowspan:3});this.category=new Ext.form.ComboBox({store:this.categoryStore,displayField:"label",valueField:"id",minListWidth:180,typeAhead:false,mode:"remote",triggerAction:"all",emptyText:"Select a Category...",editable:false,forceSelection:true,selectOnFocus:false,resizeable:false});this.attributesPanel=new Ext.Panel({bodyStyle:"background-color:transparent;",border:false,autoHeight:true,region:"south",layout:"table",layoutConfig:{columns:3},items:[{html:"Name: ",bodyStyle:"background-color:transparent;",border:false},{html:"&nbsp;",rowspan:4,bodyStyle:"background-color:transparent;margin:5px",border:false},{html:"Notes: ",bodyStyle:"background-color:transparent;",border:false},this.label,this.notes,{html:"Category: ",bodyStyle:"background-color:transparent;",border:false},this.category],margins:"4 4 4 4"});this.attributesPanel.hide();this.directoryPanel=new CadX.Controls.SearchTree({bodyStyle:"border-width:0 1px 0 0;padding:4px;",id:"cadx-browser-directories",region:"west",width:175});this.itemView=new Ext.DataView({store:this.itemStore,tpl:this.itemTemplate,singleSelect:true,overClass:"x-view-over",itemSelector:"div.thumb-wrap",emptyText:"<p>No items could be found in this folder.</p><p>Check in child folders by clicking the arrow next to the folder.</p>",loadingText:"Loading..."});this.itemPanel=new Ext.Panel({border:false,id:"cadx-browser-items",frame:false,autoScroll:true,bodyStyle:"padding:4px",region:"center",items:this.itemView,bbar:new Ext.PagingToolbar({store:this.itemStore,pageSize:this.pageSize})});var A={border:true,cls:"cadx-dialog",buttons:[{handler:this.onApplyButton,scope:this,text:"Apply"},{handler:this.onOkButton,scope:this,text:"Select"},{handler:this.onCancelButton,scope:this,text:"Cancel"}],items:[this.directoryPanel,this.itemPanel,this.attributesPanel],layout:"border",title:"Browser",shadow:false,plain:false,closeAction:"hide",closable:true,width:700,height:455,tbar:this.toolbar};Ext.apply(A,this.windowConfig);this.dialog=new Ext.Window(A);this.dialog.on("show",this.onShow,this);this.dialog.on("close",this.onCancelButton,this);this.dialog.on("hide",this.onCancelButton,this);this.itemView.on("click",this.onItemSelected,this);this.itemView.on("dblclick",this.onOkButton,this);this.itemView.on("selectionchange",this.handleButtonState,this);this.directoryPanel.getSelectionModel().on("selectionchange",this.onSearchSelected,this);this.directoryPanel.getLoader().on("load",this.onSearchTreeLoaded,this)};CadX.Dialog.BrowserBase.prototype={onSearchTreeLoaded:function(B,C,A){if(this.initPath){this.directoryPanel.selectPath(this.initPath,"text")}},doSearch:function(A){this.itemStore.baseParams=A;this.itemStore.load({params:{start:0,limit:this.pageSize}})},onSearchSelected:function(A,B){if(B&&B.attributes&&B.attributes.params){this.doSearch(B.attributes.params)}},handleButtonState:function(A,D){if(D){var B=true;if(D.length>0){var E=this.getSelectedItem();if(E&&E.owner===true){B=false}}var C=this.toolbar.items;C.each(function(F){if(F.text==="Delete"||F.text==="Edit Properties"){if(B){F.disable()}else{if(F.disabled){F.enable()}}}})}},stopLoad:function(){this.itemStore.load({params:{empty:true}})},onEditDocument:function(){var B=this.getSelectedItem(),A=this.itemView;if(B!=null){var C=null;if(this.scope&&this.scope.saveDialog){C=this.scope.saveDialog}else{C=new CadX.Dialog.Save({width:400,height:300})}C.show({callback:function(D){A.store.reload()},mode:"properties",properties:B})}},show:function(A){if(A.callback&&A.scope){this.callback=A.callback;this.scope=A.scope}this.mode=A.mode;this.initPath=A.initPath;this.dialog.show();if(A&&A.height){this.dialog.setHeight(A.height)}this.dialog.center();this.dialog.doLayout();this.itemView.el.update("")},hide:function(){this.dialog.hide()},onShow:function(){this.mask=new CadX.Mask(Ext.get(this.dialog.body.dom.parentNode))},showToolbar:function(A){this.toolbar.setVisible(A)},showDirectoryPanel:function(A){this.directoryPanel.setVisible(A)},showItemPanel:function(A){this.itemPanel.setVisible(A)},showAttributePanel:function(A){this.attributesPanel.setVisible(A)},setApplyButtonText:function(A){this.dialog.buttons[0].setText(A)},showApplyButton:function(A){this.dialog.buttons[0].setVisible(A)},setOkButtonText:function(A){this.dialog.buttons[1].setText(A)},setTitle:function(A){this.dialog.setTitle(A)},getLabel:function(){return this.label.getValue()},setLabel:function(A){this.label.setValue(A)},getNotes:function(){return this.notes.getValue()},setNotes:function(A){this.notes.setValue(A)},getCategory:function(){return this.category.getValue()},setCategory:function(A){this.category.setValue(A)},setSelectedDirectory:function(A){},getSelectedDirectory:function(){},getSelectedItem:function(){var A=this.itemView.getSelectedRecords();if(A.length>0){return A[0].data}else{return null}},onApplyButton:function(A,B){},onOkButton:function(A,B){},onCancelButton:function(){if(this.mask&&this.mask.isVisible){this.mask.hide();if(Ext.isIE){this.dialog.doLayout()}this.enableButtons()}this.dialog.hide()},onItemSelected:function(){},showMask:function(B,A){B=B||"Working...";if(A==="progress"){this.mask.show({msg:B,type:A})}if(A==="alert"){this.mask.show({callback:{fn:function(){if(Ext.isIE){this.dialog.doLayout()}this.enableButtons()},scope:this},clickToHide:true,msg:B,type:A})}this.disableButtons()},hideMask:function(){this.mask.hide();if(Ext.isIE){this.dialog.doLayout()}this.enableButtons()},enableButtons:function(){var C=this.dialog.buttons;for(var B=0,A=C.length;B<A;B++){C[B].enable()}},disableButtons:function(){var C=this.dialog.buttons;for(var B=0,A=C.length;B<A;B++){if(C[B].text!=="Cancel"){C[B].disable()}}},documentArchive:function(){var A=this.getSelectedItem();if(A!=null){Ext.MessageBox.confirm("Confirm","Are you sure you want to delete this document?",function(B){if(B==="yes"){this.showMask("Deleting...","progress");this.disableButtons();CadX.Document.Archive(A.id,function(C){this.hideMask();this.enableButtons();if(C&&C.success){this.itemView.store.reload()}else{Ext.MessageBox.confirm("Server Error","Save failed.  Try again?",function(D){if(D=="yes"){this.documentArchive()}},this)}},this)}},this)}}};CadX.Dialog.FontBrowser=function(){var A={directoryTemplate:new Ext.XTemplate('<tpl for=".">','<div class="x-directory">{label}</div>',"</tpl>"),itemStore:new Ext.data.JsonStore({url:CadX.Net.getUrl(CadX.Net.SEARCH_FONTS),root:"fonts",fields:["id","name","style"]}),itemTemplate:new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="{name}">','<div class="thumb"><img src="'+CadX.Net.getUrl(CadX.Net.RENDER_FONTTHUMBNAIL)+'&id={id}&height=24" title="{name}"></div>','<span class="x-editable">{name}</span></div>',"</tpl>",'<div class="x-clear"></div>')};CadX.Dialog.FontBrowser.superclass.constructor.call(this,A)};Ext.extend(CadX.Dialog.FontBrowser,CadX.Dialog.BrowserBase,{show:function(A){if(A.callback&&A.scope){this.callback=A.callback;this.scope=A.scope}this.setTitle("Select Font");this.setOkButtonText("Select");this.showApplyButton(false);this.showAttributePanel(false);this.directoryPanel.loader.baseParams.display="fonts";this.directoryPanel.root.reload();CadX.Dialog.FontBrowser.superclass.show.call(this,A)},onOkButton:function(){if(this.callback&&this.scope){this.callback.call(this.scope,this.getSelectedItem())}this.hide()}});CadX.Dialog.DocumentBrowser=function(A){var A=Ext.applyIf({directoryTemplate:new Ext.XTemplate('<tpl for=".">','<div class="x-directory">{label}</div>',"</tpl>"),itemStore:new Ext.data.JsonStore({listeners:{loadexception:{fn:function(D,E,C,B){var G="Connection to the server was lost.";if(C&&C.responseText){var F=Ext.decode(C.responseText);G=F.errorMessage||G}this.itemStore.removeAll();Ext.MessageBox.alert("Alert",G)},scope:this}},url:CadX.Net.getUrl(CadX.Net.SEARCH_DOCUMENTS),root:"documents",totalProperty:"totalCount",fields:["id","label","notes","category","owner"]}),itemTemplate:new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="{name}">','<div class="thumb"><img src="'+CadX.Net.getUrl(CadX.Net.RENDER_DOCUMENTTHUMBNAIL)+'&id={id}&nocache={[new Date().getTime()]}" title="{name}"></div>',"</div>","</tpl>",'<div class="x-clear"></div>'),categoryStore:new Ext.data.JsonStore({url:CadX.Net.getUrl(CadX.Net.LIST_DOCUMENT_CATEGORY),root:"categories",fields:["id","label"]})},A);CadX.Dialog.DocumentBrowser.superclass.constructor.call(this,A)};Ext.extend(CadX.Dialog.DocumentBrowser,CadX.Dialog.BrowserBase,{show:function(A){switch(A.mode){case"open":this.setTitle("Load File");this.setOkButtonText("Open");this.showApplyButton(false);this.showAttributePanel(false);this.directoryPanel.loader.baseParams.display="default";this.directoryPanel.root.reload();break;case"process":this.setTitle("Select Process");this.showApplyButton(false);this.setOkButtonText("Select");this.showAttributePanel(false);this.directoryPanel.loader.baseParams.display="process";this.directoryPanel.root.reload();break}CadX.Dialog.DocumentBrowser.superclass.show.call(this,A)},onApplyButton:function(A,B){CadX.Dialog.DocumentBrowser.superclass.onApplyButton.call(this,A,B);Ext.MessageBox.confirm("Confirm","Are you sure?  This will overwrite your file!",function(C){if(C==="yes"){this.showMask("Please wait...","progress");if(this.mode=="save"){this.documentSave(true)}}},this)},onOkButton:function(A,B){CadX.Dialog.DocumentBrowser.superclass.onOkButton.call(this,A,B);if(this.mode=="open"||this.mode=="process"){this.documentOpen()}else{if(this.mode=="save"){this.showMask("Saving...","progress");this.documentSave(false)}else{if(this.mode=="archive"){this.documentArchive()}else{if(this.mode=="attributes"){this.documentSaveAttributes()}}}}},onItemSelected:function(){if(this.mode=="attributes"){var A=this.getSelectedItem();this.setLabel(A.label);this.setNotes(A.notes);this.setCategory(A.category)}},documentOpen:function(){function C(D,E){if(D!=null){this.callback.call(this.scope,D);this.dialog.hide()}else{CadX.alert(E)}}var B=this.getSelectedItem();if(B!=null&&this.callback&&this.scope){var A=CadX.Document.load(B.id,C,this)}}});CadX.Dialog.Error=function(A){this.formPanel=new CadX.Dialog.ErrorForm();this.emailPanel=new Ext.Panel({autoScroll:true,bodyStyle:"border-bottom:1px solid #D0D0D0;padding:10px;",border:false,height:80,html:'<p><b>Instructions:</b></p><p>1. Select the data below.</p></p>2. Click Ctrl+C to copy it to your clipboard.</p><p>3. Email it to <a href="mailto:bugs@cadworxlive.com?Subject=Error%20Report%20From%20CadworxLive">bugs@cadworxlive.com</a>.</p>',region:"north",split:false});CadX.Dialog.Error.superclass.constructor.call(this,Ext.apply({border:true,buttons:[{handler:this.formPanel.selectXML,scope:this.formPanel,text:"Select Data"},{handler:this.onClose,scope:this,text:"Close"}],cls:"cadx-dialog",items:[this.formPanel,this.emailPanel],layout:"border",minHeight:200,minWidth:300,title:"Error Reporting",shadow:false,plain:true,closeAction:"hide",closable:true,width:400,height:300},A))};Ext.extend(CadX.Dialog.Error,Ext.Window,{onClose:function(){this.hide()},show:function(D,C,A,B){CadX.Dialog.Error.superclass.show.call(this,C,A,B);if(D&&D.errorText){this.formPanel.setXML(D.errorText)}}});CadX.Dialog.ErrorForm=function(A){this.txtArea=new Ext.form.TextArea({anchor:"100% 100%",hideLabel:true,labelSeparator:"",selectOnFocus:true,style:"background:#fff none;border-color:#fff;"});CadX.Dialog.ErrorForm.superclass.constructor.call(this,Ext.apply({bodyStyle:"background-color:transparent;",border:false,items:this.txtArea,buttonAlign:"right",region:"center"},A))};Ext.extend(CadX.Dialog.ErrorForm,Ext.form.FormPanel,{setXML:function(A){this.txtArea.setValue(A)},selectXML:function(){var A=this.txtArea;A.selectText();A.focus()}});CadX.Dialog.Export=function(A){this.formPanel=new CadX.Dialog.ExportForm();CadX.Dialog.Export.superclass.constructor.call(this,Ext.apply({border:true,buttons:[{handler:this.onOk,scope:this,tabIndex:4,text:"Ok"},{handler:this.onCancel,scope:this,tabIndex:5,text:"Cancel"}],closeAction:"hide",closable:true,cls:"cadx-dialog",height:300,iconCls:"CadX-file-export",items:this.formPanel,layout:"fit",modal:true,resizable:false,title:"Export",shadow:false,plain:true,width:400},A));this.on("hide",this.onCancel,this)};Ext.extend(CadX.Dialog.Export,Ext.Window,{defaultDpi:"150",defaultFileType:"tiff",mask:null,mDocument:null,onRender:function(B,A){CadX.Dialog.Export.superclass.onRender.call(this,B,A);this.pMask=new Ext.LoadMask(this.body,{msg:"Saving..."})},enableButtons:function(){var C=this.buttons;for(var B=0,A=C.length;B<A;B++){C[B].enable()}},disableButtons:function(){var C=this.buttons;for(var B=0,A=C.length;B<A;B++){if(C[B].text!=="Cancel"){C[B].disable()}}},haveRequired:function(){var A=true,B=this.formPanel;if(B.fileType.getValue()===""){B.fileType.markInvalid();A=false}if(B.dpi.getValue()===""){B.dpi.markInvalid();A=false}if(B.waterMark.getValue()===true&&B.waterMarkText.getValue()===""){B.waterMarkText.markInvalid();A=false}return A},hideMask:function(){this.pMask.hide();this.enableButtons()},onCancel:function(){if(this.pMask&&this.pMask.isVisible){this.pMask.hide();this.enableButtons()}this.hide()},onOk:function(){if(this.haveRequired()){var B=this.formPanel,A=[{name:"fileType",value:B.fileType.getValue()},{name:"dpi",value:B.dpi.getValue()},{name:"waterMark",value:B.waterMark.getValue()},{name:"waterMarkText",value:B.waterMarkText.getValue()||"Sample"}];this.submit(A)}},submit:function(A){if(this.callback){this.callback.call(this.scope,A);this.hide()}},show:function(E,D,A,B){CadX.Dialog.Export.superclass.show.call(this,D,A,B);this.hideMask();this.enableButtons();this.document=E.document||null;this.callback=E.callback||null;this.scope=E.scope||null;var C=this.formPanel;C.clear();C.fileType.setValue(this.defaultFileType);C.dpi.setValue(this.defaultDpi);if(this.document){this.updateDpi(this.document.getBounds())}},showMask:function(A){if(A){this.pMask.msg=A}this.pMask.show();this.disableButtons()},updateDpi:function(F){var B=F.hx-F.lx,E=F.hy-F.ly;var G=this.formPanel.dpiData;for(var D=0,A=G.length;D<A;D++){var C=G[D][0];G[D][1]=parseInt(Math.round(B*1/25.4*C));G[D][2]=parseInt(Math.round(E*1/25.4*C))}this.formPanel.dpiStore.loadData(G)}});CadX.Dialog.ExportForm=function(A){this.fileType=new Ext.form.ComboBox({anchor:"100%",displayField:"id",emptyText:"Select a File Type...",editable:false,fieldLabel:"File Type",forceSelection:true,labelSeparator:"",minListWidth:180,mode:"local",resizeable:false,selectOnFocus:false,store:new Ext.data.SimpleStore({fields:["id"],data:[["tiff"],["bmp"],["gif"],["jpeg"],["png"]]}),tabIndex:3,triggerAction:"all",typeAhead:false,valueField:"id",valueNotFoundText:""});this.dpiData=[["96","0","0"],["150","0","0"],["300","0","0"],["600","0","0"]];this.dpiStore=new Ext.data.SimpleStore({fields:["id","width","height"],data:this.dpiData});this.dpi=new Ext.form.ComboBox({anchor:"100%",displayField:"id",emptyText:"Select a Dpi...",editable:true,fieldLabel:"Dpi",forceSelection:false,labelSeparator:"",minListWidth:180,mode:"local",resizeable:false,selectOnFocus:false,store:this.dpiStore,tabIndex:3,tpl:new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item">',"<span><b>{id} dpi</b><br />Image Size: {width} by {height}</span>","</div></tpl>"),triggerAction:"all",typeAhead:false,valueField:"id",valueNotFoundText:""});this.waterMark=new Ext.form.Checkbox({fieldLabel:"Add A Watermark?",labelSeparator:"",listeners:{check:{fn:function(D,C){var B=this.waterMarkText;if(C&&B.disabled){B.enable()}else{B.disable()}},scope:this}}});this.waterMarkText=new Ext.form.TextField({anchor:"100%",disabled:true,fieldLabel:"Watermark Text",labelSeparator:"",tabIndex:1,value:"Sample"});CadX.Dialog.ExportForm.superclass.constructor.call(this,Ext.apply({bodyStyle:"background-color:transparent;padding:10px;",border:false,items:[this.fileType,this.dpi,this.waterMark,this.waterMarkText],buttonAlign:"right",labelAlign:"top"},A))};Ext.extend(CadX.Dialog.ExportForm,Ext.form.FormPanel,{clear:function(){this.getForm().reset()}});CadX.MainToolbar=Ext.extend(Ext.Toolbar,{autoCreate:{cls:"x-toolbar x-small-editor",html:'<table style="width:100%" cellspacing="0"><tbody></tbody></table>'},menuItems:null,docIdRequirement:{required:true},figureRequirement:{min:1,required:true},textFigureRequirement:{min:1,required:true},singleSelectRequirement:{min:1,required:true},multiSelectRequirement:{min:2,required:true},initMenuItems:function(){this.menuItems=[{text:"File",key:"file",iconCls:"CadX-file",items:[{iconCls:"CadX-file-new",key:"fileNew",text:"New"},{iconCls:"CadX-file-open",key:"fileOpen",text:"Open"},"-",{iconCls:"CadX-file-save",id:"save",key:"fileSave",require:{figure:this.figureRequirement,documentId:this.docIdRequirement},shortcut:{key:"s",ctrl:true,fn:function(A,C,B){C.stopEvent();if(this.allowKeyMap&&!B.disabled&&!C.shiftKey&&!C.altKey){this.run("fileSave")}}},shortcutText:"Ctrl+S",text:"Save"},{iconCls:"CadX-file-save-as",id:"saveAs",key:"fileSaveAs",require:{figure:this.figureRequirement},shortcut:{key:"s",ctrl:true,shift:true,fn:function(A,C,B){C.stopEvent();if(this.allowKeyMap&&!B.disabled&&!C.altKey){this.run("fileSaveAs")}}},shortcutText:"Ctrl+Shift+S",text:"Save As..."},"-",{iconCls:"CadX-file-importcdl",key:"fileImportCdl",text:"Open Local"},{iconCls:"CadX-file-importcdl",key:"fileSaveLocal",text:"Save Local"},"-",{iconCls:"CadX-file-importsvg",key:"fileImportSvg",text:"Import SVG"},{iconCls:"CadX-file-export",key:"fileExport",require:{figure:this.figureRequirement},text:"Export Image"},{iconCls:"CadX-file-export",key:"fileExportPlt",require:{figure:this.figureRequirement},text:"Export PLT ( HPGL )"},"-",{iconCls:"CadX-file-tovectorcut",id:"tovectorcut",key:"fileVectorCut",require:{figure:this.figureRequirement},text:"To Vector Cut"},"-",{iconCls:"CadX-file-vectorize",id:"vectorize",key:"fileVectorize",text:"Vectorize"},"-",{iconCls:"CadX-file-properties",key:"fileProperties",text:"Properties"}]},{text:"Add",key:"insert",iconCls:"CadX-add",items:[{iconCls:"CadX-add-text",key:"insertText",text:"Text"},{iconCls:"CadX-add-shape",key:"insertShape",text:"Shape"},{iconCls:"CadX-add-clipart",key:"insertClipart",text:"Clipart"}]},{id:"edit",text:"Edit",key:"edit",iconCls:"CadX-edit",items:[{iconCls:"CadX-edit-selectall",key:"editSelectAll",require:{figure:this.figureRequirement},shortcut:{key:"a",ctrl:true,fn:function(B,D,C){var A=D.target.tagName;D.stopEvent();if(this.allowKeyMap&&!C.disabled&&!D.shiftKey&&!D.altKey){this.run("editSelectAll")}}},shortcutText:"Ctrl+A",text:"Select All"},{iconCls:"CadX-edit-next",key:"editSelectNext",require:{figure:this.figureRequirement},shortcut:{key:9,fn:function(B,D,C){var A=D.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){D.stopEvent();if(this.allowKeyMap&&!C.disabled&&!D.ctrlKey&&!D.shiftKey&&!D.altKey){this.run("editSelectNext")}}}},shortcutText:"Tab",text:"Select Next"},{iconCls:"CadX-edit-previous",key:"editSelectPrevious",require:{figure:this.figureRequirement},shortcut:{key:9,shift:true,fn:function(B,D,C){var A=D.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){D.stopEvent();if(this.allowKeyMap&&!C.disabled&&!D.ctrlKey&&!D.altKey){this.run("editSelectPrevious")}}}},shortcutText:"Shift+Tab",text:"Select Previous"},"-",{iconCls:"CadX-edit-figure",key:"editFigure",require:{selection:this.singleSelectRequirement},text:"Edit Object"},"-",{iconCls:"CadX-edit-replace",key:"editReplace",require:{selection:this.singleSelectRequirement},text:"Replace Object"},{iconCls:"CadX-edit-style",key:"editStyle",require:{selection:this.singleSelectRequirement},text:"Replace Style"},"-",{iconCls:"CadX-edit-duplicate",key:"editDuplicate",require:{selection:this.singleSelectRequirement},shortcut:{key:"d",ctrl:true,fn:function(A,C,B){C.stopEvent();if(this.allowKeyMap&&!B.disabled&&!C.shiftKey&&!C.altKey){this.run("editDuplicate")}}},shortcutText:"Ctrl+D",text:"Duplicate Object"},"-",{iconCls:"CadX-edit-remove",key:"editRemove",require:{selection:this.singleSelectRequirement},shortcut:{key:Ext.EventObject.DELETE,fn:function(B,D,C){var A=D.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){D.stopEvent();if(this.allowKeyMap&&!C.disabled&&!D.ctrlKey&&!D.shiftKey&&!D.altKey){this.run("editRemove")}}}},shortcutText:"Del",text:"Delete Selected"}]},{id:"shaping",text:"Shaping",key:"shaping",iconCls:"",items:[{text:"Condense",key:"condense"},{text:"Break Apart Curves",key:"breakApart"},{text:"Break Apart Regions",key:"breakApartRegions"},"-",{text:"Combine",key:"combine"},{text:"Weld",key:"weld"},{text:"Front Minus Back",key:"frontMinusBack"},{text:"Back Minus Font",key:"backMinusFront"}]},{id:"arrange",text:"Arrange",key:"arrange",iconCls:"CadX-arrange",items:[{text:"Left",key:"arrangeLeft",iconCls:"CadX-arrange-left",require:{selection:this.multiSelectRequirement}},{text:"Center",key:"arrangeCenter",iconCls:"CadX-arrange-center",require:{selection:this.multiSelectRequirement}},{text:"Right",key:"arrangeRight",iconCls:"CadX-arrange-right",require:{selection:this.multiSelectRequirement}},"-",{text:"Top",key:"arrangeTop",iconCls:"CadX-arrange-top",require:{selection:this.multiSelectRequirement}},{text:"Middle",key:"arrangeMiddle",iconCls:"CadX-arrange-middle",require:{selection:this.multiSelectRequirement}},{text:"Bottom",key:"arrangeBottom",iconCls:"CadX-arrange-bottom",require:{selection:this.multiSelectRequirement}},"-",{text:"CenterMiddle",key:"arrangeCenterMiddle",iconCls:"CadX-arrange-centermiddle",require:{selection:this.multiSelectRequirement}},"-",{text:"To Front",key:"arrangeToFront",iconCls:"CadX-arrange-toFront",require:{selection:this.multiSelectRequirement}},{text:"To Back",key:"arrangeToBack",iconCls:"CadX-arrange-toBack",require:{selection:this.multiSelectRequirement}},{text:"Forward One",key:"arrangeUpOne",iconCls:"CadX-arrange-upOne",require:{selection:this.multiSelectRequirement}},{text:"Back One",key:"arrangeBackOne",iconCls:"CadX-arrange-backOne",require:{selection:this.multiSelectRequirement}}]},{id:"transform",text:"Transform",key:"transform",iconCls:"CadX-transform",items:[{text:"Reset Transform",key:"transformReset",iconCls:"CadX-transform-reset",require:{figure:this.figureRequirement}},"-",{iconCls:"CadX-edit-mirrorHorizontal",key:"editMirrorHorizontal",require:{selection:this.singleSelectRequirement},text:"Mirror Horizontal"},{iconCls:"CadX-edit-mirrorVertical",key:"editMirrorVertical",require:{selection:this.singleSelectRequirement},text:"Mirror Vertical"},{iconCls:"CadX-edit-mirror",key:"editMirror",require:{selection:this.singleSelectRequirement},text:"Mirror"}]},{id:"zoom",text:"Zoom",key:"view",iconCls:"CadX-zoom",items:[{iconCls:"CadX-view-zoomin",key:"viewZoomIn",text:"Zoom In"},{iconCls:"CadX-view-zoomout",key:"viewZoomOut",text:"Zoom Out"},"-",{iconCls:"CadX-zoom-fit",key:"viewZoomToFit",require:{figure:this.figureRequirement},text:"Zoom To Fit"},"-",{iconCls:"CadX-zoom-400",key:"zoom400",text:"400%"},{iconCls:"CadX-zoom-300",key:"zoom300",text:"300%"},{iconCls:"CadX-zoom-200",key:"zoom200",text:"200%"},{iconCls:"CadX-zoom-100",key:"zoom100",text:"100%"},{iconCls:"CadX-zoom-75",key:"zoom75",text:"75%"},{iconCls:"CadX-zoom-50",key:"zoom50",text:"50%"},{iconCls:"CadX-zoom-25",key:"zoom25",text:"25%"}]},{id:"view",text:"View",key:"view",iconCls:"CadX-view",items:[{iconCls:"Cadx-view-center-objects",text:"Center Objects",key:"arrangeCenterInView",require:{selection:this.singleSelectRequirement}},"-",{text:"Inches",key:"unitInch",iconCls:"CadX-view-inches"},{text:"Milimeters",key:"unitMilimeter",iconCls:"CadX-view-milimeters"},{text:"Centimeters",key:"unitCentimeter",iconCls:"CadX-view-centimeters"},{text:"Point",key:"unitPoint",iconCls:"CadX-view-point"}]}]},initComponent:function(){CadX.MainToolbar.superclass.initComponent.call(this);this.rotateCW=new Ext.Toolbar.MenuButton({ctCls:"btm",id:"rotate+",require:{selection:this.singleSelectRequirement},text:"Rotate +",iconCls:"CadX-rotate-ccw",handler:this.onRotateCCW,scope:this,menu:{items:[{handler:this.onRotate,key:"1",scope:this,text:"+ 1"},{handler:this.onRotate,key:"5",scope:this,text:"+ 5"},{handler:this.onRotate,key:"15",scope:this,text:"+ 15"},{handler:this.onRotate,key:"45",scope:this,text:"+ 45"},{handler:this.onRotate,key:"90",scope:this,text:"+ 90"},{handler:this.onRotate,key:"180",scope:this,text:"+ 180"}]}});this.rotateCCW=new Ext.Toolbar.MenuButton({ctCls:"btm",id:"rotate-",require:{selection:this.singleSelectRequirement},text:"Rotate -",iconCls:"CadX-rotate-cw",handler:this.onRotateCW,scope:this,menu:{items:[{handler:this.onRotate,key:"-1",scope:this,text:"- 1"},{handler:this.onRotate,key:"-5",scope:this,text:"- 5"},{handler:this.onRotate,key:"-15",scope:this,text:"- 15"},{handler:this.onRotate,key:"-45",scope:this,text:"- 45"},{handler:this.onRotate,key:"-90",scope:this,text:"- 90"},{handler:this.onRotate,key:"-180",scope:this,text:"- 180"}]}});this.quickStyleMenu=new CadX.menu.DataViewMenu({width:450,height:300});this.quickStyleMenu.on("select",this.onQuickStyleSelection,this);this.quickStyle=new Ext.Toolbar.Button({ctCls:"btm",require:{selection:this.singleSelectRequirement},id:"quickstyle",text:"Quick Style",iconCls:"CadX-quickstyle",menu:this.quickStyleMenu});this.fontControl=new CadX.Controls.FontBox({selectOnFocus:false,allowBlank:false,readOnly:true,require:{selection:this.singleSelectRequirement,text:this.textFigureRequirement}});this.widthControl=new CadX.Controls.UnitSpinner({msgTarget:"qtip",require:{selection:this.singleSelectRequirement},strategy:new CadX.Controls.Spinner.UnitStrategy({incrementValue:0.1,minValue:0.254,maxValue:1524}),width:108});this.widthControl.addClass("cadx-unit-"+CadX.designer.units.userUnit);this.heightControl=new CadX.Controls.UnitSpinner({msgTarget:"qtip",require:{selection:this.singleSelectRequirement},strategy:new CadX.Controls.Spinner.UnitStrategy({incrementValue:0.1,minValue:0.254,maxValue:442}),width:108});this.heightControl.addClass("cadx-unit-"+CadX.designer.units.userUnit);this.ratio=new Ext.form.Checkbox({require:{selection:this.singleSelectRequirement},checked:true,boxLabel:"Aspect"});this.designerView.on("selectionchanged",this.onSelectionChanged,this);this.designerView.on("rendercomplete",this.onSelectionChanged,this);this.designerView.on("documentsaved",this.onSaved,this);this.fontControl.on("valid",this.onUserChangedFont,this);this.widthControl.on("valid",this.onUserChangedWidth,this,{buffer:1000});this.heightControl.on("valid",this.onUserChangedHeight,this,{buffer:1000});this.designerView.on("figurecountchanged",this.onFigureCountChanged,this);this.designerView.on("newdocument",this.onNewDocument,this)},onQuickStyleSelection:function(A,B,D){if(D.length>0){var C=B.getRecord(D[0]),E=C.data.id;if(E){this.designer.replaceSelectedFiguresStyle(E)}}},onSaved:function(){this.handleItemState(this.items)},getSelectedFont:function(C){if(!C){return null}var E=[];for(var B=0,A=C.length;B<A;B++){if(C[B] instanceof CadX.TextBlockFigure){E.push(C[B].mFont)}}if(E.length>1){var D=true;for(var B=1,A=E.length;B<A;B++){if(E[B-1].guid!==E[B].guid){D=false}}return D?E[0]:null}if(E.length=1){return E[0]}},onSelectionChanged:function(){var B=this.designerView.getSelectedFigures();var C=this.getSelectedFont(B);this.fontControl.setValue(C,true);var D=null,A=null;if(B&&B.length>0){var E=CadX.Geo.computeFigureBounds(B);D=E.hx-E.lx;A=E.hy-E.ly}this.handleItemState(this.items);this.widthControl.setRawDocumentValue(D);this.heightControl.setRawDocumentValue(A)},onRotate:function(A){if(A&&A.key){this.rotate(A.key)}},onRotateCW:function(A){this.rotate(-45)},onRotateCCW:function(A){this.rotate(45)},rotate:function(D){var C=this.designerView.getSelectedFigures();var A=CadX.Geo.boundsCenter(CadX.Geo.computeFigureBounds(C));for(var B=0;B<C.length;++B){C[B].rotateAround(A,D)}this.designerView.render()},onUserChangedFont:function(D){var B=D.getValue();if(B){var E=this.designerView.getSelectedFigures();for(var C=0,A=E.length;C<A;C++){if(E[C] instanceof CadX.TextBlockFigure){if(E[C].mFont.guid!==B.guid){E[C].setFont({guid:B.id,name:B.name,style:B.style})}}}}this.designerView.render()},onUserChangedWidth:function(F){if(isNaN(F.getDocumentValue())){F.markInvalid()}else{var G=this.designerView.getSelectedFigures();var A=CadX.Geo.computeFigureBounds(G);var C=A.hx-A.lx;var H=A.hy-A.ly;var E=F.getDocumentValue();var B=H;if(this.ratio.checked){B=H*E/C;if(!isNaN(B)){this.heightControl.setRawDocumentValue(B)}}var I=CadX.Geo.boundsCenter(A);for(var D=0;D<G.length;++D){G[D].scaleFrom(I,E/C,B/H)}this.designerView.render()}},onUserChangedHeight:function(F){if(isNaN(F.getDocumentValue())){F.markInvalid()}else{var G=this.designerView.getSelectedFigures();var A=CadX.Geo.computeFigureBounds(G);var C=A.hx-A.lx;var H=A.hy-A.ly;var E=C;var B=F.getDocumentValue();if(this.ratio.checked){E=C*B/H;if(!isNaN(E)){this.widthControl.setRawDocumentValue(E)}}var I=CadX.Geo.boundsCenter(A);for(var D=0;D<G.length;++D){G[D].scaleFrom(I,E/C,B/H)}this.designerView.render()}},handleItemState:function(F){var E=this.designerView,G=E.mDocument.getId(),A=E.getFigureCount(),H=E.getSelectedCount();var C=this.designerView.getSelectedFigures(),D=this.getSelectedFont(C);F.each(B,this);B(this.fontControl);B(this.heightControl);B(this.widthControl);function B(K){if(K.menu){this.handleItemState(K.menu.items)}if(K.require){var J=K.require,I=false;if(J.figure&&J.figure.required&&J.figure.min){I=A<J.figure.min?true:I}if(J.selection&&J.selection.required&&J.selection.min){I=H<J.selection.min?true:I}if(J.text&&J.text.required&&J.text.min){I=D===undefined?true:I}if(J.documentId&&J.documentId.required){I=G===null?true:I}if(I){K.disable()}else{if(K.disabled){K.enable()}}}}},onFigureCountChanged:function(){this.handleItemState(this.items)},onNewDocument:function(){this.handleItemState(this.items)},onRender:function(B,A){this.el=B.createChild(this.autoCreate,A);this.topTable=this.el.child("tbody",true);this.addRow()},addRow:function(){var A=Ext.DomHelper.insertHtml("beforeEnd",this.topTable,'<tr><td><table cellspacing="0"><tr></tr></table></td></tr>');this.tr=Ext.fly(A).child("tr:last",true)},afterRender:function(){CadX.MainToolbar.superclass.afterRender.call(this);this.initMenuItems();for(var A=0;A<this.menuItems.length;++A){var B=new Ext.menu.Menu({id:this.menuItems[A].id?this.menuItems[A].id:Ext.id()});this.addButton({ctCls:"top",id:Ext.id(),iconCls:this.menuItems[A].iconCls?this.menuItems[A].iconCls:"",text:this.menuItems[A].text,key:this.menuItems[A].key,menu:B});this.loadMenuItem(B,this.menuItems[A].items)}this.addFill();this.addRow();this.addItem(this.rotateCW);this.addItem(this.rotateCCW);this.addItem(this.quickStyle);this.addButton({ctCls:"btm",id:"fitobjects",require:{figure:this.figureRequirement},text:"Zoom To Fit",iconCls:"CadX-zoom-fit",key:"viewZoomToFit",handler:this.commandHandler,scope:this.commandHandlerScope});this.addFill();this.addText("Font: ");this.addField(this.fontControl);this.addText("W: ");this.addField(this.widthControl);this.addText("H: ");this.addField(this.heightControl);this.addItem(this.ratio);this.handleItemState(this.items)},loadMenuItem:function(G,A){for(var C=0;C<A.length;++C){var E=A[C],D;if(E=="-"){D="-"}else{var F=E.text;if(E.shortcutText){F=F+' <span class="CadX-menu-shortcut">- '+E.shortcutText+"</span>"}D={id:[E.id?E.id:Ext.id()],iconCls:[E.iconCls?E.iconCls:""],text:F,key:E.key,handler:this.commandHandler,scope:this.commandHandlerScope};if(E.checked===true||E.checked===false){D.checked=E.checked;D.checkHandler=E.checkHandler}if(E.group){D.group=E.group}if(E.require){D.require=E.require}}if(E.items){D.menu=new Ext.menu.Menu()}var B=G.add(D);if(E.shortcut){E.shortcut.fn=E.shortcut.fn.createDelegate(this.designer,[B],true);this.designer.keyMap.addBinding(E.shortcut)}if(B.menu){this.loadMenuItem(D.menu,E.items)}}}});CadX.VerticalToolbar=function(B){var G={what:"figure",min:1},F={what:"selection",min:1},E={what:"selection",min:2};var D=B.commandHandler,C=B.commandHandlerScope;var A=[{cls:"CadX-new-project",text:"New Project",xtype:"tbtext"},{iconCls:"CadX-file-new",handler:D,key:"fileNew",scope:C,text:"New From Scratch"},{iconCls:"CadX-file-open",handler:D,key:"fileOpen",scope:C,text:"New From Template"},{cls:"CadX-add-objects",text:"Add Objects",xtype:"tbtext"},{iconCls:"CadX-add-text",handler:D,key:"insertText",scope:C,text:"Add Text"},{iconCls:"CadX-add-clipart",handler:D,key:"insertClipart",scope:C,text:"Add Clipart"},{iconCls:"CadX-add-shape",handler:D,key:"insertShape",scope:C,text:"Add Auto Shape"},{iconCls:"CadX-file-importsvg",handler:D,key:"fileImportSvg",scope:C,text:"Import File"},{iconCls:"CadX-file-vectorize",handler:D,id:"vectorize",key:"fileVectorize",scope:C,text:"Vectorize"},{cls:"CadX-edit-objects",text:"Edit Objects",xtype:"tbtext"},{iconCls:"CadX-edit-figure",handler:D,key:"editFigure",require:F,scope:C,text:"Edit Text"},{iconCls:"CadX-edit-replace",handler:D,key:"editReplace",require:F,scope:C,text:"Swap Clipart"},{iconCls:"CadX-edit-remove",handler:D,key:"editRemove",require:F,scope:C,text:"Delete Selected"},{cls:"CadX-output",text:"Output",xtype:"tbtext"},{iconCls:"CadX-file-save",handler:D,key:"fileSave",require:G,scope:C,text:"Save File"},{iconCls:"CadX-file-tovectorcut",handler:D,key:"fileVectorCut",require:G,scope:C,text:"Send To VectorCut"}];CadX.VerticalToolbar.superclass.constructor.call(this,Ext.applyIf({items:A},B))};Ext.extend(CadX.VerticalToolbar,Ext.Toolbar,{add:function(){var B=arguments,A=B.length;for(var C=0;C<A;C++){var D=B[C];if(D.isFormField){this.addField(D)}else{if(D.render){this.addItem(D)}else{if(typeof D=="string"){if(D=="separator"||D=="-"){this.addSeparator()}else{if(D==" "){this.addSpacer()}else{if(D=="->"){this.addFill()}else{this.addText(D)}}}}else{if(D.tagName){this.addElement(D)}else{if(typeof D=="object"){if(D.xtype&&D.xtype==="tbtext"){this.addText(D.text,D.cls||null)}else{if(D.xtype){this.addField(Ext.ComponentMgr.create(D,"button"))}else{this.addButton(D)}}}}}}}}},addText:function(D,A){var C=document.createElement("div");if(A){C.className="cadx-vtbtext "+A}var B=new Ext.XTemplate(D);B.overwrite(C);return this.addElement(C)},afterRender:function(){CadX.VerticalToolbar.superclass.afterRender.call(this);this.handleItemState()},handleItemState:function(){var A=this.designerView;items=this.items;items.each(function(C){if(C.require){var D=C.require.what,B=C.require.min;count=0;if(D==="figure"){count=A.getFigureCount()}else{if(D==="selection"){count=A.getSelectedCount()}}if(count<B){C.disable()}else{if(C.disabled){C.enable()}}}})},initComponent:function(){CadX.VerticalToolbar.superclass.initComponent.call(this);this.designerView.on("selectionchanged",this.handleItemState,this);this.designerView.on("figurecountchanged",this.handleItemState,this);this.designerView.on("newdocument",this.handleItemState,this)},nextBlock:function(){var C=document.createElement("td");this.tr.appendChild(C);var A=document.createElement("tr");var B=this.el.child("tbody",true);B.appendChild(A);this.tr=A;return C}});CadX.FigureToolbar=Ext.extend(Ext.Toolbar,{initComponent:function(){CadX.FigureToolbar.superclass.initComponent.call(this);this.colorItem=new Ext.menu.ColorItem({allowReselect:true});this.colorItem.on("select",this.colorHandler,this.colorHandlerScope)},afterRender:function(){CadX.FigureToolbar.superclass.afterRender.call(this);var A=this.colorItem;this.colorItem.on("render",function(){A.getEl().setSize(750,18)});this.addItem(this.colorItem)}});CadX.StatusBar=function(A){this.documentText=new Ext.Toolbar.TextItem("Document: Blank");this.zoomText=new Ext.Toolbar.TextItem("Zoom: 100%");CadX.StatusBar.superclass.constructor.call(this,Ext.apply({defaultText:"Ready",defaultIconCls:"",items:[this.documentText," "," ","-",this.zoomText," "," "]},A))};Ext.extend(CadX.StatusBar,Ext.StatusBar,{documentText:null,zoomText:null,setDocumentText:function(A){if(A){Ext.fly(this.documentText.getEl()).update(A)}},setZoomText:function(A){if(A){Ext.fly(this.zoomText.getEl()).update(A)}}});CadX.SelectionTool=function(A){CadX.SelectionTool.superclass.constructor.call(this);this.mDesignerView=A;this.mHandle="none";this.mMode="none";this.mMousePos={x:0,y:0};this.mMouseDownPos={x:0,y:0};this.mAnchorPos={x:0,y:0}};Ext.extend(CadX.SelectionTool,Ext.util.Observable,{});CadX.SelectionTool.prototype.renderTo=function(B){this.mSelectionEl=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-selector"},true);this.mSelectionEl.hide();this.mDragSelectionEl=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-drag-selector"},true);this.mDragSelectionEl.hide();this.mDragSelectionEl.setOpacity(0.5);this.mSelectionHandles=new Array();for(var A=0;A<8;++A){this.mSelectionHandles[A]=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-selection-handle"},true);this.mSelectionHandles[A].hide()}this.mSelectionCrosshair=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-selection-crosshair"},true);this.mSelectionCrosshair.hide();this.mSelectionMarqueeH=new Array();for(var A=0;A<2;++A){this.mSelectionMarqueeH[A]=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-selection-marquee-h"},true);this.mSelectionMarqueeH[A].hide()}this.mSelectionMarqueeV=new Array();for(var A=0;A<2;++A){this.mSelectionMarqueeV[A]=Ext.DomHelper.append(B,{tag:"div",id:Ext.id(),cls:"CadX-selection-marquee-v"},true);this.mSelectionMarqueeV[A].hide()}};CadX.SelectionTool.prototype.setViewVisibility=function(A){function B(D,E){for(var C=0;C<D.length;++C){D[C].setVisible(E)}}this.mSelectionCrosshair.setVisible(A);B(this.mSelectionMarqueeH,A);B(this.mSelectionMarqueeV,A);B(this.mSelectionHandles,A);this.mSelectionEl.setVisible(A)};CadX.SelectionTool.prototype.updateView=function(B){var C={x:B.x-1,y:B.y-1,width:B.width+1,height:B.height+1};var A=3;this.mSelectionEl.setBox(B);this.mSelectionHandles[0].setXY([C.x-A,C.y-A]);this.mSelectionHandles[1].setXY([(C.x+Math.round(C.width/2))-A/2,C.y-A]);this.mSelectionHandles[2].setXY([C.x+C.width-A,C.y-A]);this.mSelectionHandles[3].setXY([C.x-A,(C.y+Math.round(C.height/2))-A/2]);this.mSelectionHandles[4].setXY([C.x+C.width-A,(C.y+Math.round(C.height/2))-A/2]);this.mSelectionHandles[5].setXY([C.x-A,C.y+C.height-A]);this.mSelectionHandles[6].setXY([(C.x+Math.round(C.width/2))-A/2,C.y+C.height-A]);this.mSelectionHandles[7].setXY([C.x+C.width-A,C.y+C.height-A]);this.mSelectionCrosshair.setXY([(C.x+Math.round(C.width/2)-5),(C.y+Math.round(C.height/2)-4)]);this.mSelectionMarqueeH[0].setXY([C.x,C.y]);this.mSelectionMarqueeH[0].setWidth(C.width);this.mSelectionMarqueeH[1].setXY([C.x,C.y+C.height]);this.mSelectionMarqueeH[1].setWidth(C.width);this.mSelectionMarqueeV[0].setXY([C.x,C.y]);this.mSelectionMarqueeV[0].setHeight(C.height);this.mSelectionMarqueeV[1].setXY([C.x+C.width,C.y]);this.mSelectionMarqueeV[1].setHeight(C.height);this.setViewVisibility(true)};CadX.SelectionTool.prototype.getHandle=function(D,C){if(!this.mSelectionEl.isVisible()){return"none"}var E=new Ext.lib.Point(D,C);var B=["nw","n","ne","w","e","sw","s","se"];for(var A=0;A<this.mSelectionHandles.length;++A){if(this.mSelectionHandles[A].getRegion().contains(E)){return B[A]}}if(this.mSelectionEl.getRegion().contains(E)){return"center"}return"none"};CadX.SelectionTool.prototype.getScalePinFromHandle=function(B,A){switch(B){case"nw":return{x:A.hx,y:A.ly};case"n":return{x:A.lx+(A.hx-A.lx)/2,y:A.ly};case"ne":return{x:A.lx,y:A.ly};case"w":return{x:A.hx,y:A.ly+(A.hy-A.ly)/2};case"e":return{x:A.lx,y:A.ly+(A.hy-A.ly)/2};case"sw":return{x:A.hx,y:A.hy};case"s":return{x:A.lx+(A.hx-A.lx)/2,y:A.hy};case"se":return{x:A.lx,y:A.hy}}};CadX.SelectionTool.prototype.setMouseCursor=function(A){var B=this.getHandle(A.x,A.y);switch(B){case"n":this.mDesignerView.mOverlayEl.setStyle("cursor","n-resize");break;case"s":this.mDesignerView.mOverlayEl.setStyle("cursor","s-resize");break;case"e":this.mDesignerView.mOverlayEl.setStyle("cursor","e-resize");break;case"w":this.mDesignerView.mOverlayEl.setStyle("cursor","w-resize");break;case"nw":this.mDesignerView.mOverlayEl.setStyle("cursor","nw-resize");break;case"ne":this.mDesignerView.mOverlayEl.setStyle("cursor","ne-resize");break;case"sw":this.mDesignerView.mOverlayEl.setStyle("cursor","sw-resize");break;case"se":this.mDesignerView.mOverlayEl.setStyle("cursor","se-resize");break;case"center":this.mDesignerView.mOverlayEl.setStyle("cursor","move");break;default:this.mDesignerView.mOverlayEl.setStyle("cursor","default");break}};CadX.SelectionTool.prototype.getFigureAtPoint=function(A){var C=this.mDesignerView.mDocument.getFigures();C.reverse();for(var B=0;B<C.length;++B){if(CadX.Geo.isPointInsideBounds(C[B].getBounds(),A)){return C[B]}}return null};CadX.SelectionTool.prototype.addSelection=function(A){if(A.length>0){this.mDesignerView.addSelection(A);this.updateView(this.mDesignerView.computeFigureBox(A))}};CadX.SelectionTool.prototype.removeSelection=function(A){if(A.length>0){this.mDesignerView.removeSelection(A);this.updateView(this.mDesignerView.computeFigureBox(A))}};CadX.SelectionTool.prototype.clearSelection=function(A){this.mDesignerView.clearSelection();this.setViewVisibility(false)};CadX.SelectionTool.prototype.handleMouseDown=function(D,B){var C=true;this.mMousePos={x:D.getPageX(),y:D.getPageY()};this.mMouseDownPos={x:D.getPageX(),y:D.getPageY()};this.mHandle=this.getHandle(this.mMousePos.x,this.mMousePos.y);var A=this.getFigureAtPoint(this.mDesignerView.pointToDocument(this.mMousePos));if(A!=null&&A.hide){A=null}if(this.mHandle!="none"&&C){if(this.mHandle=="center"){this.mMode="translate";this.translateBounds=CadX.Geo.computeFigureBounds(this.mDesignerView.getSelectedFigures())}else{this.mMode="scale";this.scaleBounds=CadX.Geo.computeFigureBounds(this.mDesignerView.getSelectedFigures());this.scalePin=this.getScalePinFromHandle(this.mHandle,this.scaleBounds)}return true}else{if(A!=null&&C){if(!D.shiftKey&&!D.ctrlKey){this.clearSelection()}this.addSelection([A]);this.mMode="translate";this.translateBounds=CadX.Geo.computeFigureBounds(this.mDesignerView.getSelectedFigures());return true}else{if(this.mHandle=="none"&&C){this.clearSelection();this.mMode="select";return true}else{if(C){this.clearSelection();return true}}}}return false};CadX.SelectionTool.prototype.handleBump=function(A,D){var C=this.mDesignerView.getSelectedFigures();for(var B=0;B<C.length;++B){C[B].translate(A,D)}this.mDesignerView.render()};CadX.SelectionTool.prototype.handleMouseMove=function(I,D){var K={x:I.getPageX(),y:I.getPageY()};var J={x:K.x-this.mMousePos.x,y:K.y-this.mMousePos.y};this.setMouseCursor(K);this.mMousePos=K;var H=this.mDesignerView.pointToDocument(this.mMousePos);var B=this.mDesignerView.pointToDocument(this.mMouseDownPos);if(this.mMode=="select"||this.mMode=="dragselect"){var A=CadX.Geo.computeBounds([H,B]);if(Math.abs(A.hx-A.lx)>10&&Math.abs(A.hy-A.hx)>10){this.mMode="dragselect";var G=this.mDesignerView.boundsToBox(A);this.mDragSelectionEl.setBox(G);this.mDragSelectionEl.show()}}else{if(this.mMode=="translate"){var E={offsetX:H.x-B.x,offsetY:H.y-B.y};var C=[{x:this.translateBounds.lx,y:this.translateBounds.ly},{x:this.translateBounds.hx,y:this.translateBounds.hy}];CadX.Geo.translate(E,C);var G=this.mDesignerView.computeBox(C);this.updateView(G)}else{if(this.mMode=="scale"){var F=this.computeScale(this.scalePin,this.mHandle,H,B);var C=[{x:this.scaleBounds.lx,y:this.scaleBounds.ly},{x:this.scaleBounds.hx,y:this.scaleBounds.hy}];var F=CadX.Geo.Matrix.scaleFrom(this.scalePin,F.scaleX,F.scaleY);F.transformPoints(C);var G=this.mDesignerView.computeBox(C);this.updateView(G)}}}return false};CadX.SelectionTool.prototype.computeScale=function(B,D,A,C){var E={scaleX:(B.x-A.x)/(B.x-C.x),scaleY:(B.y-A.y)/(B.y-C.y)};switch(D){case"n":E.scaleX=1;break;case"s":E.scaleX=1;break;case"e":E.scaleY=1;break;case"w":E.scaleY=1;break;case"ne":E.scaleY=E.scaleX;break;case"nw":E.scaleY=E.scaleX;break;case"se":E.scaleY=E.scaleX;break;case"sw":E.scaleY=E.scaleX;break}return E};CadX.SelectionTool.prototype.handleMouseUp=function(Q,O){var J={x:Q.getPageX(),y:Q.getPageY()};var L={x:J.x-this.mMouseDownPos.x,y:J.y-this.mMouseDownPos.y};var A=this.mDesignerView.pointToDocument(J);var B=this.mDesignerView.pointToDocument(this.mMouseDownPos);var I={x:A.x-B.x,y:A.y-B.y};if(this.mMode=="dragselect"){this.mDragSelectionEl.hide();var C=CadX.Geo.computeBounds([{x:A.x,y:A.y},{x:B.x,y:B.y}]);var D=this.mDesignerView.mDocument.getFigures();var N=[];for(var P=0;P<D.length;++P){if(CadX.Geo.isInsideBounds(D[P],C)&&!D[P].hide){N.push(D[P])}}this.addSelection(N)}else{if(this.mMode=="select"){}else{if(this.mMode=="translate"){var D=this.mDesignerView.getSelectedFigures();for(var P=0;P<D.length;++P){D[P].translate(I.x,I.y)}this.mDesignerView.render()}else{if(this.mMode=="scale"){var M=this.computeScale(this.scalePin,this.mHandle,A,B);var E=[{x:this.scaleBounds.lx,y:this.scaleBounds.ly},{x:this.scaleBounds.hx,y:this.scaleBounds.hy}];CadX.Geo.scale(this.scalePin,M,E);var K=this.mDesignerView.computeBox(E);this.updateView(K);var S=E[0].x-this.scaleBounds.lx;var R=E[0].y-this.scaleBounds.ly;M.offsetX=S;M.offsetY=R;var D=this.mDesignerView.getSelectedFigures();var G=CadX.Geo.computeFigureBounds(D);var H=this.scalePin.x-G.lx;var F=this.scalePin.y-G.ly;for(var P=0;P<D.length;++P){D[P].scaleFrom(this.scalePin,M.scaleX,M.scaleY)}this.mDesignerView.render()}}}}this.mMode="none";this.mHandle="none";return true};CadX.SelectionTool.prototype.handleMouseOut=function(B,A){this.handleMouseUp(B,A)};CadX.DesignerView=function(){CadX.DesignerView.superclass.constructor.call(this);this.addEvents({selectionchanged:true,renderstarted:true,renderfailed:true,rendercomplete:true,figurecountchanged:true,newdocument:true,documentsaved:true,propertiesupdated:true,zoomupdated:true});this.mDocument=null;this.mFigureViews=new Ext.util.MixedCollection();this.mSelection=new Ext.util.MixedCollection();this.mSelectionTool=new CadX.SelectionTool(this);this.mMenu=new Ext.menu.Menu();this.mMenu.add({text:"Back One",handler:this.contextMenuHandler,scope:this},{text:"Foward One",handler:this.contextMenuHandler,scope:this},"-",{text:"To Front",handler:this.contextMenuHandler,scope:this},{text:"To Back",handler:this.contextMenuHandler,scope:this},"-",{text:"Delete",handler:this.contextMenuHandler,scope:this});this.viewTransform={offsetX:0,offsetY:0,scaleX:1,scaleY:1}};Ext.extend(CadX.DesignerView,Ext.util.Observable,{});CadX.DesignerView.prototype.pointToView=function(A){return{x:parseInt(Math.round((A.x*this.viewTransform.scaleX+this.viewTransform.offsetX))),y:-parseInt(Math.round((A.y*this.viewTransform.scaleY-this.viewTransform.offsetY)))}};CadX.DesignerView.prototype.pointToDocument=function(A){return{x:parseFloat((A.x-this.viewTransform.offsetX)/this.viewTransform.scaleX),y:-parseFloat((A.y-this.viewTransform.offsetY)/this.viewTransform.scaleY)}};CadX.DesignerView.prototype.boundsToBox=function(B){var A=this.pointToView({x:B.lx,y:B.ly});var C=this.pointToView({x:B.hx,y:B.hy});return{x:A.x,y:C.y,width:C.x-A.x,height:A.y-C.y}};CadX.DesignerView.prototype.computeBox=function(A){return this.boundsToBox(CadX.Geo.computeBounds(A))};CadX.DesignerView.prototype.computeFigureBox=function(A){return this.boundsToBox(CadX.Geo.computeFigureBounds(A))};CadX.DesignerView.prototype.getDocumentCenter=function(){var B=this.mFiguresEl.getBox();var A={x:B.x+B.width/2,y:B.y+B.height/2};return this.pointToDocument(A)};CadX.DesignerView.prototype.render=function(B,A){this.mDocument.render({zoom:this.viewTransform.scaleX},B,A)};CadX.DesignerView.prototype.renderTo=function(B){this.mDocumentEl=Ext.get(B);this.mFiguresEl=Ext.DomHelper.append(this.mDocumentEl,{tag:"div",style:"overflow:hidden;position:absolute"},true);this.mToolsEl=Ext.DomHelper.append(this.mDocumentEl,{tag:"div",style:"overflow:hidden;position:absolute"},true);this.mOverlayEl=Ext.DomHelper.append(this.mDocumentEl,{tag:"div",style:"position:absolute; background-color:blue;border: 1px solid red"},true);this.mOverlayEl.setOpacity(0);var A=this.mOverlayEl;A.on("mousedown",this.onMouseDown,this);A.on("mouseup",this.onMouseUp,this);A.on("mousemove",this.onMouseMove,this);A.on("mouseout",this.onMouseOut,this);A.on("contextmenu",this.onContextMenu,this);A.on("dblclick",this.onDblClick,this);A.on("mousewheel",this.onMouseWheel,this);this.mSelectionTool.renderTo(this.mToolsEl)};CadX.DesignerView.prototype.onMouseWheel=function(B,A){var C=(B.getWheelDelta()/10);this.zoom(C)};CadX.DesignerView.prototype.zoom=function(E){var C=this.viewTransform.scaleX+E;var A=this.viewTransform.scaleY+E;if(C>=0.2&&C<=10&&A>=0.2&&A<=10){this.viewTransform.scaleX=C;this.viewTransform.scaleY=A;var D=this.mDocument.getFigures();for(var B=0;B<D.length;++B){D[B].invalidateZoom()}this.render();this.fireEvent("zoomupdated",this,C)}};CadX.DesignerView.prototype.zoomTo=function(C){if(C>=0.25&&C<=4){this.viewTransform.scaleX=C;this.viewTransform.scaleY=C;var B=this.mDocument.getFigures();for(var A=0;A<B.length;++A){B[A].invalidateZoom()}this.render();this.fireEvent("zoomupdated",this,C)}};CadX.DesignerView.prototype.updateSize=function(){var A=this.mDocumentEl.getBox();this.viewTransform.offsetX=A.x;this.viewTransform.offsetY=A.y;this.mOverlayEl.setBox(A);this.mFiguresEl.setBox(A);this.mToolsEl.setBox(A)};CadX.DesignerView.prototype.contextMenuHandler=function(B,C){var A=this.getSelectedFigures();if(B.text=="Back One"){this.mDocument.backOne(A)}else{if(B.text=="Foward One"){this.mDocument.fowardOne(A)}else{if(B.text=="To Back"){this.mDocument.toBack(A)}else{if(B.text=="To Front"){this.mDocument.toFront(A)}else{if(B.text=="Delete"){this.mDocument.removeFigures(A)}}}}}};CadX.DesignerView.prototype.setDocument=function(A){if(this.mDocument!=null){this.mDocument.clearFigures();this.mDocument.un("figureadded",this.onFigureAdded,this);this.mDocument.un("figureremoved",this.onFigureRemoved,this);this.mDocument.un("figurereplaced",this.onFigureReplaced,this);this.mDocument.un("propertiesupdated",this.onPropertiesUpdated,this);this.mDocument.un("zorderchanged",this.onZOrderChanged,this);this.mDocument.un("renderstarted",this.onRenderStarted,this);this.mDocument.un("rendercomplete",this.onRenderComplete,this);this.mDocument.un("renderfailed",this.onRenderFailed,this);this.mDocument.un("saved",this.onDocumentSaved,this)}this.mDocument=A;this.mDocument.on("figureadded",this.onFigureAdded,this);this.mDocument.on("figureremoved",this.onFigureRemoved,this);this.mDocument.on("figurereplaced",this.onFigureReplaced,this);this.mDocument.on("propertiesupdated",this.onPropertiesUpdated,this);this.mDocument.on("zorderchanged",this.onZOrderChanged,this);this.mDocument.on("renderstarted",this.onRenderStarted,this);this.mDocument.on("rendercomplete",this.onRenderComplete,this);this.mDocument.on("renderfailed",this.onRenderFailed,this);this.mDocument.on("saved",this.onDocumentSaved,this);this.viewTransform.scaleX=1;this.viewTransform.scaleY=1;this.addFigureView(this.mDocument.getFigures());this.fireEvent("newdocument",this.mDocument);this.fireEvent("zoomupdated",this,this.viewTransform.scaleX)};CadX.DesignerView.prototype.onDocumentSaved=function(){this.fireEvent("documentsaved",this)};CadX.DesignerView.prototype.onPropertiesUpdated=function(){this.fireEvent("propertiesupdated",this.mDocument)};CadX.DesignerView.prototype.centerAll=function(){var D=this.mDocument.getFigures();var E=CadX.Geo.computeFigureBounds(D);var A=this.getDocumentCenter();var B=CadX.Geo.boundsCenter(E);for(var C=0;C<D.length;++C){D[C].translate(A.x-B.x,A.y-B.y)}this.render()};CadX.DesignerView.prototype.centerSelected=function(){var D=this.getSelectedFigures();var E=CadX.Geo.computeFigureBounds(D);var A=this.getDocumentCenter();var B=CadX.Geo.boundsCenter(E);for(var C=0;C<D.length;++C){D[C].translate(A.x-B.x,A.y-B.y)}this.render()};CadX.DesignerView.prototype.zoomToFit=function(){var G=this.mDocument.getFigures();var C=CadX.Geo.computeFigureBounds(G);var B=C.hy-C.ly;var F=C.hx-C.lx;var H=this.mFiguresEl.getBox();H.x+=50;H.y+=50;H.width-=100;H.height-=100;var D=this.boundsToBox(C);var A=H.width/D.width;var I=H.height/D.height;if(A<I){this.viewTransform.scaleX*=A;this.viewTransform.scaleY*=A}else{this.viewTransform.scaleX*=I;this.viewTransform.scaleY*=I}var G=this.mDocument.getFigures();for(var E=0;E<G.length;++E){G[E].invalidateZoom()}this.centerAll();this.fireEvent("zoomupdated",this,this.viewTransform.scaleX)};CadX.DesignerView.prototype.onRenderStarted=function(){this.fireEvent("renderstarted",this)};CadX.DesignerView.prototype.onRenderComplete=function(){var A=this.getSelectedFigures();if(A.length>0){this.mSelectionTool.updateView(this.computeFigureBox(A))}else{this.mSelectionTool.setViewVisibility(false)}this.fireEvent("rendercomplete",this)};CadX.DesignerView.prototype.onRenderFailed=function(){this.fireEvent("renderfailed",this)};CadX.DesignerView.prototype.updateSelection=function(){var A=this.getSelectedFigures();if(A.length>0){this.mSelectionTool.updateView(this.computeFigureBox(A))}else{this.mSelectionTool.setViewVisibility(false)}};CadX.DesignerView.prototype.updateDom=function(){var C=this.mDocument.getFigures();for(var A=0;A<C.length;++A){var B=this.getFigureViewFromFigure(C[A]);this.mFiguresEl.appendChild(B.getElement())}};CadX.DesignerView.prototype.onZOrderChanged=function(A){this.updateDom()};CadX.DesignerView.prototype.onFigureAdded=function(A){this.addFigureView(A);this.fireEvent("figurecountchanged",this.mDocument.getFigureCount())};CadX.DesignerView.prototype.onFigureRemoved=function(A){this.removeFigureView(A);this.fireEvent("figurecountchanged",this.mDocument.getFigureCount())};CadX.DesignerView.prototype.onFigureReplaced=function(B,A){this.replaceFigureView(B,A)};CadX.DesignerView.prototype.addFigureView=function(D){for(var B=0;B<D.length;++B){var A=D[B];var C=new CadX.FigureView(this,A);this.mFigureViews.add(C);this.mFiguresEl.appendChild(C.el)}};CadX.DesignerView.prototype.removeFigureView=function(C){for(var A=0;A<C.length;++A){var B=this.getFigureViewFromFigure(C[A]);this.mSelection.remove(B);this.mFigureViews.remove(B);B.el.remove()}this.updateSelection()};CadX.DesignerView.prototype.replaceFigureView=function(E,B){var C=this.getFigureViewFromFigure(E);var A=new CadX.FigureView(this,B);var D=this.mFigureViews.indexOf(C);this.mSelection.remove(C);this.mFigureViews.remove(C);this.mFigureViews.insert(D,A);C.el.remove();this.mFiguresEl.appendChild(A.el);this.updateDom();this.updateSelection()};CadX.DesignerView.prototype.onBump=function(B,A){this.mSelectionTool.handleBump(B,A)};CadX.DesignerView.prototype.onMouseOut=function(B,A){this.mSelectionTool.handleMouseOut(B,A)};CadX.DesignerView.prototype.onMouseMove=function(B,A){this.mSelectionTool.handleMouseMove(B,A)};CadX.DesignerView.prototype.onMouseUp=function(B,A){B.stopEvent();this.mSelectionTool.handleMouseUp(B,A)};CadX.DesignerView.prototype.onMouseDown=function(B,A){B.stopEvent();this.mSelectionTool.handleMouseDown(B,A)};CadX.DesignerView.prototype.onDblClick=function(B,A){CadX.designer.editSelectedFigures()};CadX.DesignerView.prototype.addSelection=function(C){for(var B=0;B<C.length;++B){var A=this.getFigureViewFromFigure(C[B]);this.mSelection.add(A)}this.fireEvent("selectionchanged",C)};CadX.DesignerView.prototype.removeSelection=function(C){for(var B=0;B<C.length;++B){var A=this.getFigureViewFromFigure(C[B]);this.mSelection.remove(A)}this.fireEvent("selectionchanged",C)};CadX.DesignerView.prototype.clearSelection=function(){this.mSelection.clear();this.fireEvent("selectionchanged")};CadX.DesignerView.prototype.selectAll=function(){var B=this.mDocument.getFigureCount();for(var A=0;A<B;A++){this.addSelection([this.mDocument.getFigureAt(A)])}this.render()};CadX.DesignerView.prototype.selectNext=function(A){var E=this.mDocument.getFigureCount();if(E!=0){if(this.mSelection.getCount()==0){this.addSelection([this.mDocument.getFigureAt(0)]);this.render()}else{if(E>1){var D=this.mSelection.itemAt(0);var B=this.mDocument.getFigureIndex(D.figure);var C;if(A>0){C=(B+1)%E}else{C=((E+(B-1))%E)}this.clearSelection();this.addSelection([this.mDocument.getFigureAt(C)]);this.render()}}}};CadX.DesignerView.prototype.selectionContains=function(A){return this.mSelection.contains(lElement)};CadX.DesignerView.prototype.getFigureCount=function(){return this.mDocument.getFigureCount()};CadX.DesignerView.prototype.getFigureViews=function(){return this.mFigureViews.getRange()};CadX.DesignerView.prototype.getSelectedFigureViews=function(){return this.mSelection.getRange()};CadX.DesignerView.prototype.getSelectedCount=function(){return this.mSelection.getCount()};CadX.DesignerView.prototype.getSelectedFigures=function(){var B=new Array();for(var A=0;A<this.mSelection.getCount();++A){B.push(this.mSelection.itemAt(A).getFigure())}return B};CadX.DesignerView.prototype.getFigureViewFromFigure=function(C){for(var A=0;A<this.mFigureViews.getCount();++A){var B=this.mFigureViews.itemAt(A);if(B.getFigure()==C){return B}}return null};CadX.DesignerView.prototype.getFigureViewAt=function(D,C){var A=new Array();for(var B=0;B<this.mFigureViews.getCount();++B){A.push(this.mFigureViews.itemAt(B))}A.reverse();for(var B=0;B<A.length;++B){if(A[B].contains(new Ext.lib.Point(D,C))){return A[B]}}return null};CadX.DesignerView.prototype.onContextMenu=function(A){A.stopEvent();this.mMenu.showAt([A.getPageX(),A.getPageY()])};CadX.DesignerView.prototype.getToolsElement=function(){return this.mToolsEl};CadX.DesignerView.prototype.getFigureElement=function(){return this.mFiguresEl};CadX.FigureView=function(B,A){this.designerView=B;this.figure=A;this.el=new Ext.Element(document.createElement("div"));this.el.applyStyles("position:absolute;");this.image=Ext.DomHelper.append(this.el,{tag:"img",src:"./image/blank.gif",style:"position:absolute;"},true);this.image.on("load",this.onImageLoad,this);this.imageRendered=false;this.imageLoaded=false;this.figure.on("renderstarted",this.onRenderStarted,this);this.figure.on("rendercomplete",this.onRenderComplete,this);this.figure.on("renderfailed",this.onRenderFailed,this)};CadX.FigureView.prototype.getFigure=function(){return this.figure};CadX.FigureView.prototype.getElement=function(){return this.el};CadX.FigureView.prototype.updateImage=function(A){if(this.figure.hide){return }var C=this.figure.getBounds();var B=this.designerView.boundsToBox(C);this.el.setBox(B);if(A.renderArgs.renderType=="all"||A.renderArgs.renderType=="transform"||A.renderArgs.renderType=="scale"||A.renderArgs.renderType=="zoom"||!this.isRendered){this.isRendered=true;this.image.dom.src=Ext.BLANK_IMAGE_URL;if(Ext.isIE){this.el.dom.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+A.url+"',sizingMethod='scale');"}else{this.image.dom.src=A.url}}};CadX.FigureView.prototype.onRenderStarted=function(A){};CadX.FigureView.prototype.onRenderComplete=function(A){this.updateImage(A)};CadX.FigureView.prototype.onRenderFailed=function(A){};CadX.FigureView.prototype.contains=function(A){return this.el.getRegion().contains(A)};CadX.FigureView.prototype.getBox=function(){return this.el.getBox()};CadX.FigureView.prototype.onImageLoad=function(B,A){this.imageLoaded=true};CadX.designer=null;CadX.alert=function(A){alert(A)};CadX.Designer=function(A){if(A&&A.container){this.container=Ext.get(A.container)}else{this.container=Ext.getBody()}this.allowKeyMap=true;CadX.designer=this;CadX.designer.units=new CadX.Units();this.viewport=new Ext.Viewport();this.viewport.on("resize",this.updateViewSize,this);this.designerView=new CadX.DesignerView();this.designerView.on({newdocument:{fn:this.onNewDocument,scope:this},documentsaved:{fn:this.onDocumentSaved,scope:this},propertiesupdated:{fn:this.onPropertiesUpdated,scope:this},zoomupdated:{fn:this.onZoomUpdated,scope:this}});this.designerView.setDocument(new CadX.Document());this.initKeyMap();this.mainToolbar=new CadX.MainToolbar({designer:this,designerView:this.designerView,commandHandler:this.onToolbarCommand,commandHandlerScope:this});this.figureToolbar=new CadX.FigureToolbar({designerView:this.designerView,colorHandler:this.onFigureToolbarColor,colorHandlerScope:this});this.northPanel=new Ext.Panel({border:false,contentEl:"cadx-designer-north",height:63,region:"north"});this.leftPanel=new Ext.Panel({autoScroll:true,border:false,contentEl:"cadx-designer-west",region:"west",split:false,width:190});this.sideToolbar=new CadX.VerticalToolbar({cls:"cadx-vertical-toolbar",designer:this,designerView:this.designerView,commandHandler:this.onToolbarCommand,commandHandlerScope:this,renderTo:"cadx-designer-west"});this.centerPanel=new Ext.Panel({border:true,region:"center",tbar:this.mainToolbar,bbar:this.figureToolbar});this.statusBar=new CadX.StatusBar();this.mainPanel=new Ext.Panel({bbar:this.statusBar,border:false,layout:"border",renderTo:this.container,items:[this.northPanel,this.leftPanel,this.centerPanel]});this.mainPanel.getEl().setStyle("position","absolute");this.designerView.renderTo(this.centerPanel.body);this.updateViewSize();this.designerView.updateSize();this.colorEditor=new CadX.ColorEditor();this.colorEditor.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.errorDialog=new CadX.Dialog.Error({width:400,height:300});this.errorDialog.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.saveDialog=new CadX.Dialog.Save({width:400,height:300});this.saveDialog.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.exportDialog=new CadX.Dialog.Export({width:400,height:300});this.exportDialog.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.documentBrowser=new CadX.Dialog.DocumentBrowser();this.documentBrowser.dialog.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.fileUploader=new CadX.FileUploader({width:300,height:160});this.fileUploader.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.figureEditor=new CadX.FigureEditor({width:700,height:522});this.figureEditor.on({hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}});this.vectorizeDialog=new CadX.Vectorize({height:500,id:"cadx-dialog-vectorize",listeners:{hide:{fn:this.startKeyMap,scope:this},show:{fn:this.stopKeyMap,scope:this}},width:650});this.centerPanel.on("bodyresize",this.onDesignerPanelResize,this);this.designerView.on("renderstarted",this.onRenderStart,this);this.designerView.on("rendercomplete",this.onRenderComplete,this);this.designerView.on("renderfailed",this.onRenderFailed,this);this.onDesignerReady()};CadX.Designer.prototype={figureEditor:null,onDesignerReady:function(){},doAction:function(B,A){B.stopEvent();this.actions[A.id](this)},onClose:function(){return false},onDocumentSaved:function(A){if(!this.statusBar){return }var B="Blank";if(A.mDocument&&A.mDocument.label){B=A.mDocument.label}this.updateStatusBar({documentName:B})},onNewDocument:function(B){if(!this.statusBar){return }var A="Blank";if(B&&B.label){A=B.label}this.updateStatusBar({documentName:A})},onPropertiesUpdated:function(B){var A="Blank";if(B&&B.label){A=B.label}this.updateStatusBar({documentName:A})},onZoomUpdated:function(A,B){if(B){this.updateStatusBar({documentZoom:B})}},updateStatusBar:function(A){if(this.statusBar&&A){if(A.documentName){this.statusBar.setDocumentText("Document: "+A.documentName)}if(A.documentZoom){var B=parseInt(A.documentZoom*100);if(!isNaN(B)){this.statusBar.setZoomText("Zoom: "+B+"%")}}}},onRenderStart:function(){this.startProgressIndicator()},onRenderComplete:function(){this.endProgressIndicator()},onRenderFailed:function(){this.endProgressIndicator();Ext.MessageBox.confirm("Server Error","Connection failed.  Try again?",function(A){if(A=="yes"){this.designerView.render()}else{this.removeUnRendered();this.designerView.render()}},this)},startProgressIndicator:function(A){this.statusBar.showBusy()},endProgressIndicator:function(A){this.statusBar.clearStatus({useDefaults:true})},initKeyMap:function(){this.keyMap=new Ext.KeyMap(document,[{key:Ext.EventObject.BACKSPACE,fn:function(B,C){var A=C.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){C.stopEvent()}},scope:this},{key:Ext.EventObject.LEFT,fn:function(B,C){var A=C.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){C.stopEvent();this.designerView.onBump(-1,0)}},scope:this},{key:Ext.EventObject.RIGHT,fn:function(B,C){var A=C.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){C.stopEvent();this.designerView.onBump(1,0)}},scope:this},{key:Ext.EventObject.DOWN,fn:function(B,C){var A=C.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){C.stopEvent();this.designerView.onBump(0,-1)}},scope:this},{key:Ext.EventObject.UP,fn:function(B,C){var A=C.target.tagName;if(A!="INPUT"&&A!="TEXTAREA"){C.stopEvent();this.designerView.onBump(0,1)}},scope:this}])},startKeyMap:function(){this.allowKeyMap=true},stopKeyMap:function(){this.allowKeyMap=false},updateViewSize:function(){var A=this.viewport.getBox();this.mainPanel.updateBox(A)},onDesignerPanelResize:function(){this.designerView.updateSize()},onToolbarCommand:function(A){if(!A.key){return }this.run(A.key)},run:function(B){switch(B){case"fileNew":this.designerView.setDocument(new CadX.Document());break;case"fileOpen":this.openDocument();break;case"fileImportSvg":this.importFile("SVG","CadX-file-importsvg","image/svg+xml");break;case"fileImportCdl":this.importFile("CDL","CadX-file-importcdl","image/cdl+xml");break;case"fileSaveLocal":this.exportDocument("cdl");break;case"fileSave":if(this.designerView.mDocument.getId()){this.saveDocument("save")}else{this.saveDocument("saveAs")}break;case"fileSaveAs":this.saveDocument("saveAs");break;case"fileProperties":this.saveDocument("properties");break;case"fileVectorCut":this.exportDocument("pltx");break;case"fileExport":this.exportDocument("raster");break;case"fileExportPlt":this.exportDocument("plt");break;case"fileVectorize":this.vectorizeFile();break;case"fileAttributes":this.documentBrowser.show({mode:"attributes",height:220});break;case"insertText":this.createTextFigure();break;case"insertShape":this.addFigures("/Search/Categories/Shape/Geometry");break;case"insertClipart":this.addFigures("/Search/Categories/Clipart");break;case"insertTemplate":this.addFigures("/Search/Categories/Template");break;case"addCutOutline":this.addCutOutline();break;case"editFigure":this.editSelectedFigures();break;case"editStyle":this.editStyleSelectedFigures();break;case"editDuplicate":this.duplicateSelectedFigures();break;case"editReplace":this.replaceSelectedFigures();break;case"editSelectAll":this.designerView.selectAll();break;case"editSelectNext":this.designerView.selectNext(1);break;case"editSelectPrevious":this.designerView.selectNext(-1);break;case"editMirror":this.mirrorFigure(-1,-1);break;case"editMirrorHorizontal":this.mirrorFigure(-1,1);break;case"editMirrorVertical":this.mirrorFigure(1,-1);break;case"transformReset":var C=this.designerView.getSelectedFigures();for(var A=0;A<C.length;++A){C[A].resetTransform()}this.designerView.render();break;case"editRemove":this.removeSelectedFigures();this.designerView.render();break;case"arrangeCenterInView":this.designerView.centerSelected();break;case"condense":this.reshape("condense");break;case"combine":this.reshape("combine");break;case"breakApart":this.reshape("breakApart");break;case"breakApartRegions":this.reshape("breakApartRegions");break;case"weld":this.reshape("weld");break;case"frontMinusBack":this.reshape("frontMinusBack");break;case"backMinusFront":this.reshape("backMinusFront");break;case"arrangeLeft":this.alignSelectedLeft();break;case"arrangeRight":this.alignSelectedRight();break;case"arrangeCenter":this.alignSelectedCenter();break;case"arrangeTop":this.alignSelectedTop();break;case"arrangeMiddle":this.alignSelectedMiddle();break;case"arrangeBottom":this.alignSelectedBottom();break;case"arrangeCenterMiddle":this.alignSelectedCenterMiddle();break;case"arrangeToFront":this.designerView.mDocument.toFront(this.designerView.getSelectedFigures());break;case"arrangeToBack":this.designerView.mDocument.toBack(this.designerView.getSelectedFigures());break;case"arrangeUpOne":this.designerView.mDocument.fowardOne(this.designerView.getSelectedFigures());break;case"arrangeBackOne":this.designerView.mDocument.backOne(this.designerView.getSelectedFigures());break;case"pinLeft":this.setSelectedFigurePin({rX:0});break;case"pinRight":this.setSelectedFigurePin({rX:1});break;case"pinCenter":this.setSelectedFigurePin({rX:0.5});break;case"pinTop":this.setSelectedFigurePin({rY:1});break;case"pinMiddle":this.setSelectedFigurePin({rY:0.5});break;case"pinBottom":this.setSelectedFigurePin({rY:0});break;case"pinCenterMiddle":this.setSelectedFigurePin({rX:0.5,rY:0.5});break;case"wizardTeams":break;case"unitMilimeter":this.units.setUnit("mm");break;case"unitCentimeter":this.units.setUnit("cm");break;case"viewZoomIn":this.zoom(0.2);break;case"viewZoomOut":this.zoom(-0.2);break;case"viewZoomToFit":this.zoomToFit();break;case"zoom400":this.zoomTo(4);break;case"zoom300":this.zoomTo(3);break;case"zoom200":this.zoomTo(2);break;case"zoom100":this.zoomTo(1);break;case"zoom75":this.zoomTo(0.75);break;case"zoom50":this.zoomTo(0.5);break;case"zoom25":this.zoomTo(0.25);break;case"unitInch":this.units.setUnit("in");break;case"unitPoint":this.units.setUnit("pt");break;case"debugCleanup":this.removeUnRendered();this.designerView.render();break;case"debugAddTestText":this.addTestText();break;case"debugAddTestShape":this.addTestShape();break;case"debugShowXmlDocument":this.errorDialog.show({errorText:this.designerView.mDocument.toXmlString()});break;default:break}},reshape:function(C){var B=this.designerView.getSelectedFigures();var A=CadX.Document.toXml(B);var D={document:A,action:C};CadX.Net.request(CadX.Net.getUrl(CadX.Net.FIGURE_RESHAPE),D,function(F){if(F.getSuccess()){var E=CadX.Document.fromXml(F.getData());this.designerView.mDocument.removeFigures(B);this.designerView.mDocument.addFigureRange(E.getFigures());this.designerView.render()}},this)},breakApartFigures:function(A){},mirrorFigure:function(A,D){var C=this.designerView.getSelectedFigures(),A=A||1,D=D||1;for(var B=0;B<C.length;++B){C[B].scaleFrom(C[B].getPin(),A,D)}this.designerView.render()},zoom:function(A){if(A){this.designerView.zoom(A)}},zoomTo:function(A){if(A){this.designerView.zoomTo(A)}},zoomToFit:function(){this.designerView.zoomToFit()},removeUnRendered:function(){var B=this.designerView.mDocument.getFigures();var C=[];for(var A=0;A<B.length;++A){if(!B[A].isRendered()){C.push(B[A])}}this.designerView.mDocument.removeFigures(C)},onFigureToolbarColor:function(C,B){var A=this.designerView.getSelectedFigures();var D=[];for(i=0;i<A.length;++i){if(A[i] instanceof CadX.ShapeFigure===false){A[i].getColorRegions(D)}}if(A.length===1){if(A[0] instanceof CadX.ShapeFigure){A[0].setBrush({color:B});this.designerView.render()}else{if(D.length==1){D[0].color=B;this.setSelectedFigureColor(D)}else{if(D.length>1){this.colorEditor.show({callback:this.setSelectedFigureColor.createDelegate(this),hexColor:B,regions:D})}}}}else{if(A.length>1){for(i=0;i<A.length;++i){A[i].setBrush({color:B});this.designerView.render()}}}},setSelectedFigureColor:function(B){B.getColorById=function(D){for(var C=0;C<this.length;++C){if(this[C].id==D){return this[C].color}}return null};if(B.length>0){var A=this.designerView.getSelectedFigures();for(i=0;i<A.length;++i){A[i].setColorRegions(B)}this.designerView.render()}},saveDocument:function(A){if(A==="save"){Ext.MessageBox.confirm("Confirm","Are you sure?  This will overwrite your file!",function(C){if(C==="yes"){function B(D){this.endProgressIndicator();if(D.getSuccess()==true){}else{CadX.alert(D.getErrorMessage())}}this.startProgressIndicator();this.designerView.mDocument.save({overwrite:true},B,this)}},this)}else{if(A==="saveAs"||A==="properties"){this.saveDialog.show({document:this.designerView.mDocument,mode:A})}}},getRenderIdList:function(){var C=this.designerView.mDocument.getFigures();var B=[];for(var A=0;A<C.length;++A){B.push(C[A].renderId+"@"+C[A].getPin().x+","+C[A].getPin().y+"@"+C[A].transform.toMatrix22String())}return B},exportDocument:function(B){function C(D,F){if(!D.elements[F.name]){var E=document.createElement("input");E.name=F.name;E.type="hidden";E.value=F.value;D.appendChild(E)}else{D.elements[F.name].value=F.value}}function A(E){var G=Ext.get("exportFile");if(G){G.remove()}G=Ext.DomHelper.append(document.body,{tag:"form",id:"exportFile",method:"post"});if(E&&Ext.isArray(E)){for(var F=0,D=E.length;F<D;F++){C(G,E[F])}}G.action=CadX.Net.getUrl(CadX.Net.EXPORT_DOCUMENT);G.submit()}if(B==="raster"){this.exportDialog.show({document:this.designerView.mDocument,callback:function(D){D.push({name:"figures",value:this.getRenderIdList().join(";")});A.call(this,D)},scope:this})}else{if(B=="plt"){A.call(this,[{name:"fileType",value:"plt"},{name:"figures",value:this.getRenderIdList().join(";")}])}else{if(B=="cdl"){A.call(this,[{name:"fileType",value:"cdl"},{name:"doc",value:this.designerView.mDocument.toXmlString()}])}else{A.call(this,[{name:"fileType",value:"pltx"},{name:"figures",value:this.getRenderIdList().join(";")}])}}}},addCutOutline:function(){var C=this.designerView.getSelectedFigures();if(C.length>0){var B=[];for(var A=0;A<C.length;++A){B.push(C[A].renderId+"@"+C[A].getPin().x+","+C[A].getPin().y+"@"+C[A].transform.toMatrix22String())}var D={renderIdList:B.join(";")};this.startProgressIndicator();CadX.Net.request(CadX.Net.getUrl(CadX.Net.GENERATE_CUTOUTLINE),D,function(F){this.endProgressIndicator();if(F.getSuccess()){var E=CadX.Document.fromXml(F.getData());var G=E.getFigures();this.designerView.mDocument.addFigureRange(G);this.designerView.render()}},this)}},vectorizeFile:function(){this.vectorizeDialog.show(null,this.onFileVectorized,this)},onFileVectorized:function(A){A.invalidateTransform();A.setPin(this.designerView.getDocumentCenter());this.designerView.mDocument.addFigure(A);this.designerView.render()},addFigures:function(A){function B(C){var E=C.getFigures();for(var D=0;D<E.length;++D){E[D].setPin(this.designerView.getDocumentCenter())}this.designerView.mDocument.addFigureRange(E);this.designerView.render()}this.documentBrowser.show({title:"Import Template",initPath:A,mode:"open",height:400,callback:B,scope:this})},importFile:function(B,A,C){this.fileUploader.show({allowedExtension:"."+Ext.util.Format.lowercase(B),callback:this.onFileImported,fileLabel:B,iconCls:A,mimeType:C,scope:this})},onFileImported:function(A){this.designerView.mDocument.addFigureRange(A);this.designerView.render(this.designerView.centerAll,this.designerView)},openDocument:function(){function A(B,C){if(B!=null){B.hide();this.designerView.setDocument(B);this.designerView.render(this.onOpenDocumentRender,this)}else{CadX.alert(C)}}this.documentBrowser.show({title:"Open Template",initPath:"/Search/My Files",mode:"open",height:475,callback:A,scope:this})},onOpenDocumentRender:function(){this.designerView.mDocument.show();this.designerView.centerAll()},createTextFigure:function(){this.figureEditor.show({mode:"create",callback:this.onCreateTextFigureComplete,scope:this})},onCreateTextFigureComplete:function(A){if(A){A.invalidateTransform();A.setPin(this.designerView.getDocumentCenter());this.designerView.mDocument.addFigure(A);this.designerView.render()}},replaceTextFigure:function(A,B){if(B&&A){A.invalidateTransform();this.designerView.mDocument.replaceFigure(B,A);this.designerView.render()}},editSelectedFigures:function(){if(this.designerView.getSelectedCount()>0){this.figureEditor.show({mode:"edit",editFigure:this.designerView.getSelectedFigures()[0],callback:this.replaceTextFigure,scope:this})}else{Ext.Msg.alert("Useage Issue","You need to select a figure to edit.")}},replaceSelectedFiguresStyle:function(A){CadX.Document.load(A,function(C){if(C){var D=this.designerView.getSelectedFigures();var E=C.getFigureAt(0);for(var B=0;B<D.length;++B){D[B].replaceProcessesFromFigure(E)}}this.designerView.render()},this)},editStyleSelectedFigures:function(){var A=this.designerView.getSelectedFigures();if(A.length>0){function B(D){var E=D.getFigureAt(0);for(var C=0;C<A.length;++C){A[C].replaceProcessesFromFigure(E)}this.designerView.render()}this.documentBrowser.show({mode:"process",height:400,initPath:"/Search/Quick Styles",callback:B,scope:this})}else{Ext.Msg.alert("Useage Issue","You need to select a figure to re-style.")}},duplicateSelectedFigures:function(){var C=this.designerView.getSelectedFigures();var B=[];if(C.length>0){for(var A=0;A<C.length;++A){var D=C[A].clone();D.translate(20,-20);this.designerView.mDocument.addFigure(D);B[B.length]=D}this.designerView.clearSelection();this.designerView.addSelection(B);this.designerView.render()}else{Ext.Msg.alert("Useage Issue","You need to select a figure to duplicate.")}},replaceSelectedFigures:function(){if(this.designerView.getSelectedCount()>0){var B=this.designerView.getSelectedFigures()[0];function A(D){if(D){var E=D.getFigureAt(0);if(E){var G=B.getBounds(),F=G.hx-G.lx,C=G.hy-G.ly;E.setPin(B.getPin());this.designerView.mDocument.removeFigures([B]);this.designerView.mDocument.addFigure(E);E.render(function(H){if(H&&H.success){H.figure.setSize(F,C,true);H.figure.invalidateAll();this.designerView.render()}},this)}}}this.documentBrowser.show({mode:"open",height:477,callback:A,initPath:"/Search/Categories/Clipart",scope:this})}else{Ext.Msg.alert("Useage Issue","You need to select a figure to replace.")}},removeSelectedFigures:function(){if(this.designerView.getSelectedCount()>0){this.designerView.mDocument.removeFigures(this.designerView.getSelectedFigures())}else{Ext.Msg.alert("Useage Issue","You need to select a figure to remove.")}},checkMutipleSelected:function(){if(this.designerView.getSelectedCount()<2){Ext.Msg.alert("Useage Issue","You need to select a least two figures to arrange.")}},alignSelectedLeft:function(){var C=this.designerView.getSelectedFigures();var B=CadX.Geo.computeFigureBounds(C);for(var A=0;A<C.length;++A){var D=C[A].getBounds();C[A].translate(B.lx-D.lx,0)}this.designerView.render()},alignSelectedRight:function(){var C=this.designerView.getSelectedFigures();var B=CadX.Geo.computeFigureBounds(C);for(var A=0;A<C.length;++A){var D=C[A].getBounds();C[A].translate(B.hx-D.hx,0)}this.designerView.render()},alignSelectedTop:function(){var C=this.designerView.getSelectedFigures();var B=CadX.Geo.computeFigureBounds(C);for(var A=0;A<C.length;++A){var D=C[A].getBounds();C[A].translate(0,B.hy-D.hy)}this.designerView.render()},alignSelectedBottom:function(){var C=this.designerView.getSelectedFigures();var B=CadX.Geo.computeFigureBounds(C);for(var A=0;A<C.length;++A){var D=C[A].getBounds();C[A].translate(0,B.ly-D.ly)}this.designerView.render()},alignSelectedCenter:function(){var D=this.designerView.getSelectedFigures();var C=CadX.Geo.computeFigureBounds(D);var F=CadX.Geo.boundsCenter(C);for(var B=0;B<D.length;++B){var E=D[B].getBounds();var A=CadX.Geo.boundsCenter(E);D[B].translate(F.x-A.x,0)}this.designerView.render()},alignSelectedMiddle:function(){var D=this.designerView.getSelectedFigures();var C=CadX.Geo.computeFigureBounds(D);var F=CadX.Geo.boundsCenter(C);for(var B=0;B<D.length;++B){var E=D[B].getBounds();var A=CadX.Geo.boundsCenter(E);D[B].translate(0,F.y-A.y)}this.designerView.render()},alignSelectedCenterMiddle:function(){var D=this.designerView.getSelectedFigures();var C=CadX.Geo.computeFigureBounds(D);var F=CadX.Geo.boundsCenter(C);for(var B=0;B<D.length;++B){var E=D[B].getBounds();var A=CadX.Geo.boundsCenter(E);D[B].translate(F.x-A.x,F.y-A.y)}this.designerView.render()},setSelectedFigurePin:function(A){var C=this.designerView.getSelectedFigures();for(var B=0;B<C.length;++B){C[B].setPin(A)}this.designerView.render()},getRandWord:function(){var A=new Array("cane","gain","leaf","lean","lech","book","prim","rose","roto","rote","sift","side","spur","time","tint","tire","mess","will","wave","weak","year","yard","wick","wild","view","lock","tent","sold","slab","sent");return A[Math.round(Math.random()*A.length)]+A[Math.round(Math.random()*A.length)]},getRandColor:function(){var A=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];var B="000000";for(i=0;i<6;i++){B=A[Math.round(Math.random()*(A.length-1))]}return B},addTestText:function(){var C=new CadX.TextBlockFigure();C.setLine(this.getRandWord());C.setFont({guid:"1f6102c2-6fc3-4cbb-937b-d2a9bed0793d",size:64});C.setBrush({color:"00FF00"});C.setSpacing(11);var E=new CadX.ContourProcess();E.setAttr({offset:5,steps:1,combine:false,outside:true,excludeHoles:false});E.setBrush({color:"00FF00"});var D=new CadX.ShadowProcess();D.setAttr({offsetX:3,offsetY:-3,simplify:true});D.setBrush({color:"FF0000"});C.addProcess(D);var G=new CadX.ClassicArcProcess();G.setAttr({height:4,width:12,rotation:0,margin:0,fit:"scale"});var B=new CadX.FitEllipseProcess();B.setAttr({height:4,width:12,rotation:0,placement:90,mirror:true,inside:true,rotateChar:true});var A=new CadX.CapitalProcess();A.setAttr({scaleX:1,scaleY:1,vPos:"baseline",first:true,last:true});var J=new CadX.VerticalArchProcess();J.setAttr({height:4,width:12,rotation:0,margin:0,fit:"scale"});var F=new CadX.EnvelopeFigure.fromXml('<Envelope><Curve IsClosed="false" Points="25.64 248.06,76.43 272.99,128.21 275.26|179.00 275.26,229.79 275.26,279.57 271.86,330.36 248.06"/><Curve IsClosed="false" Points="330.36 248.06,330.36 265.38,330.36 282.69|330.36 300.00,330.36 317.31,330.36 334.62,330.36 351.94"/><Curve IsClosed="false" Points="330.36 351.94,279.57 331.54,229.79 325.88|179.00 325.88,128.21 325.88,76.43 331.54,25.64 351.94"/><Curve IsClosed="false" Points="25.64 351.94,25.64 334.62,25.64 317.31|25.64 300.00,25.64 282.69,25.64 265.38,25.64 248.06"/></Envelope>');var H=new CadX.FitEnvelopeProcess();H.setAttr({vPos:"Stretched",hPos:"Stretched"});var I=new CadX.SplitFrontProcess();I.setAttr({overlap:0,split:0.5});this.designerView.mDocument.addFigure(C);this.designerView.render()},addTestShape:function(){}};Ext.BLANK_IMAGE_URL="./image/blank.gif";Ext.onReady(function(){Ext.QuickTips.init();var B=CadX.Net.getQueryValue("documentId");var A=new CadX.Designer({container:"cadx-designer",intiDocumentId:B});if(B){CadX.Document.load(B,function(C){if(C){C.hide();this.designerView.setDocument(C);this.designerView.render(function(){this.designerView.mDocument.show();this.designerView.zoomToFit.defer(200,this.designerView)},A)}},A)}});