function AddressForm(){this.streetPrefixes=new Array("none or unknown","E","N","NE","NW","S","SE","SW","W");this.streetTypes=new Array("none or unknown","AL","AV","AVCT","AVEX","AVPL","BLVD","CI","CIOF","CION","CIR","CT","CTPL","DR","EXT","FR","HWY","LP","PK","PKWY","PL","RP","RPF1","RPF2","RPF3","RPN1","RPN2","RPN3","RPON","ST","STCT","STLP","STPL","TER","TRL","WY","WYE");this.directions=new Array("none or unknown","E","N","NE","NW","S","SE","SW","W","AI","FI","KN","KS")}AddressForm.prototype.render=function(element){var createUI=function(streetPrefixes,streetTypes,directions){var table="<table class='addressFormTable' cellPadding='5' cellSpacing='0' width='100%'>";table+="<thead><tr><td>House Number</td><td>Street Prefix</td><td>Street Name</td><td>Street Type</td><td>Direction</td></tr></thead>";table+="<tbody><tr style='vertical-align:top;'>";table+=createHouseNumberTD();table+=createStreetPrefixTD(streetPrefixes);table+=createStreetNameTD();table+=createStreetTypeTD(streetTypes);table+=createDirectionTD(directions);table+="</tr></tbody>";table+="<tfoot><tr><td colspan='5'>Find the Address</td></tr></tfoot>";table+="</table>";return table};var createHouseNumberTD=function(){var td="<td>";td+="<input type='text'/>";td+="<div>Examples: 105, 1124,11016</div>";td+="<div>Do not include apartment numbers or letters</div>";td+="</td>";return td};var createStreetPrefixTD=function(streetPrefixes){var td="<td>";for(var i in streetPrefixes){td+=createStreetPrefixItem(streetPrefixes[i])}td+="</td>";return td};var createStreetPrefixItem=function(streetPrefix){return"<div><input type='radio' name='streetPrefix'/><span>"+streetPrefix+"</span></div>"};var createStreetNameTD=function(){return"<td><input type='text' name='streetName'/><div>Examples: 3rd, D, 201st</div></td>"};var createStreetTypeTD=function(streetTypes){var rows=streetTypes.length/2;var table="<td><table>";table+="<thead><tr><td colspan='2'></td></tr></thead>";table+=createStreetTypeItems(streetTypes);table+="<tfoot><tr><td colspan='2'></td></tr></tfoot>";table+="</table></td>";return table};var createStreetTypeItems=function(streetTypes){var tbody="<tbody>";var length=streetTypes.length-1;for(var i in streetTypes){var td=createStreetTypeItem(streetTypes[i]);if(i==0||i%2==0){tbody+="<tr>"}tbody+=td;if(i%2!=0||i==length){tbody+="</tr>"}}tbody+="</tbody>";return tbody};var createStreetTypeItem=function(streetType){return"<td><input type='radio' name='streetType'/><span>"+streetType+"</span></td>"};var createDirectionTD=function(directions){var td="<td>";for(var i in directions){td+=createDirectionItem(directions[i])}td+="</td>";return td};var createDirectionItem=function(direction){return"<div><input type='radio' name='direction'/><span>"+direction+"</span></div>"};var ui=createUI(this.streetPrefixes,this.streetTypes,this.directions);jQuery(element).html(ui)};if(!PCGIS){var PCGIS={}}if(!PCGIS.GISWebServices){PCGIS.GISWebServices={}}PCGIS.GISWebServices.AddressNormalizer=function(server,success,error,options){if(!options){options={}}var normalize=function(address){var url="http://"+server+"/GIS/services/json/address/normalizer?address="+escape(address);if(options.apiKey){url+="&apiKey="+escape(options.apiKey)}if(options.proxy!=null){url=options.proxy+"?path="+escape(url)}jQuery.ajax({type:"GET",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:success,error:error})};return{normalize:normalize}};function Buffer(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}Buffer.prototype.buffer=function(x,y,distance,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/buffer";url=url+"?x="+escape(x);url=url+"&y="+escape(y);url=url+"&distance="+escape(distance);url=url+"&source="+escape(source);url=url+"&category="+escape(category);url=url+"&layerName="+escape(layerName);url=url+"&layerFileName="+escape(layerFileName);url=url+"&fields="+escape(fields);url=url+"&inlcudeGeometry="+escape(inlcudeGeometry);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToMapFeatures(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};if(error==undefined){error=function(err){alert("The Buffer Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function DataMenu(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}DataMenu.prototype.load=function(success,error){var url="http://"+this.server+"/GIS/services/json/datamenu";if(this.apiKey!=null){url=url+"?apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){if(jQuery.isFunction(success)){success(response)}else{success.handle(response)}};if(error==undefined){error=function(err){alert("The Data Menu Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function DataMenuTreeBuilder(element){this.element=element;this.tree=null;this.selectControl=null;this.nodeClicked=null;this.source="County";this.shouldBuildEntireTree=false;this.dataMenuJson=null;this.handle=function(dataMenuJson){this.dataMenuJson=dataMenuJson;if(this.shouldBuildEntireTree==true){this.buildEntireTree(dataMenuJson)}else{if(this.selectControl!=null){this.buildSelect(dataMenuJson,this.source)}this.buildTreeForSource(dataMenuJson,this.source).getRoot().children[0].expand()}};this.buildEntireTree=function(dataMenuJson){if(this.tree==null){this.tree=new YAHOO.widget.TreeView(this.element)}else{if(this.tree.getRoot().children.length>0){this.tree.removeNode(this.tree.getRoot().children[0])}}var root=this.tree.getRoot();if(this.nodeClicked!=null){this.tree.subscribe("labelClick",this.nodeClicked)}for(var i=0;i<dataMenuJson.sources.length;i++){var source=dataMenuJson.sources[i];this.buildTreeNodeForSource(source,root)}this.tree.draw();return this.tree};this.buildTreeForSource=function(dataMenuJson,sourceName){if(this.tree==null){this.tree=new YAHOO.widget.TreeView(this.element)}else{if(this.tree.getRoot().children.length>0){this.tree.removeNode(this.tree.getRoot().children[0])}}if(this.nodeClicked!=null){this.tree.subscribe("labelClick",this.nodeClicked)}var root=this.tree.getRoot();for(var i=0;i<dataMenuJson.sources.length;i++){var source=dataMenuJson.sources[i];if(source.name==sourceName){this.buildTreeNodeForSource(source,root);break}}this.tree.draw();return this.tree};this.buildTreeNodeForSource=function(source,root){var sourceNode=new YAHOO.widget.TextNode(this.unEscapeJson(source.name),root,false);var categories=source.categories;for(var j=0;j<categories.length;j++){var category=categories[j];var categoryNode=new YAHOO.widget.TextNode(this.unEscapeJson(category.name),sourceNode,false);var layers=category.layers;for(var k=0;k<layers.length;k++){var layer=layers[k];if(layer!=null){var layerNode=new YAHOO.widget.TextNode(this.unEscapeJson(layer.name),categoryNode,false);var layerFiles=layer.layerFiles;for(var l=0;l<layerFiles.length;l++){var layerFile=layerFiles[l];var layerFileNode=new YAHOO.widget.TextNode(this.unEscapeJson(layerFile.name),layerNode,false)}}}}};this.unEscapeJson=function(str){return str.split("\\/").join("/")};this.buildSelect=function(dataMenuJson,selectedSource){var dataMenuSourceSelect=this.selectControl;for(var i=0;i<dataMenuJson.sources.length;i++){var source=dataMenuJson.sources[i];var selected=false;if(source.name==selectedSource){selected=true}dataMenuSourceSelect[i]=new Option(source.name,source.name,selected)}jQuery(dataMenuSourceSelect).bind("change",this,this.dataMenuSourceChange)};this.dataMenuSourceChange=function(evt){var sourceName=this.value;var builder=evt.data;builder.buildTreeForSource(builder.dataMenuJson,sourceName).getRoot().children[0].expand()}}function Extent(){this.name="";this.description="";this.type="";this.minX=0;this.minY=0;this.maxX=0;this.maxY=0}Extent.prototype.getExtentString=function(){return this.minX+","+this.minY+","+this.maxX+","+this.maxY};Extent.prototype.toString=function(){return this.name};function ExtentDao(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}if(options.url!=undefined&&options.url!=null&&options.url!=""){this.url=options.url}}}ExtentDao.prototype.getAll=function(success,error){return this.get(null,null,success,error)};ExtentDao.prototype.getByType=function(type,success,error){return this.get(null,type,success,error)};ExtentDao.prototype.getByName=function(name,success,error){return this.get(name,null,success,error)};ExtentDao.prototype.get=function(name,type,success,error){var extents=[];var url;if(this.url==null){url="http://"+this.server+"/GIS/services/json/extents?";if(name!=null){url=url+"name="+escape(name)}else{if(type!=null){url=url+"type="+escape(type)}}if(this.apiKey!=null){url+="&apiKey="+escape(this.apiKey)}}else{url=this.url}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){for(var i=0;i<response.length;i++){var extent=new Extent();extent.name=response[i].name;extent.description=response[i].description;extent.type=response[i].type;extent.minX=response[i].minX;extent.minY=response[i].minY;extent.maxX=response[i].maxX;extent.maxY=response[i].maxY;extents[i]=extent}if(jQuery.isFunction(success)){success(extents)}else{success.handle(extents)}};if(error==undefined){error=function(err){alert("The Extent Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};ExtentDao.prototype.getTypes=function(name,extentHandler){alert("Not implemented...yet...")};function ExtentListHandler(element){this.element=element;this.handle=function(extents){var previousType=null;var div="<div>";var len=extents.length;for(var i in extents){var extent=extents[i];if(previousType==null||previousType!=extent.type){if(i>0){div+="</ul>"}var headerDiv="<div class='extentType'>"+extent.type+"</div>";var ul="<ul>";div+=headerDiv+ul}var li="<li><a href='javascript:selectExtent("+extent.getExtentString()+")'>"+extent.name+"</a>";li+="<div class='extentDescription'>"+extent.description+"</div>";div+=li;previousType=extent.type}div+="</ul></div>";jQuery(this.element).html(div)}}function ExtentSelectHandler(element){this.element=element;this.handle=function(extents){var previousType=null;var len=extents.length;var options="";for(var i in extents){var extent=extents[i];if(previousType==null||previousType!=extent.type){options+="<option value='' style='font-weight:bold;'>"+extent.type+"</option>"}options+="<option value='"+extent.getExtentString()+"'>"+extent.name+"</option>";previousType=extent.type}jQuery(this.element).html(options)}}function GeocodeValueLister(name,server,type,options){this.name=name;this.server=server;this.type=type;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}GeocodeValueLister.prototype.get=function(success,error){var results=new Array();var url="http://"+this.server+"/GIS/services/json/"+this.type+"/lister";if(this.apiKey!=null){url+="?apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){for(var i=0;i<response.length;i++){results[i]=response[i].value}if(jQuery.isFunction(success)){success(results)}else{success.handle(results)}};if(error==undefined){error=function(err){alert("The GeocodeValueLister Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};GeocodeValueLister.prototype.toString=function(){return this.name};function GeocodeValueListerSelectHandler(element){this.element=element;this.handle=function(values){var options="";for(var i in values){var value=values[i];options+="<option value='"+value+"'>"+value+"</option>"}jQuery(this.element).html(options)}}function GeocodeResult(){this.value="";this.x=0;this.y=0;this.minX=0;this.minY=0;this.maxX=0;this.maxY=0}GeocodeResult.prototype.toString=function(){return this.value+" at "+this.x+","+this.y};GeocodeResult.prototype.getExtent=function(){return this.minX+","+this.minY+","+this.maxX+","+this.maxY};GeocodeResult.prototype.getLinkStr=function(){return'"'+this.value+'", '+this.x+","+this.y+","+this.getExtent()};function Geocoder(name,server,type,parameter,options){this.name=name;this.server=server;this.type=type;this.parameter=parameter;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}if(options.minScore!=undefined&&options.minScore!=null&&options.minScore!=""){this.minScore=options.minScore}if(options.maxCandidates!=undefined&&options.maxCandidates!=null&&options.maxCandidates!=""){this.maxCandidates=options.maxCandidates}if(options.spellingSensitivity!=undefined&&options.spellingSensitivity!=null&&options.spellingSensitivity!=""){this.spellingSensitivity=options.spellingSensitivity}}}Geocoder.prototype.geocode=function(value,success,error){var geocodeResults=new Array();var url="http://"+this.server+"/GIS/services/json/"+this.type+"/geocode?"+this.parameter+"="+escape(value);if(this.minScore!=null){url+="&minScore="+escape(this.minScore)}if(this.maxCandidates!=null){url+="&maxCandidates="+escape(this.maxCandidates)}if(this.spellingSensitivity!=null){url+="&spellingSensitivity="+escape(this.spellingSensitivity)}if(this.apiKey!=null){url+="&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotGeocodeResponse=function(geocodeResponse){for(var i=0;i<geocodeResponse.length;i++){geocodeResult=new GeocodeResult();geocodeResult.value=geocodeResponse[i].value;geocodeResult.x=geocodeResponse[i].x;geocodeResult.y=geocodeResponse[i].y;geocodeResult.minX=geocodeResponse[i].minX;geocodeResult.minY=geocodeResponse[i].minY;geocodeResult.maxX=geocodeResponse[i].maxX;geocodeResult.maxY=geocodeResponse[i].maxY;geocodeResults[i]=geocodeResult}if(jQuery.isFunction(success)){success(geocodeResults)}else{success.handle(geocodeResults)}};if(error==undefined){error=function(err){alert("The Geocode Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotGeocodeResponse,error:error})};Geocoder.prototype.toString=function(){return this.name};function AddressGeocoder(server,options){Geocoder.call(this,"Address Geocoder",server,"address","address",options)}AddressGeocoder.prototype=new Geocoder();function AddressGeocoder2(server,options){Geocoder.call(this,"Address Geocoder 2",server,"address2","address",options)}AddressGeocoder2.prototype=new Geocoder();function AddressWithCityAndZipCodeGeocoder(server,options){Geocoder.call(this,"Address with City and ZipCode Geocoder",server,"addressWithCityAndZip","address",options)}AddressWithCityAndZipCodeGeocoder.prototype=new Geocoder();function BasemapGeocoder(server,options){Geocoder.call(this,"Basemap Geocoder",server,"basemap","name",options)}BasemapGeocoder.prototype=new Geocoder();function BusinessDivisionGeocoder(server,options){Geocoder.call(this,"Business Division Geocoder",server,"business/division","division",options)}BusinessDivisionGeocoder.prototype=new Geocoder();function BusinessNameGeocoder(server,options){Geocoder.call(this,"Business Name Geocoder",server,"business/name","name",options)}BusinessNameGeocoder.prototype=new Geocoder();function BusinessSicCodeGeocoder(server,options){Geocoder.call(this,"Business SIC Code Geocoder",server,"business/sicCode","code",options)}BusinessSicCodeGeocoder.prototype=new Geocoder();function CensusTractGeocoder(server,options){Geocoder.call(this,"Census Tract Geocoder",server,"census/tract","tract",options)}CensusTractGeocoder.prototype=new Geocoder();function CensusBlockGroupGeocoder(server,options){Geocoder.call(this,"Census Block Group Geocoder",server,"census/blockGroup","blockGroup",options)}CensusBlockGroupGeocoder.prototype=new Geocoder();function CensusBlockGeocoder(server,options){Geocoder.call(this,"Census Block Geocoder",server,"census/block","block",options)}CensusBlockGeocoder.prototype=new Geocoder();function ChildCareCenterGeocoder(server,options){Geocoder.call(this,"Census Block Geocoder",server,"childCareCenter","name",options)}ChildCareCenterGeocoder.prototype=new Geocoder();function CommunityPlanGeocoder(server,options){Geocoder.call(this,"Community Plan Geocoder",server,"communityPlan","name",options)}CommunityPlanGeocoder.prototype=new Geocoder();function CountyFacilityGeocoder(server,options){Geocoder.call(this,"County Facility Geocoder",server,"countyFacility","name",options)}CountyFacilityGeocoder.prototype=new Geocoder();function DrainageSubsystemGeocoder(server,options){Geocoder.call(this,"Drainage Subsystem Geocoder",server,"drainageSubsystem","name",options)}DrainageSubsystemGeocoder.prototype=new Geocoder();function HospitalGeocoder(server,options){Geocoder.call(this,"Hospital Geocoder",server,"hospital","name",options)}HospitalGeocoder.prototype=new Geocoder();function IntersectionGeocoder(server,options){Geocoder.call(this,"Intersection Geocoder",server,"intersection","intersection",options)}IntersectionGeocoder.prototype=new Geocoder();function MobilityGeocoder(server,options){Geocoder.call(this,"Mobility Geocoder",server,"mobility","route",options)}MobilityGeocoder.prototype=new Geocoder();function ParcelNumberGeocoder(server,options){Geocoder.call(this,"Parcel Number Geocoder",server,"parcelNumber","number",options)}ParcelNumberGeocoder.prototype=new Geocoder();function ParcelTaxPayerNameGeocoder(server,options){Geocoder.call(this,"Parcel Tax Payer Name Geocoder",server,"parcelTaxPayerName","name",options)}ParcelTaxPayerNameGeocoder.prototype=new Geocoder();function ParkGeocoder(server,options){Geocoder.call(this,"Park Geocoder",server,"park","name",options)}ParkGeocoder.prototype=new Geocoder();function PatrolDistrictGeocoder(server,options){Geocoder.call(this,"Patrol District Geocoder",server,"patrolDistrict","district",options)}PatrolDistrictGeocoder.prototype=new Geocoder();function PatrolReportingBlockGeocoder(server,options){Geocoder.call(this,"Patrol Reporting Block Geocoder",server,"patrolReportingBlock","block",options)}PatrolReportingBlockGeocoder.prototype=new Geocoder();function PcNetNatGeocoder(server,options){Geocoder.call(this,"PC-NET/NAT Geocoder",server,"pcNetNat","group",options)}PcNetNatGeocoder.prototype=new Geocoder();function PlaceNameGeocoder(server,options){Geocoder.call(this,"Place Name Geocoder",server,"placeName","name",options)}PlaceNameGeocoder.prototype=new Geocoder();function PlatNumberGeocoder(server,options){Geocoder.call(this,"Plat Number Geocoder",server,"platNumber","number",options)}PlatNumberGeocoder.prototype=new Geocoder();function PlatNameGeocoder(server,options){Geocoder.call(this,"Plat Name Geocoder",server,"platName","name",options)}PlatNameGeocoder.prototype=new Geocoder();function RtsqGeocoder(server,options){Geocoder.call(this,"RTSQ Geocoder",server,"rtsq","rtsq",options)}RtsqGeocoder.prototype=new Geocoder();function SchoolGeocoder(server,options){Geocoder.call(this,"School Geocoder",server,"school","name",options)}SchoolGeocoder.prototype=new Geocoder();function StreetGeocoder(server,options){Geocoder.call(this,"Street Geocoder",server,"street","street",options)}StreetGeocoder.prototype=new Geocoder();function ZipCodeGeocoder(server,options){Geocoder.call(this,"Zip Code Geocoder",server,"zipCode","zipCode",options)}ZipCodeGeocoder.prototype=new Geocoder();function WAStatePlaneSouthGeocoder(server,options){Geocoder.call(this,"WA State Plane South Geocoder",server,"waStatePlaneSouth","coord",options)}WAStatePlaneSouthGeocoder.prototype=new Geocoder();function UTMGeocoder(server,options){Geocoder.call(this,"UTM Geocoder",server,"utm","coord",options)}UTMGeocoder.prototype=new Geocoder();function LatitudeLongitudeDecimalDegreesGeocoder(server,options){Geocoder.call(this,"Lat/Long DD Geocoder",server,"latitudeLongitude/dd","coord",options)}LatitudeLongitudeDecimalDegreesGeocoder.prototype=new Geocoder();function LatitudeLongitudeDegreesMinutesSecondsGeocoder(server,options){Geocoder.call(this,"Lat/Long DMS Geocoder",server,"latitudeLongitude/dms","coord",options)}LatitudeLongitudeDegreesMinutesSecondsGeocoder.prototype=new Geocoder();function GeocodeResultTable(element){this.handle=function(geocodeResults){var table="<table class='geocodeResultTable' cellPadding='5' cellSpacing='0' width='100%'>";table+="<tr><thead><tr><td>Value</td><td>x</td><td>y</td><td>Select</td></tr></thead>";table+="<tbody>";for(var i in geocodeResults){table+="<tr>";table+="<td>"+geocodeResults[i].value+"</td>";table+="<td>"+geocodeResults[i].x+"</td>";table+="<td>"+geocodeResults[i].y+"</td>";table+="<td><a href='javascript:selectGeocodeResult("+geocodeResults[i].getLinkStr()+")'>Select</a></td>";table+="</tr>"}table+="</tbody>";table+="</table>";jQuery(element).html(table)}}function GeocodeResultList(element){this.handle=function(geocodeResults){var list="<ul class='geocodeResultList'>";var fmt=function(num,numberOfDecimals){var str=num.toString();var i=str.indexOf(".");if(i>-1){return str.substring(0,i+1+numberOfDecimals)}return str};for(var i in geocodeResults){list+="<li>";list+="<span style='margin-right:4px; font-weight:bold;'>"+geocodeResults[i].value+"</span>";list+="<span style='margin-right:8px; font-style:italic;'>"+fmt(geocodeResults[i].x,2)+","+fmt(geocodeResults[i].y,2)+"</span>";list+="<span><a href='javascript:selectGeocodeResult("+geocodeResults[i].getLinkStr()+")'>Select</a></span>";list+="</li>"}jQuery(element).html(list)}}function GeocodeResultSelect(element){this.handle=function(geocodeResults){var options="<option value='' selected='true'>Found "+geocodeResults.length+" results!</option>";for(var i in geocodeResults){options+="<option value='"+geocodeResults[i].getExtent()+"'>"+geocodeResults[i].value+"</option>"}jQuery(element).html(options)}}function Identifier(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}Identifier.prototype.identify=function(x,y,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/identify";url=url+"?x="+escape(x);url=url+"&y="+escape(y);url=url+"&source="+escape(source);url=url+"&category="+escape(category);url=url+"&layerName="+escape(layerName);url=url+"&layerFileName="+escape(layerFileName);url=url+"&fields="+escape(fields);url=url+"&inlcudeGeometry="+escape(inlcudeGeometry);if(this.apiKey!=null){url+="&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToMapFeatures(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};if(error==undefined){error=function(err){alert("The Identify Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function Jurisdiction(){this.zipCode="";this.city=""}Jurisdiction.prototype.toString=function(){return this.zipCode+" "+this.city};function convertJsonToJurisdiction(response){var jurisdiction=new Jurisdiction();jurisdiction.zipCode=response.zipCode;jurisdiction.city=response.city;return jurisdiction}function JurisdictionIdentifier(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}JurisdictionIdentifier.prototype.identify=function(x,y,address,success,error){var url="http://"+this.server+"/GIS/services/json/jurisdiction/identify";url=url+"?x="+escape(x);url=url+"&y="+escape(y);url=url+"&address="+escape(address);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){var jurisdiction=convertJsonToJurisdiction(response);if(jQuery.isFunction(success)){success(jurisdiction)}else{success.handle(jurisdiction)}};if(error==undefined){error=function(err){alert("The Buffer Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function JurisdictionIdentifyDivHandler(element){this.element=element;this.handle=function(jurisdiction){var div="<div>"+jurisdiction+"</div>";jQuery(this.element).html(div)}}function MapFeature(){this.geometry="";this.envelope="";this.attributes=new Array()}MapFeature.prototype.toString=function(){return this.attributes.toString()};function Attribute(){this.field="";this.value=""}Attribute.prototype.toString=function(){return this.field+" = "+this.value};function convertJsonToMapFeatures(response){var mapFeatures=new Array();for(var i=0;i<response.length;i++){var mapFeature=new MapFeature();mapFeature.geometry=response[i].geometry;mapFeature.envelope=response[i].envelope;var responseAttributes=response[i].attributes;var responseAttributeNames=response[i].attributeNames;for(var k=0;k<responseAttributeNames.length;k++){var attribute=new Attribute();attribute.field=responseAttributeNames[k];attribute.value=responseAttributes[responseAttributeNames[k]];mapFeature.attributes[k]=attribute}mapFeatures[i]=mapFeature}return mapFeatures}function MapFeatureResultHandlerTable(element){this.handle=function(mapFeatures){var table="";for(var i in mapFeatures){table+="<table class='mapFeatureResultTable' cellPadding='5' cellSpacing='0' width='100%'>";table+="<thead><tr><td>Field</td><td>Value</td></tr></thead>";table+="<tbody>";for(var j in mapFeatures[i].attributes){if(mapFeatures[i].attributes[j].field!="#SHAPE#"){table+="<tr>";table+="<td>"+mapFeatures[i].attributes[j].field+"</td>";table+="<td>"+mapFeatures[i].attributes[j].value+"</td>";table+="</tr>"}}table+="</tbody>";table+="<tfoot><tr><td colspan='2'></td></tr></tfoot>";table+="</table>"}jQuery(element).html(table)}}function MetaData(){this.baseUrl=""}MetaData.prototype.toString=function(){return"Pierce County GIS MetaData from "+this.baseUrl};MetaData.prototype.getUrl=function(source,category,layer,layerFile){var url=this.baseUrl;var parameterAdded=false;if(source!=null&&source!=""){if(!parameterAdded){url+="?";parameterAdded=true}else{url+="&"}url+="source="+source}if(category!=null&&category!=""){if(!parameterAdded){url+="?";parameterAdded=true}else{url+="&"}url+="category="+category}if(layer!=null&&layer!=""){if(!parameterAdded){url+="?";parameterAdded=true}else{url+="&"}url+="layer="+layer}if(layerFile!=null&&layerFile!=""){if(!parameterAdded){url+="?";parameterAdded=true}else{url+="&"}url+="layerFile="+layerFile}return url};function MilePostIdentifier(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}MilePostIdentifier.prototype.identify=function(x,y,distance,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/milePost/identify";url=url+"?x="+escape(x);url=url+"&y="+escape(y);url=url+"&distance="+escape(distance);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToMapFeatures(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};var responseFailed=function(err){alert("The Identify Request Failed! "+err)};if(error==undefined){error=function(err){alert("The Buffer Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function MultiGeocoder(geocoders,geocoderHandler,selectControl){if(geocoders){this.geocoders=geocoders}else{this.geocoders=[]}this.geocoderHandler=geocoderHandler;this.selectControl=selectControl}MultiGeocoder.prototype.addGeocoder=function(geocoder){this.geocoders.push(geocoder)};MultiGeocoder.prototype.setGeocoderHandler=function(geocoderHandler){this.geocoderHandler=geocoderHandler};MultiGeocoder.prototype.setSelectControl=function(selectControl){this.selectControl=selectControl};MultiGeocoder.prototype.geocode=function(value){var geocoderIndex=this.selectControl.value;this.geocoders[geocoderIndex].geocode(value,this.geocoderHandler)};MultiGeocoder.prototype.load=function(selectControl){for(i=0;i<this.geocoders.length;i++){this.selectControl.options[i]=new Option(this.geocoders[i].name,i)}};function OpenAt(){this.name="";this.description="";this.title="";this.toEpsg="";this.type="";this.thumbnail="";this.openAtString=""}OpenAt.prototype.toString=function(){return this.name};function OpenAtFactory(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}this.image=null}OpenAtFactory.prototype.getByName=function(name,minX,minY,maxX,maxY,fromEpsg,data,success,error){this.get(name,null,null,minX,minY,maxX,maxY,fromEpsg,data,success,error)};OpenAtFactory.prototype.getByType=function(type,minX,minY,maxX,maxY,fromEpsg,data,success,error){this.get(null,type,null,minX,minY,maxX,maxY,fromEpsg,data,success,error)};OpenAtFactory.prototype.getByTypes=function(types,minX,minY,maxX,maxY,fromEpsg,data,success,error){this.get(null,null,types,minX,minY,maxX,maxY,fromEpsg,data,success,error)};OpenAtFactory.prototype.get=function(name,type,types,minX,minY,maxX,maxY,fromEpsg,data,success,error){var openAts=new Array();var url="http://"+this.server+"/GIS/services/json/openAt?";if(name!=null){url=url+"name="+escape(name)}else{if(type!=null){url=url+"type="+escape(type)}else{if(types!=null){url=url+"types="+escape(types)}}}url=url+"&minX="+minX+"&minY="+minY+"&maxX="+maxX+"&maxY="+maxY+"&fromEpsg="+escape(fromEpsg);url=url+"&image="+escape(this.image);for(var i in data){url=url+"&"+i+"="+escape(data[i])}if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotOpenAtResponse=function(openAtResponse){for(var i=0;i<openAtResponse.length;i++){openAt=new OpenAt();openAt.name=openAtResponse[i].name;openAt.description=openAtResponse[i].description;openAt.title=openAtResponse[i].title;openAt.toEpsg=openAtResponse[i].toEpsg;openAt.type=openAtResponse[i].type;openAt.thumbnail=openAtResponse[i].thumbnail;openAt.openAtString=openAtResponse[i].openAtString;openAts[i]=openAt}if(jQuery.isFunction(success)){success(openAts)}else{success.handle(openAts)}};if(error==undefined){error=function(err){alert("The Open @ Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotOpenAtResponse,error:error})};function OpenAtTableHandler(element){this.element=element;this.handle=function(openAts){var previousType=null;var table="<table class='openAtResultTable' cellpadding='5' cellspacing='0' width='100%'>";table+="<thead><tr><td>Name</td><td>Open @</td</tr></thead>";table+="<tbody>";for(var i in openAts){var openAt=openAts[i];if(previousType==null||previousType!=openAt.type){table+="<tr><td colspan='2' class='typeHeader'>"+openAt.type+"</td></tr>"}table+="<tr>";table+="<td style='text-align:left; vertical-align:top;'><div style='font-weight:bold;'>"+openAt.name+"</div>";table+="<div style='font-style:italic;'>"+openAt.description+"</div></td>";if(openAt.name=="Google Earth"||openAt.name=="Google Earth Image Overlay"){table+="<td>";table+="<a name='"+openAt.name+"'/>";table+="<form name='"+openAt.name+" Form'><input type='hidden' name='value' value='"+escape(openAt.openAtString)+"'/></form>";table+="<a href='#"+openAt.name+"' onclick='document.location.href=\"/GIS/openAt.htm?kml=unescape(document.forms[\""+openAt.name+' Form"].value.value);"\'';table+="<img src='"+openAt.thumbnail+"' border='0' alt='"+openAt.name+"' title='"+openAt.name+"'/></a>"}else{if(openAt.name=="NASA World Wind"){table+="<td>";table+="<a name='"+openAt.name+"'/>";table+="<a href='#"+openAt.name+"' onclick='document.location.href=\""+openAt.openAtString+"\"'>";table+="<img src='"+openAt.thumbnail+"' border='0' alt='"+openAt.name+"' title='"+openAt.name+"'/></a>"}else{table+="<td><a name='"+openAt.name+"' href='"+openAt.openAtString+"' onclick='window.open(\""+openAt.openAtString+"\"); return false;'>";table+="<img src='"+openAt.thumbnail+"' border='0' alt='"+openAt.name+"' title='"+openAt.name+"'/></a>"}}table+="</tr>";previousType=openAt.type}table+="</tbody>";table+="<tfoot><tr><td colspan='2'>"+openAts.length+" Open @ Result(s)</td</tr></tfoot>";table+="</table>";jQuery(this.element).html(table)}}function OpenAtListHandler(element){this.element=element;this.handle=function(openAts){var previousType=null;var div="<div>";var len=openAts.length-1;for(var i in openAts){var openAt=openAts[i];if(previousType==null||previousType!=openAt.type){if(i>0){div+="</ul>"}div+="<div class='openAtType'>"+openAt.type+"</div>";div+="<ul>"}div+="<li>";div+="<a href='"+openAt.openAtString+"' onclick='window.open(\""+openAt.openAtString+"\"); return false;'>";div+="<img src='"+openAt.thumbnail+"' border='0' alt='"+openAt.name+"' title='"+openAt.name+"'/>";div+="</a>";div+="<div class='openAtName'>"+openAt.name+"</div>";div+="<div class='openAtDescription'>"+openAt.description+"</div>";div+="</li>";previousType=openAt.type}div+="</ul>";div+="</div>";jQuery(this.element).html(div)}}if(typeof PCGIS=="undefined"){var PCGIS={}}PCGIS.GeocodeResult=function(){return{value:"",x:0,y:0,minX:0,minY:0,maxX:0,maxY:0,toString:function(){return this.value+" at "+this.x+","+this.y},getExtent:function(){return this.minX+","+this.minY+","+this.maxX+","+this.maxY},getLinkStr:function(){return'"'+this.value+'", '+this.x+","+this.y+","+this.getExtent()}}};PCGIS.Geocoder=function(){return{}};function Profile(){this.profilePoints=new Array();this.length=0;this.maxElevation=0;this.minElevation=0}Profile.prototype.toString=function(){return this.length+"ft long from "+this.minElevation+" to "+this.maxElevation+" with "+this.profilePoints.length+" profile points"};function ProfilePoint(){this.x=0;this.y=0;this.distance=0;this.elevation=0}ProfilePoint.prototype.toString=function(){return this.x+","+this.y+","+this.elevation+" at "+this.distance};function convertJsonToProfile(response){var profile=new Profile();var profilePoints=response.profilePoints;for(var i=0;i<profilePoints.length;i++){var profilePoint=new ProfilePoint();profilePoint.distance=profilePoints[i].distance;profilePoint.x=profilePoints[i].x;profilePoint.y=profilePoints[i].y;profilePoint.elevation=profilePoints[i].elevation;profile.profilePoints[i]=profilePoint}profile.length=response.length;profile.maxElevation=response.maxElevation;profile.minElevation=response.minElevation;return profile}function Profiler(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}Profiler.prototype.createProfile=function(wktLine,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/profile";url=url+"?wkt="+escape(wktLine);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToProfile(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};if(error==undefined){error=function(err){alert("The Profile Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};var EPGS_WGS_84="EPSG:4326";var EPGS_WA_STATE_PLANE_SOUTH="EPSG:2927";function GeoPoint(){this.x=0;this.y=0;this.epsg=""}GeoPoint.prototype.toString=function(){return this.x+","+this.y+" "+this.epsg};function Projector(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}Projector.prototype.projectWaStatePlaneSouthToWGS84=function(x,y,success,error){this.projectEpsg(x,y,EPGS_WA_STATE_PLANE_SOUTH,EPGS_WGS_84,success,error)};Projector.prototype.projectWGS84ToWaStatePlaneSouth=function(lon,lat,success,error){this.projectEpsg(lon,lat,EPGS_WGS_84,EPGS_WA_STATE_PLANE_SOUTH,success,error)};Projector.prototype.projectEpsg=function(x,y,fromEpsg,toEpsg,success,error){var url="http://"+this.server+"/GIS/services/json/epsg/project?x="+x+"&y="+y+"&fromEPSG="+fromEpsg+"&toEPSG="+toEpsg;if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){geoPoint=new GeoPoint();geoPoint.x=response.x.toFixed(4);geoPoint.y=response.y.toFixed(4);geoPoint.epsg=toEpsg;if(jQuery.isFunction(success)){success(geoPoint)}else{success.handle(geoPoint)}};if(error==undefined){error=function(err){alert("The Projection Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};function ProjectorDivHandler(element){this.element=element;this.handle=function(geoPoint){jQuery(this.element).html("<div>"+geoPoint+"</div>")}}function ReverseGeocoder(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}ReverseGeocoder.prototype.reverseGeocode=function(x,y,distance,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/reverseGeocode";url=url+"?x="+escape(x);url=url+"&y="+escape(y);url=url+"&distance="+escape(distance);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToMapFeatures(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};var responseFailed=function(err){alert("The Reverse Geocode Request Failed! "+err)};if(error==undefined){error=function(err){alert("The Buffer Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};var ServerLocal="localhost:8080";var ServerTest="whitneyDev.co.pierce.wa.us";var ServerIntranet="shasta5.co.pierce.wa.us";var ServerInternet="matterhorn9.co.pierce.wa.us";function SpatialQuery(server,options){this.server=server;if(options!=undefined){if(options.proxy!=undefined&&options.proxy!=null&&options.proxy!=""){this.proxy=options.proxy}if(options.apiKey!=undefined&&options.apiKey!=null&&options.apiKey!=""){this.apiKey=options.apiKey}}}SpatialQuery.prototype.performSpatialQuery=function(wktGeometry,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){this.perform(wktGeometry,null,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error)};SpatialQuery.prototype.performSpatialAttributeQuery=function(wktGeometry,where,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){this.perform(wktGeometry,where,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error)};SpatialQuery.prototype.performAttributeQuery=function(where,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){this.perform(null,where,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error)};SpatialQuery.prototype.perform=function(wktGeometry,where,source,category,layerName,layerFileName,fields,inlcudeGeometry,success,error){var mapFeatures=new Array();var url="http://"+this.server+"/GIS/services/json/spatialQuery";if(wktGeometry!=null&&wktGeometry!=""){url=url+"?wkt="+escape(wktGeometry)}if(where!=null&&where!=""){url=url+"&where="+escape(where)}url=url+"&source="+escape(source);url=url+"&category="+escape(category);url=url+"&layerName="+escape(layerName);url=url+"&layerFileName="+escape(layerFileName);url=url+"&fields="+escape(fields);url=url+"&inlcudeGeometry="+escape(inlcudeGeometry);if(this.apiKey!=null){url=url+"&apiKey="+escape(this.apiKey)}if(this.proxy!=null){url=this.proxy+"?path="+escape(url)}var gotResponse=function(response){mapFeatures=convertJsonToMapFeatures(response);if(jQuery.isFunction(success)){success(mapFeatures)}else{success.handle(mapFeatures)}};if(error==undefined){error=function(err){alert("The SpatialQuery Request Failed! "+err)}}jQuery.ajax({type:"POST",contentType:"application/json; charset-utf-8",data:"{}",url:url,dataType:"json",success:gotResponse,error:error})};