COS.arcims=COS.arcims||{};COS.arcims.MapHelper=function(){var I=COS.util,N,C,j,W,Q,M,a={},n={getInfo:false,button:false,cb:""},k=0,o="/scriptsgis/mapAction.jsp",Z=0,h=null,K=null;Ext.Ajax.timeout=120000;var c=function(){i();W=new Ext.dd.DD(N.getImageEl());var q=function(){var r=Ext.get(W.getEl()).getBox();W.constrainTo(N.getContainer(),{left:-(r.width),right:-(r.width),top:-(r.height),bottom:-(r.height)},true)};q();Ext.EventManager.onWindowResize(q,N);W.onMouseDown=function(){W.getEl().style.cursor='url("/packages/js/cos/arcims/img/closedhand.cur"), move'};W.onMouseUp=function(s){W.getEl().style.cursor='url("/packages/js/cos/arcims/img/openhand.cur"), default';var t={x0:W.startPageX-W.initPageX,xf:Ext.get(W.getEl()).getXY()[0]-W.initPageX,y0:W.startPageY-W.initPageY,yf:Ext.get(W.getEl()).getXY()[1]-W.initPageY};if(t.x0==t.xf){if(n.getInfo){g(s)}return false}if(!N.isChanged()){I.element.moveElement(W.getEl(),0,0)}else{r()}function r(){var u=N.getMapCoords(),v={minX:"",maxX:"",minY:"",maxY:""};var x=((Math.abs(u.maxX-u.minX))/N.getBoxCont().width)*(t.xf-t.x0);var w=((Math.abs(u.maxY-u.minY))/N.getBoxCont().height)*(t.yf-t.y0);var y="mapaction=getImage&"+COS.arcims.MapSearch.getSearchTermParams();v.minY=u.minY-(w*(-1));v.maxY=u.maxY-(w*(-1));v.minX=u.minX-x;v.maxX=u.maxX-x;N.setMapCoords(v);V({params:y,cb:d})}}};var b=function(q){var t=N.getMapCoords();var s=(Math.abs(t.maxX-t.minX)/N.getBoxCont().width)*q.x+(t.minX*(1));var r=(Math.abs(t.maxY-t.minY)/N.getBoxCont().height)*(N.getBoxCont().height-q.y)+(t.minY*(1));return{x:s,y:r}};var T=function(s){var x,v=2,r=s.toMapPoint(N),t=N.getMapCoords(),u=COS.arcims.MapSearch;x=(Math.abs(t.maxX-t.minX)/N.getBoxCont().width)*v;function q(y){var y=E(y);if(y.info.length==0){J();return false}u.setCount(1);u.setSearchTerm(y.info[0].FIELDS.STR_PARC_C);f(y.info[0],"info");n.cb(y);y.decoded=true;d(y)}var w={minX:(r.x-x),maxX:(r.x+x),minY:(r.y+x),maxY:(r.y-x)};V({params:"mapaction=getInfo&infoMinX="+w.minX+"&infoMaxX="+w.maxX+"&infoMinY="+w.minY+"&infoMaxY="+w.maxY,cb:q,skipLoading:true})};var g=function(r){J();var q=I.element.pointer.getXYinElement(N.getContainer(),r);T(new COS.arcims.Point(q.x,q.y))};var V=function(q){var q=q||{};if(q.skipLoading!=true){J();N.isReady(0)}var t=N.getMapCoords();var r="";var s=(Ext.isIE&&!Ext.isIE7?true:false);if(t.maxX!=""){r="maxx="+t.maxX+"&minx="+t.minX+"&maxy="+t.maxY+"&miny="+t.minY}r+="&width="+Ext.get(N.getContainer()).getBox().width+"&height="+Ext.get(N.getContainer()).getBox().height;if(q.params){r+="&"+q.params}else{if(q.absParams){r=q.absParams}else{r+="&mapaction=getImage"}}if(K!=null){r+="&service="+K}Ext.Ajax.request({url:q.url||B(),method:q.method||"POST",params:r,success:q.cb||d})};var i=function(){I.Event.wheelAction.on(N.getContainer(),l)};var O=function(){I.Event.wheelAction.un(N.getContainer())};var J=function(){var q=Ext.get("loadContainer");if(q.isVisible()){q.toggle(true);M=false;i();return }else{O();q.toggle();M=true}};var R=function(){return Ext.encode(a)};var f=function(r,s){var q=a;switch(s){case"info":r?a.info=r.FIELDS:delete (a.info);break;case"img":a.img=r.map.src;break;default:a.img=r.map.src;a.info=r.FIELDS;break}};var l=function(r,q){if(M){return false}S({point:new COS.arcims.Point(r.x,r.y),fa:q});return false};var X={pan:{_dir:{N:1,NE:2,E:3,SE:4,S:5,SW:6,W:7,NW:8}},zoom:{_factor:0,_defaultValue:2,_max:11,_min:0,setZoomFactor:function(q){if(q>0){if((this._factor+q)>this._max){if(this._factor<this._max){q=this._max-this._factor;this._factor=this._max;return q}}else{this._factor+=q;return q}}else{if(q<0){if(this._factor!=this._min){if((this._factor+q)<this._min){q=(this._factor-this._min)*(-1);this._factor=this._min;return q}else{this._factor+=q;return q}}}}return false},getZoomFactor:function(){return this._factor}}};var L=function(q){var r="mapaction=pan&dir="+X.pan._dir[q.dir]+"&"+COS.arcims.MapSearch.getSearchTermParams();V({params:r,cb:d})};var d=function(q){var r=N.getImageEl()||N.getContainer().appendChild(document.createElement("img"));if(!N.isChanged()){N.isChanged(1)}if(!q.decoded){q=E(q)}Q=r.src;r.src=q.map.src;Ext.get(r).fitToParent(N.getContainer());f(q,"img");Ext.get(r).moveTo(Ext.get(N.getContainer()).getX(),Ext.get(N.getContainer()).getY(),{animate:true,duration:0.3});N.setMapCoords(q.coords);N.isReady(1);D(q);J();if(h!=null){h(q)}};var D=function(q){if(!n.button){return }var r=Ext.get(Ext.query(".tool-cont-info",N.getContainer())[0]);if(q.buildings=="true"){r.setVisible(true)}else{r.setVisible(false);n.getInfo=false;Ext.get("tool-cont-info-btn-0").removeClass("tool-btn-over")}};var S=function(r){if(!r.point){var q=Ext.get(N.getImageEl()).getBox();r.point=new COS.arcims.Point(q.width/2,q.height/2)}if(!r.slider&&N.hasZoomControl()){A(r.fa)}if(r.fa>3){r.fa=(Math.round(r.fa/3)*3)}var s="mapaction=zoom&x="+r.point.x+"&y="+r.point.y+"&zoomFactor="+r.fa+"&"+COS.arcims.MapSearch.getSearchTermParams();V({params:s,cb:d})};var m=function(q){k+=q};var U=function(){return k};var A=function(s){m(s);var r=Ext.get(j.getEl()).findParentNode("div",1,true).getBox(),q=Ext.get(j.getEl()).getBox(),t;if(s&&s>0){if((q.y-(s*j.yTickSize))<r.y){t=r.y}else{t=(q.y-(s*j.yTickSize))}}else{if(s&&s<0){if((q.bottom-(s*j.yTickSize))>r.bottom){t=(r.bottom-q.height)}else{t=(q.y-(s*j.yTickSize))}}else{t=r.bottom-q.height}}Ext.get(j.getEl()).moveTo(q.x,t,true);j.startPageY=j.startY=t};var E=function(q){return Ext.util.JSON.decode(q.responseText.replace(/(\n|\r|\r\n)/g,""))};var G=function(){var x=I.element;var u=function(s){if(N.isChanged()){L(s)}};var w=x.createElement({el:"div",attr:{id:"cosMapZoomControl"}});x.append(N.getContainer(),w);var r=x.createElement({el:"div",attr:{className:"panImageContainer"}});x.append(w,r);x.append(r,x.createImage({attr:{src:"/packages/js/cos/arcims/img/lmc.png",className:"panImage"}}));x.append(r,x.createElement({el:"div",attr:{id:"pan_e",title:"Pan East",className:"pan"},on:{ev:"click",cb:u,param:{dir:"E"}}}));x.append(r,x.createElement({el:"div",attr:{id:"pan_w",title:"Pan West",className:"pan"},on:{ev:"click",cb:u,param:{dir:"W"}}}));x.append(r,x.createElement({el:"div",attr:{id:"pan_n",title:"Pan North",className:"pan"},on:{ev:"click",cb:u,param:{dir:"N"}}}));x.append(r,x.createElement({el:"div",attr:{id:"pan_s",title:"Pan South",className:"pan"},on:{ev:"click",cb:u,param:{dir:"S"}}}));x.append(r,x.createElement({el:"div",attr:{id:"fullExt",title:"First Map",className:"pan"},on:{ev:"click",cb:N.getFullExtentMap}}));x.append(r,x.createElement({el:"div",attr:{id:"zoom_in",title:"Zoom in",className:"pan"},on:{ev:"click",cb:S,param:{fa:2}}}));r=x.createElement({el:"div",css:{position:"absolute",left:"0px",top:"242px",width:"59px",height:"30px"}});x.append(w,r);var t={border:"0px none",margin:"0px",padding:"0px",width:"59px",height:"30px"};x.append(r,x.createImage({attr:{src:"/packages/js/cos/arcims/img/lmc-bottom.png"},css:t}));x.append(r,x.createElement({el:"div",attr:{id:"zoom_out",title:"Zoom Out",className:"pan"},on:{ev:"click",cb:function(){if(N.isChanged()){S({fa:-2})}}}}));r=x.createElement({el:"div",attr:{id:"slider_cont"}});x.append(w,r);x.append(r,x.createImage({attr:{src:"/packages/js/cos/arcims/img/slider.png",id:"slider"}}));var v=function(AG){Y(AG.length);function z(AJ){var AH=AJ.getTarget();var AI=p();if((AH.id.search(/0|1/)>0)&&!AI[AH.id.substr(-1)]){COS.arcims.MapSearch.getImage("get"+AH.innerHTML)}else{if(AH.id.search(/(0|1)/)<0){COS.arcims.MapSearch.getImage("get"+AH.innerHTML)}}N.getContainer().focus()}var AF=AG.length==1?x.createElement({el:"div",attr:{className:AG[0].single.className}}):x.createElement({el:"div",attr:{className:"tool-cont-combo tool-cont "}});x.append(N.getContainer(),AF);var AE,AA=0;for(var AB=0,AC=AG.length;AB<AC;AB++){var AD=AG[AB].className?"tool-btn "+AG[AB].className:"tool-btn";AE=x.createElement({el:"div",attr:{title:AG[AB].title,className:"tool-btn-cont"},css:{left:(AA*AB)+"px"}});x.append(AF,AE);var s=x.createElement({el:"div",attr:{className:AD,innerHTML:AG[AB].inner,id:"tool-cont-btn-"+AB}});x.append(AE,s);Ext.get(s).on("click",z);if(AA==0){AA=Ext.get(AE).getBox().width}}return AF};var y=function(){j=new Ext.dd.DD("slider");j.startY=j.startPageY;var s=Ext.get(N.getContainer()).getBox(),z=15;C=[s.x,s.y];function AA(AD){var AE=Ext.get(AD.getEl()).getXY();var AC=Ext.get(N.getContainer()).getBox();return[(AE[0]-(AC.x+1)),(AE[1]-(AC.y+1))]}var AB=function(){j.setYTicks(AA(j)[1],z);j.constrainTo("slider_cont")};AB();j.onDrag=function(){if(C!=Ext.get(N.getContainer()).getXY()){AB()}};j.onMouseDown=function(){j.getEl().style.cursor='url("/packages/js/cos/arcims/img/closedhand.cur"), move'};j.onMouseUp=function(){var AC=j.startPageY;if(j.startY==AC){return }Ext.get(j.getEl()).setStyle({cursor:'url("/packages/js/cos/arcims/img/openhand.cur"), default'});S({fa:Math.floor((j.startY-AC)/z),slider:1});j.startY=AC}};var q=v([{title:"Show street map",inner:"Map",className:"tool-btn-over"},{title:"Show satellite imagery",inner:"Aerial"},{title:"Show wetland layer",inner:"Wetlands"},{title:"Show zoning layer",inner:"Zoning"}]);y();return{zoomEl:w,mapToolEl:q}};var F=function(r){if(!r.cb){return }n.cb=r.cb;n.button=true;var s=I.element;var t=s.createElement({el:"div",attr:{className:"tool-cont tool-cont-info"},css:{right:(Ext.isIE&&!Ext.isIE7?"350px":"300px")}});s.append(N.getContainer(),t);var q=s.createElement({el:"div",attr:{title:"Get property info",className:"tool-btn-cont"},css:{right:"0px"}});s.append(t,q);s.append(q,s.createElement({el:"div",attr:{className:"tool-btn",innerHTML:"Info",id:"tool-cont-info-btn-0"}}));Ext.addBehaviors({"#tool-cont-info-btn-0 @click":function(w,u){var v="tool-btn-over";if(Ext.get(u).hasClass(v)){Ext.get(u).removeClass(v);Ext.get(N.getImageEl()).applyStyles({cursor:'url("/packages/js/cos/arcims/img/openhand.cur"), default'});n.getInfo=false}else{Ext.get(u).addClass(v);Ext.get(N.getImageEl()).applyStyles({cursor:"pointer"});n.getInfo=true}N.getContainer().focus()}})};var p=function(){var s=COS.arcims.MapSearch.getMapTypeBit();var r=[];for(var q in s){r[(r.length>0?r.length:0)]=s[q]?1:0}return r};var P=function(){var s=p();var q="tool-btn-over";for(var r=0;r<Z;r++){if(!s[r]){Ext.get("tool-cont-btn-"+r).removeClass(q)}else{Ext.get("tool-cont-btn-"+r).addClass(q)}}if(arguments.length>0&&arguments[0]=="resetButtons"){for(var r=0;r<s.length;r++){Ext.get("tool-cont-btn-"+r).removeClass(q)}Ext.get("tool-cont-btn-0").addClass(q)}};var H=function(){A();COS.arcims.MapSearch.resetMapType();P("resetButtons");D({buildings:false})};var Y=function(q){Z+=q};var B=function(){return o};var e=function(q){o=q};return{createTools:function(q){return G(q)},updateSlider:function(q){return A(q)},cleanDecodeResponse:function(q){return E(q)},setCM:function(q){N=q},getCM:function(){return N},addMapListeners:function(){return c()},getLastImage:function(){return Q},showMap:function(q){return d(q)},toggleLoading:function(){return J()},isLoading:function(){return M},setPropertyInfo:function(q,r){return f(q,r)},getPropertyInfo:function(){return R()},sendImageRequest:function(q){return V(q)},setPressedButtons:function(q){return P(q)},createInfoButton:function(q){return F(q)},resetMap:function(){return H()},getSliderPos:function(){return U()},setInfoButton:function(q){return D(q)},getImageServerScript:function(){return B()},setImageServerScript:function(q){e(q)},setShowMapCB:function(q){h=q},setMapService:function(q){K=q}}}();(function(){COS.arcims.Point=function(S,T){this.x=S;this.y=T};COS.arcims.Point.prototype={toString:function(){return("x="+this.x+",y="+this.y)},toMapPoint:function(V){var U=V.getMapCoords();var T=(Math.abs(U.maxX-U.minX)/V.getBoxCont().width)*this.x+(U.minX*(1));var S=(Math.abs(U.maxY-U.minY)/V.getBoxCont().height)*(V.getBoxCont().height-this.y)+(U.minY*(1));return{x:T,y:S}}};COS.arcims.Coord=function(S){this.setCoords(S)};COS.arcims.Coord.prototype={toString:function(){return("minX : "+this.minX+"\nmaxX : "+this.maxX+"\nminY : "+this.maxY+"\nmaxY : "+this.maxY)},setCoords:function(S){this.minX=S.minX;this.maxX=S.maxX;this.minY=S.minY;this.maxY=S.maxY}};var R=COS.util,I=COS.util.element,G=COS.arcims.MapHelper,B=COS.arcims.MapSearch,N=false,L=false,C=false,E=false,J="",M={src:"/packages/js/cos/arcims/img/cos.jpg",measure:{width:400,height:400},coords:{minX:351000.25,maxX:393000.25,minY:2845999.75,maxY:2887999.75}},P,F=new COS.arcims.Coord({minX:"",maxX:"",minY:"",maxY:""});var K=function(V,T){J=(typeof V=="string")?Ext.getDom(V):V;var S=Ext.get(V),U=S.getBox();S.setStyle({overflow:"hidden",position:"relative"});if(U.width==0||U.height==0){S.applyStyles({width:"500px",height:"400px"})}else{S.applyStyles({width:U.width+"px",height:U.height+"px"})}U=S.getBox();D(S,U);if(!Q("parcel",T)){G.sendImageRequest({params:"mapaction=getImage",cb:O})}};var D=function(T,Y){var V={position:"absolute",top:0,left:0,zIndex:"99",display:"none",background:"url(/packages/js/cos/arcims/img/trans.gif) repeat"};var W=I.createElement({el:"div",css:V,attr:{id:"loadContainer"}});I.append(J,W);Ext.get(W).fitToParent(true,T);var X=220,S=50;V={position:"absolute",left:(Y.width/2)-(X/2)+"px",top:(Y.height/2)-(S/2)+"px",width:X+"px",height:S+"px",paddingTop:"10px"};I.append(Ext.getDom("loadContainer"),I.createElement({el:"div",css:V,attr:{id:"loading",innerHTML:'<span class="loading-text">loading ...</span>'}}));var U=Ext.get("loading");U.setOpacity(0.8);I.append(U,I.createImage({attr:{src:"/packages/js/cos/arcims/img/bar-loader.gif"}}))};var O=function(S){var S=!S.decoded?G.cleanDecodeResponse(S):S;G.setPropertyInfo(S,"img");G.setInfoButton(S);var S={coords:S.coords,src:S.map.src,measure:S.measure};A(S)};var H=function(S){M=S};var A=function(X){if(!J){return }if(X){H(X)}var W=100;var T="";for(var V=0;V<W;V++){var U="CosMapImg"+Math.floor(Math.random()*W);if(!Ext.getDom(U)){T=U;break}else{alert("Too many maps!")}}var S=I.createImage({attr:{src:M.src,id:T},css:{width:J.style.width,height:J.style.height,position:"relative",cursor:'url("/packages/js/cos/arcims/img/openhand.cur"), default'}});I.append(J,S);P=Ext.getDom(U);F.setCoords(M.coords);L=1;G.addMapListeners();G.toggleLoading()};function Q(S,V){if(!V||V.query==""){return false}var U=V.query.split("&");for(var T=0;T<U.length;T++){var W=U[T].split("=");if(W[0]==S){if(W[1].match("^([0-9]{5}(-)?[0-9]{4})$")){COS.arcims.MapSearch.doSearch({searchTerm:W[1],cb:V.cb,imgCb:O});return true}else{alert("Invalid Parcel");return false}}}}COS.arcims.Map=function(S){if(arguments.length==1){this.init(S)}else{this.init(S,arguments[1])}};COS.arcims.Map.prototype={isChanged:function(){if(arguments.length>0){N=arguments[0]}else{return N}},isReady:function(){if(arguments.length>0){L=arguments[0]}else{return L}},hasMapTools:function(){return C},hasZoomControl:function(){return E},getContainer:function(){return J},getBoxCont:function(){return{width:Ext.get(J).getBox().width,height:Ext.get(J).getBox().height}},getImageEl:function(){if(P){return P}return false},addMapTools:function(S){C=true;if(I.getElementsByClassName("tool-cont")){Ext.get(I.getElementsByClassName("tool-cont")).setVisible(true)}else{Ext.get(G.createTools(this).mapToolEl).setVisible(true)}if(S&&S.infoButton){G.createInfoButton({cb:S.cb})}},addZoomControl:function(){E=true;if(Ext.getDom("cosMapZoomControl")){Ext.get("cosMapZoomControl").setVisible(true)}else{Ext.get(G.createTools(this).zoomEl).setVisible(true)}},hideZoomTools:function(){if(!E){return }E=false;Ext.get("cosMapZoomControl").setVisible(false)},hideMapTools:function(){if(!C){return }C=false;Ext.get(I.getElementsByClassName("tool-cont")).setVisible(false)},getMapCoords:function(){return F},setMapCoords:function(S){F.setCoords(S);return true},getFullExtentMap:function(){if(!N){return }G.sendImageRequest({absParams:"mapaction=getImage&height="+M.measure.height+"&width="+M.measure.width,cb:G.showMap});G.resetMap();F.setCoords(M.coords);N=0;G.getCM().layers=Array()},init:function(T,S){if(!S){var S=null}G.setCM(this);K(T,S)}};Ext.apply(COS.arcims.Map.prototype,{modifyLayers:function(Y){var W=Y.split(","),V=false,X=false;for(var U=0;U<W.length;U++){if(W[U]==""){for(var U=0,S=this.layers.length;U<S;U++){COS.arcims.MapSearch.removeFromMapType(this.layers[U]);if(!X){X=true}}this.layers=new Array();break}var T=W[U].split("=");if(T[1]==0&&this.layers.indexOf(T[0])>-1){COS.arcims.MapSearch.removeFromMapType(T[0]);this.layers.remove(T[0]);X=true}else{if(T[1]==1&&this.layers.indexOf(T[0])==-1){this.layers.push(T[0]);COS.arcims.MapSearch.addToMapType(T[0]);V=true}}}if(X||V){G.sendImageRequest({params:"mapaction=getImage&"+COS.arcims.MapSearch.getSearchTermParams()})}return V},layers:new Array(),setShowMapCB:function(S){G.setShowMapCB(S)}})})();