﻿if(!Array.indexOf){Array.prototype.indexOf=function(b){for(var a=0;a<this.length;a++){if(this[a]==b){return a}}}}google.load("earth","1");google.load("maps","2.99");var geocoder;var pi=Math.PI;var halfPI=Math.PI/2;var degPerRad=360/Math.PI/2;var meanEarthRadius=6371.009;var SqKm=meanEarthRadius*meanEarthRadius/degPerRad;var areaDataTable=null;var bReverseSorted=false;var areaType=["Square meter (m2)","Acre (ac)","Are (a)","Hectare (ha)","Rood (rd)","Square kilometer (km2)","Square foot (ft2)","Square mile (mi2)","Square yard (yd2)"];var areaFactor=[1,4046.856,100,10000,1011.71413184285,1000000,0.09290304,2589988,0.8361274];var distType=["Meter (m)","Foot (ft)","Kilometer (km)","Mile (mi)","Nautical Mile (nm)","Yard (yd)","Rod (rd)"];var distFactor=[1,0.3048,1000,1609.344,1852,0.9144,5.0292];var currentAreaFactor=areaType.indexOf("Hectare (ha)");var currentDistFactor=distType.indexOf("Meter (m)");var eCreateMeasureTool={None:0,PolyLine:1,Circle:2,Distance:3};var eDrawMode={StartNewPolygon:0,AddToPolygon:1};var ePolygonMode={Drawing:0,Editing:1,Finished:2};var createMeasureTool=eCreateMeasureTool.None;var dragging=false;var dragged=false;var overmarker=false;var PolyLines=[];var currentPolygon=null;var sm_a=6378137;var sm_b=6356752.314;var sm_EccSquared=0.00669437999013;var UTMScaleFactor=0.9996;function degToRad(a){return(a/180*pi)}function radToDeg(a){return(a/pi*180)}function hav(a){return(1-Math.cos(a))/2}function deactivateAllPolygons(){if(PolyLines!==undefined){if(areaDataTable!==null){var b=areaDataTable.getSelectedRows()[0];if(b!==undefined){areaDataTable.unselectRow(b)}}for(var a=0;a<PolyLines.length;a++){if(PolyLines[a]!==null&&PolyLines[a].polygonMode!==ePolygonMode.Finished){PolyLines[a].polygonMode=ePolygonMode.Finished;drawPolygon(PolyLines[a])}}}currentPolygon=null}function measureTypeSelect(c){var b=YAHOO.widget.Button.getButton("butArea");var a=YAHOO.widget.Button.getButton("butDistance");deactivateAllPolygons();switch(c){case"polygon":b.set("label","STOP New Area Measurement");a.set("label","Start New Distance Measurement");createMeasureTool=eCreateMeasureTool.PolyLine;break;case"line":b.set("label","Start New Area Measurement");a.set("label","STOP New Distance Measurement");createMeasureTool=eCreateMeasureTool.Distance;break;default:b.set("label","Start New Area Measurement");a.set("label","Start New Distance Measurement");createMeasureTool=eCreateMeasureTool.None;break}}function el(a){return document.getElementById(a)}function showVersions(d){var c=d.getPluginVersion();var e=d.getEarthVersion();var b;var a;if(c!==e){a="#FF0000";b="Plugin v.: "+c+" !== Earth v.:"+e}else{a="#A0A0A0";b="Version: "+c}var f=el("version_info");f.style.color=a;f.innerHTML=b}function showTerrain(a){ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN,a)}function showRoads(a){ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS,a)}function showBuildings(a){ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS,a)}function showBorders(a){ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS,a)}function updateOptions(){var a=ge.getOptions();var b=document.options;a.setStatusBarVisibility(b.statusbar.checked);a.setGridVisibility(b.grid.checked);a.setOverviewMapVisibility(b.overview.checked);a.setScaleLegendVisibility(b.scaleLegend.checked);a.setAtmosphereVisibility(b.atmosphere.checked);if(b.nav.checked){ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO)}else{ge.getNavigationControl().setVisibility(ge.VISIBILITY_HIDE)}showTerrain(b.showTerrain.checked);showRoads(b.showRoads.checked);showBuildings(b.showBuildings.checked);showBorders(b.showBorders.checked)}function mouseDownOnGlobe(a){if(dragging){return}if(a.getButton()===0&&createMeasureTool!==eCreateMeasureTool.None){createPlacemark(a)}}function dblClickOnGlobe(a){if(createMeasureTool!==eCreateMeasureTool.None){a.preventDefault();PolyLines[currentPolygon].polygonMode=ePolygonMode.Editing;drawPolygon(PolyLines[currentPolygon]);measureTypeSelect("none")}}movePMLoc=function(a){if(dragging){dragged=true;for(var b=0;b<PolyLines[currentPolygon].pointArray.length;b++){if(PolyLines[currentPolygon].pointArray[b].placemark.active){a.preventDefault();PolyLines[currentPolygon].movePoint(b,a.getLatitude(),a.getLongitude());drawPolygon(PolyLines[currentPolygon])}}}};function submitLocation(){var a=document.getElementById("address").value;geocoder.getLatLng(a,function(b){if(b&&ge!==null){var c=ge.createLookAt("");c.set(b.y,b.x,100,ge.ALTITUDE_RELATIVE_TO_GROUND,0,0,4000);ge.getView().setAbstractView(c)}})}Number.prototype.fixLon=function(){var a=this;while(a<-180){a+=360}while(a>180){a-=360}return parseFloat(a)};function distance(d,b,c,a){d=degToRad(d);b=degToRad(b);c=degToRad(c);a=degToRad(a);return Math.acos(Math.sin(d)*Math.sin(c)+Math.cos(d)*Math.cos(c)*Math.cos(a-b))*6371}function bearing(d,b,c,a){d=degToRad(d);b=degToRad(b);c=degToRad(c);a=degToRad(a);return Math.atan2(Math.sin(a-b)*Math.cos(c),Math.cos(d)*Math.sin(c)-Math.sin(d)*Math.cos(c)*Math.cos(a-b))}function destination(e,b,f,d){e=degToRad(e);b=degToRad(b);var c=Math.asin(Math.sin(e)*Math.cos(f/6371)+Math.cos(e)*Math.sin(f/6371)*Math.cos(d));var a=b+Math.atan2(Math.sin(d)*Math.sin(f/6371)*Math.cos(e),Math.cos(f/6371)-Math.sin(e)*Math.sin(c));return{y:180*c/pi,x:180*a/pi}}function destinationr(e,b,f,d){var c=Math.asin(Math.sin(e)*Math.cos(f/6371)+Math.cos(e)*Math.sin(f/6371)*Math.cos(d));var a=b+Math.atan2(Math.sin(d)*Math.sin(f/6371)*Math.cos(e),Math.cos(f/6371)-Math.sin(e)*Math.sin(c));return[c,a]}function points2Bearing(b,a,e,d){var c;var f;if(e>b){f=(d-a)/(e-b);c=90-radToDeg(Math.atan(f))}else{if(e<b){f=(d-a)/(e-b);c=270-radToDeg(Math.atan(f))}else{if(d>a){c=0}else{if(d<a){c=180}else{c=0}}}}return c}function bearingShift(c,b){var a=b-c;if(a<=-180){a=(b+360)-c}else{if(a>=180){a=(b-360)-c}}return a}var pointId=0;function MovablePoint(e,f,a){this.id=pointId++;this.latitude=e;this.longitude=f;var c=new PM(e,f,"ffff0000");c.id=this.id.toString();this.placemark=c;var d=[2];var b=latLonToUTMXY(degToRad(e),degToRad(f),a,d);if(b!==a){alert("something wrong with the latLonToUTMXY computation - "+b+" !== "+a)}this.utmX=d[0];this.utmY=d[1];this.zone=a}MovablePoint.prototype.updateUtm=function(d,e,a){var c=[2];var b=latLonToUTMXY(degToRad(d),degToRad(e),a,c);if(b!==a){alert("something wrong with the latLonToUTMXY computation - "+b+" !== "+a)}this.utmX=c[0];this.utmY=c[1];this.zone=a};MovablePoint.prototype.toString=function(){return this.latitude+","+this.longitude};function balloonContent(a){return"<nobr><b>Lat:</b> "+a.latitude.toFixed(6)+" <b>Lon:</b> "+a.longitude.toFixed(6)+"</nobr><br /><nobr><b>UTM X:</b> "+a.utmX.toFixed(2)+" <b>Y:</b> "+a.utmY.toFixed(2)+'</nobr><br />[<a href="#" onclick="DeletePoint(\''+a.id+'\');">Delete Point</a>] [<a href="#" onclick="InsertPoint(\''+a.id+"');\">Add Point</a>]"}function indexOfPointId(b,c){for(var a=0;a<b.pointArray.length;a++){if(b.pointArray[a].placemark.id===c){return a}}return null}function PolyLine(){this.closed=true;this.name="";this.centerPoint=null;this.centerPointPlacemarker=null;this.boundaryPlacemarker=null;this.pointArray=[];this.active=false;this.uTMZone=null;this.polygonMode=ePolygonMode.Drawing;this.drawMode=eDrawMode.StartNewPolygon}PolyLine.prototype.addPoint=function(c,d,a){if(this.uTMZone===null){this.uTMZone=Math.floor((d+180)/6)+1}var b=new MovablePoint(c,d,this.uTMZone);if(a<0||a>this.pointArray.length-1){this.pointArray.push(b)}else{this.pointArray.splice(a,0,b)}this.centerPoint=this.getCenter()};PolyLine.prototype.deletePoint=function(a){this.pointArray.splice(a,1);this.centerPoint=this.getCenter()};PolyLine.prototype.movePoint=function(a,c,e){var d=this.pointArray[a];var f=d.placemark;d.latitude=c;d.longitude=e;f.setLoc(c,e);d.updateUtm(c,e,d.zone);this.centerPoint=this.getCenter();var b=ge.getBalloon();if(b){b.setContentString(balloonContent(mp))}};PolyLine.prototype.GetBoundingBox=function(){var d;var a;var e;var c;for(var b=0;b<this.pointArray.length;b++){if(b===0){d=this.pointArray[b].latitude;a=this.pointArray[b].latitude;e=this.pointArray[b].longitude;c=this.pointArray[b].longitude}else{if(this.pointArray[b].latitude<d){d=this.pointArray[b].latitude}if(this.pointArray[b].latitude>a){a=this.pointArray[b].latitude}if(this.pointArray[b].longitude<e){e=this.pointArray[b].longitude}if(this.pointArray[b].longitude>c){c=this.pointArray[b].longitude}}}return{x1:e,y1:d,x2:c,y2:a}};PolyLine.prototype.getCenter=function(){var d=this.GetBoundingBox();var f=268435456;var b=f/pi;function c(h){return Math.round(f+b*h*pi/180)}function a(h){return Math.round(f-b*Math.log((1+Math.sin(h*pi/180))/(1-Math.sin(h*pi/180)))/2)}function g(h){return((Math.round(h)-f)/b)*180/pi}function e(h){return(pi/2-2*Math.atan(Math.exp((Math.round(h)-f)/b)))*180/pi}return{x:g((c(d.x1)+c(d.x2))/2),y:e((a(d.y1)+a(d.y2))/2)}};function createPlacemark(a){if(overmarker){return}if(currentPolygon===null){PolyLines.push(new PolyLine());currentPolygon=PolyLines.length-1;if(areaDataTable===null){initializePolyInfoDataTable()}addToInfoTable(currentPolygon)}if(PolyLines[currentPolygon].drawMode===eDrawMode.StartNewPolygon){if(createMeasureTool===eCreateMeasureTool.Distance){PolyLines[currentPolygon].closed=false}PolyLines[currentPolygon].drawMode=eDrawMode.AddToPolygon;PolyLines[currentPolygon].name=PolyLines.length-1;PolyLines[currentPolygon].pointArray=[];PolyLines[currentPolygon].active=true}PolyLines[currentPolygon].addPoint(a.getLatitude(),a.getLongitude(),-1);drawPolygon(PolyLines[currentPolygon])}function initializeUnitsMenu(){function m(q,p,o){var j=o.cfg.getProperty("text");if(currentAreaFactor!==areaType.indexOf(j)){currentAreaFactor=areaType.indexOf(j);c.set("label",j);for(var r=0;r<PolyLines.length;r++){updateInfoBox(PolyLines[r])}}}function e(q,p,o){var j=o.cfg.getProperty("text");if(currentDistFactor!==distType.indexOf(j)){currentDistFactor=distType.indexOf(j);l.set("label",j);for(var r=0;r<PolyLines.length;r++){updateInfoBox(PolyLines[r])}}}var h=[];for(var f=0;f<areaType.length;f++){var n={};n.text=areaType[f];n.valueOf=f;n.onclick={fn:m};h.push(n)}var g=[];for(var d=0;d<distType.length;d++){var k={};k.text=distType[d];k.valueOf=d;k.onclick={fn:e};g.push(k)}var b=areaType[currentAreaFactor];var c=new YAHOO.widget.Button({type:"menu",label:b,name:"menuAreaUnits",menu:h,container:"fsUnits"});var a=distType[currentDistFactor];var l=new YAHOO.widget.Button({type:"menu",label:a,name:"menuDistUnits",menu:g,container:"fsUnits"})}function initializePolyInfoDataTable(){var a=false;var f=[{key:"area",label:"#",resizeable:false,sortable:true},{key:"attr",label:"Measurements",resizeable:true}];var e=new YAHOO.util.DataSource([]);e.responseType=YAHOO.util.DataSource.TYPE_JSARRAY;e.responseSchema={fields:["area","attr"]};areaDataTable=new YAHOO.widget.DataTable("divPolygons",f,e,{selectionMode:"single"});var b=function(g){bReverseSorted=(g.dir===YAHOO.widget.DataTable.CLASS_DESC)};areaDataTable.subscribe("columnSortEvent",b);areaDataTable.subscribe("rowAddEvent",function(g){PolyLines[currentPolygon].infoRecord=g.record;PolyLines[currentPolygon].infoRecordId=g.record.getId()});areaDataTable.subscribe("rowSelectEvent",function(h){if(a){areaDataTable.unselectRow(h.record);a=false}else{currentPolygon=h.record.getData("area");for(var g=0;g<PolyLines.length;g++){var j=PolyLines[g];if(j!==null){if(g===currentPolygon&&j.polygonMode!==ePolygonMode.Editing){j.polygonMode=ePolygonMode.Editing;drawPolygon(j)}else{if(j.polygonMode!==ePolygonMode.Finished){j.polygonMode=ePolygonMode.Finished;drawPolygon(j)}}}}}});areaDataTable.subscribe("rowUnselectEvent",function(g){});areaDataTable.subscribe("rowClickEvent",function(g){var h=areaDataTable.getSelectedRows()[0];if(h!==undefined&&h===g.target.id){a=true}measureTypeSelect("none")});areaDataTable.subscribe("rowDblclickEvent",function(h){var m=h.target;var g=areaDataTable.getRecord(m);var l=g.getData("area");var j=PolyLines[l];if(j!==null){var k=j.GetBoundingBox();var i=createCameraFromRectangle(k.y1,k.x1,k.y2,k.x2);ge.getView().setAbstractView(i)}});areaDataTable.subscribe("rowMouseoverEvent",areaDataTable.onEventHighlightRow);areaDataTable.subscribe("rowMouseoutEvent",areaDataTable.onEventUnhighlightRow);areaDataTable.subscribe("rowClickEvent",areaDataTable.onEventSelectRow);var d=function(q,p,l){var m=p[1];if(m){var k=this.contextEventTarget;k=l.getTrEl(k);if(k){var r=l.getRecord(k);var j=r.getData("area");switch(m.index){case 0:if(confirm("Are you sure you want to delete #"+j+" ?")){deactivateAllPolygons();var h=PolyLines[j];h.pointArray=[];drawPolygon(h);h=null;l.deleteRow(k)}break;case 1:var h=PolyLines[j];var o="latitude,longitude,altitude,UTM X,UTM Y,Zone\r";for(var n=0;n<h.pointArray.length;n++){var g=h.pointArray[n];o+=g.latitude+","+g.longitude+","+ge.getGlobe().getGroundAltitude(g.latitude,g.longitude).toFixed(2).toString()+","+g.utmX.toFixed(2).toString()+","+g.utmY.toFixed(2).toString()+","+g.zone+"\r"}alert(o);break;default:break}}}};var c=new YAHOO.widget.ContextMenu("mycontextmenu",{trigger:areaDataTable.getTbodyEl()});c.addItem("Delete Item");c.addItem("Show Data");c.render("divPolygons");c.clickEvent.subscribe(d,areaDataTable)}function addToInfoTable(b){if(bReverseSorted){areaDataTable.set("sortedBy",null)}var a={};a.area=b;a.attr="";areaDataTable.addRow(a)}function createCameraFromRectangle(e,l,d,g){var b=6378700;var m=30;var f=ge.createCamera("");f.setLatitude((e+d)/2);f.setLongitude((l+g)/2);f.setHeading(0);f.setTilt(0);var h=Math.max(e,d)-Math.min(e,d);var k=Math.max(l,g)-Math.min(l,g);var c=Math.max(h,k);c=c*Math.PI/180;var j=b*Math.tan(c/2);var i=2*j/(Math.tan(m*Math.PI/180));f.setAltitude(i);return f}function PM(g,b,a){var h=this;h.active=false;h.id="";h.placemark=ge.createPlacemark("");ge.getFeatures().appendChild(h.placemark);h.point=ge.createPoint("");var e=ge.createIcon("");e.setHref("http://pct-ag.com/geMenu/blacksquare.png");var d=ge.createStyle("");d.getIconStyle().setIcon(e);d.getIconStyle().setScale(0.5);d.getIconStyle().getHotSpot().setXUnits(ge.UNITS_FRACTION);d.getIconStyle().getHotSpot().setYUnits(ge.UNITS_FRACTION);d.getIconStyle().getHotSpot().setX(0.5);d.getIconStyle().getHotSpot().setY(0.5);var c=ge.createIcon("");c.setHref("http://pct-ag.com/geMenu/blacksquare.png");var i=ge.createStyle("");i.getIconStyle().setIcon(c);i.getIconStyle().setScale(0.5);i.getIconStyle().getHotSpot().setXUnits(ge.UNITS_FRACTION);i.getIconStyle().getHotSpot().setYUnits(ge.UNITS_FRACTION);i.getIconStyle().getHotSpot().setX(0.5);i.getIconStyle().getHotSpot().setY(0.5);var f=ge.createStyleMap("");f.setNormalStyle(d);f.setHighlightStyle(i);h.placemark.setStyleSelector(f);h.setLoc(g,b);google.earth.addEventListener(h.placemark,"mousedown",function(j){h.mousedown(j)});google.earth.addEventListener(h.placemark,"mouseup",function(j){h.mouseup(j)});google.earth.addEventListener(h.placemark,"click",function(j){h.clickEvent(j)});google.earth.addEventListener(h.placemark,"dblclick",function(j){h.dblclick(j)});google.earth.addEventListener(h.placemark,"mouseover",function(j){h.mouseover(true)});google.earth.addEventListener(h.placemark,"mouseout",function(j){h.mouseover(false)})}PM.prototype.setLoc=function(a,b){this.lat=degToRad(a);this.lon=degToRad(b);this.point.setLatLng(a,b.fixLon())};PM.prototype.mousedown=function(a){a.preventDefault();dragging=true;this.active=true};PM.prototype.mouseup=function(a){dragging=false;this.active=false};PM.prototype.dblclick=function(a){dragging=false;this.active=false};PM.prototype.clickEvent=function(a){if(!dragged){this.showBubble()}dragged=false};PM.prototype.mouseover=function(a){overmarker=a};PM.prototype.showBubble=function(){var c=indexOfPointId(PolyLines[currentPolygon],this.id);mp=PolyLines[currentPolygon].pointArray[c];var a=ge.createHtmlStringBalloon("");a.setMaxWidth(800);a.setFeature(this.placemark);a.setContentString(balloonContent(mp));ge.setBalloon(a)};function convertAreaUnits(a,c,b){return a*areaFactor[c]/areaFactor[b]}function convertDistUnits(a,c,b){return a*distFactor[c]/distFactor[b]}function DeletePoint(c){var a=indexOfPointId(PolyLines[currentPolygon],c);var b=PolyLines[currentPolygon].pointArray[a].placemark;if(b!==null){ge.getFeatures().removeChild(b.placemark)}PolyLines[currentPolygon].deletePoint(a);ge.setBalloon(null);drawPolygon(PolyLines[currentPolygon])}function InsertPoint(c){var a=PolyLines[currentPolygon];var g=indexOfPointId(a,c);var e={x:a.pointArray[g].longitude,y:a.pointArray[g].latitude};var d=g-1;if(g===0){d=a.pointArray.length-1}var i={x:a.pointArray[d].longitude,y:a.pointArray[d].latitude};var h=distance(e.y,e.x,i.y,i.x)/3;var f=bearing(e.y,e.x,i.y,i.x);var b=destination(e.y,e.x,h,f);a.addPoint(b.y,b.x,g);ge.setBalloon(null);drawPolygon(a)}var pathId=0;function drawPath(c,b,a){if(PolyLines[currentPolygon].boundaryPlacemarker!==null){ge.getFeatures().removeChild(PolyLines[currentPolygon].boundaryPlacemarker)}var f=ge.createLineString("");for(var d=0;d<b.length;d++){f.getCoordinates().pushLatLngAlt(b[d].latitude,b[d].longitude,0)}f.setTessellate(true);pathId++;var e=ge.createPlacemark(pathId.toString());e.setGeometry(f);PolyLines[currentPolygon].boundaryPlacemarker=e;ge.getFeatures().appendChild(e)}var polygonId=0;function drawPolygon(a){if(a.boundaryPlacemarker!==null){ge.getFeatures().removeChild(a.boundaryPlacemarker)}if(a.centerPointPlacemarker!==null){ge.getFeatures().removeChild(a.centerPointPlacemarker)}if(a.pointArray.length>0){var g=ge.createLineString("");for(var d=0;d<a.pointArray.length;d++){g.getCoordinates().pushLatLngAlt(a.pointArray[d].latitude,a.pointArray[d].longitude,0)}if(a.closed&&a.pointArray[0].latitude!==a.pointArray[a.pointArray.length-1].longitude&&a.pointArray[0].latitude!==a.pointArray[a.pointArray.length-1].longitude){g.getCoordinates().pushLatLngAlt(a.pointArray[0].latitude,a.pointArray[0].longitude,0)}g.setTessellate(true);polygonId++;var m=ge.createPlacemark("polyBdry"+polygonId.toString());m.setGeometry(g);a.boundaryPlacemarker=m;m.setStyleSelector(ge.createStyle(""));var e=m.getStyleSelector().getLineStyle();e.setWidth(e.getWidth()+2);switch(a.polygonMode){case ePolygonMode.Drawing:e.getColor().set("6600ffff");break;case ePolygonMode.Editing:e.getColor().set("66ff0000");break;case ePolygonMode.Finished:e.getColor().set("6600ff00");break}ge.getFeatures().appendChild(m);if(a.pointArray.length>2){var h=ge.createPlacemark("cent_"+polygonId.toString());if(a.closed){h.setName("Area #"+a.name)}else{h.setName("Line #"+a.name)}var l=ge.createPoint("");if(a.closed){var f=a.centerPoint;l.setLatitude(f.y);l.setLongitude(f.x)}else{l.setLatitude(a.pointArray[0].latitude);l.setLongitude(a.pointArray[0].longitude)}h.setGeometry(l);a.centerPointPlacemarker=h;ge.getFeatures().appendChild(h)}else{a.centerPointPlacemarker=null}if(a.polygonMode===ePolygonMode.Drawing||a.polygonMode===ePolygonMode.Editing){for(var c=0;c<a.pointArray.length;c++){a.pointArray[c].placemark.placemark.setName(c.toString());a.pointArray[c].placemark.placemark.setGeometry(a.pointArray[c].placemark.point)}}else{for(var b=0;b<a.pointArray.length;b++){a.pointArray[b].placemark.placemark.setGeometry(null)}}}updateInfoBox(a)}function updateInfoBox(a){if(a!==null){areaDataTable.updateCell(a.infoRecord,"attr",infoBoxContent(a))}}function infoBoxContent(b){var a="# Points: "+b.pointArray.length.toString()+"<br />";if(b.closed){a+="Area: "+convertAreaUnits(sphericalPolyArea(b.pointArray),areaType.indexOf("Square kilometer (km2)"),currentAreaFactor).toFixed(2).toString()+areaUnitsAbbrev(currentAreaFactor)+"<br />";a+="Perimeter: "}else{a+="Distance: "}a+=convertDistUnits(sphericalPolylineDist(b.pointArray,b.closed),distType.indexOf("Kilometer (km)"),currentDistFactor).toFixed(2).toString()+distUnitsAbbrev(currentDistFactor);return a}function areaUnitsAbbrev(a){return/\((.)*\)/i.exec(areaType[a])[0]}function distUnitsAbbrev(a){return/\((.)*\)/i.exec(distType[a])[0]}function iterateKml(d){if(d.getFeatures().hasChildNodes()){var b=d.getFeatures().getChildNodes();for(var c=0;c<b.getLength();c++){var a=b.item(c).getType();var e=b.item(c).getName();alert(a+"; "+e);switch(a){case"KmlLineString":alert(a+"; "+e+"; "+b.item(c).getID());break;case"KmlPlacemark":alert(a+"; "+e);break}iterateKml(eachSubNode)}}}function arcLengthOfMeridian(c){var e,d,b,h,g,f;var a;f=(sm_a-sm_b)/(sm_a+sm_b);e=((sm_a+sm_b)/2)*(1+(Math.pow(f,2)/4)+(Math.pow(f,4)/64));d=(-3*f/2)+(9*Math.pow(f,3)/16)+(-3*Math.pow(f,5)/32);b=(15*Math.pow(f,2)/16)+(-15*Math.pow(f,4)/32);h=(-35*Math.pow(f,3)/48)+(105*Math.pow(f,5)/256);g=(315*Math.pow(f,4)/512);a=e*(c+(d*Math.sin(2*c))+(b*Math.sin(4*c))+(h*Math.sin(6*c))+(g*Math.sin(8*c)));return a}function uTMCentralMeridian(a){var b;b=degToRad(-183+(a*6));return b}function footpointLatitude(f){var g,h,d,e,a,c,b;var i;b=(sm_a-sm_b)/(sm_a+sm_b);h=((sm_a+sm_b)/2)*(1+(Math.pow(b,2)/4)+(Math.pow(b,4)/64));g=f/h;d=(3*b/2)+(-27*Math.pow(b,3)/32)+(269*Math.pow(b,5)/512);e=(21*Math.pow(b,2)/16)+(-55*Math.pow(b,4)/32);a=(151*Math.pow(b,3)/96)+(-417*Math.pow(b,5)/128);c=(1097*Math.pow(b,4)/512);i=g+(d*Math.sin(2*g))+(e*Math.sin(4*g))+(a*Math.sin(6*g))+(c*Math.sin(8*g));return i}function mapLatLonToXY(n,k,c,r){var m,a,o,p,j,f;var i,g,e,d,b,q;var h;o=(Math.pow(sm_a,2)-Math.pow(sm_b,2))/Math.pow(sm_b,2);a=o*Math.pow(Math.cos(n),2);m=Math.pow(sm_a,2)/(sm_b*Math.sqrt(1+a));p=Math.tan(n);j=p*p;h=(j*j*j)-Math.pow(p,6);f=k-c;i=1-j+a;g=5-j+9*a+4*(a*a);e=5-18*j+(j*j)+14*a-58*j*a;d=61-58*j+(j*j)+270*a-330*j*a;b=61-479*j+179*(j*j)-(j*j*j);q=1385-3111*j+543*(j*j)-(j*j*j);r[0]=m*Math.cos(n)*f+(m/6*Math.pow(Math.cos(n),3)*i*Math.pow(f,3))+(m/120*Math.pow(Math.cos(n),5)*e*Math.pow(f,5))+(m/5040*Math.pow(Math.cos(n),7)*b*Math.pow(f,7));r[1]=arcLengthOfMeridian(n)+(p/2*m*Math.pow(Math.cos(n),2)*Math.pow(f,2))+(p/24*m*Math.pow(Math.cos(n),4)*g*Math.pow(f,4))+(p/720*m*Math.pow(Math.cos(n),6)*d*Math.pow(f,6))+(p/40320*m*Math.pow(Math.cos(n),8)*q*Math.pow(f,8));return}function mapXYToLatLon(k,j,b,n){var w,h,o,t,C,f,z,v,p;var d,u,i,a,r,e,A,l;var B,m,c,s,g,D,q;w=footpointLatitude(j);C=(Math.pow(sm_a,2)-Math.pow(sm_b,2))/Math.pow(sm_b,2);p=Math.cos(w);t=C*Math.pow(p,2);h=Math.pow(sm_a,2)/(sm_b*Math.sqrt(1+t));o=h;f=Math.tan(w);z=f*f;v=z*z;d=1/(o*p);o*=h;u=f/(2*o);o*=h;i=1/(6*o*p);o*=h;a=f/(24*o);o*=h;r=1/(120*o*p);o*=h;e=f/(720*o);o*=h;A=1/(5040*o*p);o*=h;l=f/(40320*o);B=-1-t;m=-1-2*z-t;c=5+3*z+6*t-6*z*t-3*(t*t)-9*z*(t*t);s=5+28*z+24*v+6*t+8*z*t;g=-61-90*z-45*v-107*t+162*z*t;D=-61-662*z-1320*v-720*(v*z);q=1385+3633*z+4095*v+1575*(v*z);n[0]=w+u*B*(k*k)+a*c*Math.pow(k,4)+e*g*Math.pow(k,6)+l*q*Math.pow(k,8);n[1]=b+d*k+i*m*Math.pow(k,3)+r*s*Math.pow(k,5)+A*D*Math.pow(k,7);return}function latLonToUTMXY(c,d,a,b){mapLatLonToXY(c,d,uTMCentralMeridian(a),b);b[0]=b[0]*UTMScaleFactor+500000;b[1]=b[1]*UTMScaleFactor;if(b[1]<0){b[1]=b[1]+10000000}return a}function UTMXYToLatLon(a,f,b,e,d){var c;a-=500000;a/=UTMScaleFactor;if(e){f-=10000000}f/=UTMScaleFactor;c=uTMCentralMeridian(b);mapXYToLatLon(a,f,c,d);return}function CartesianPolyArea(g){var a,j;var h=g.pointArray;var f=0;if(h.length>2){var e=0;for(var d=0;d<h.length;d++){a=h[d];if(d===h.length-1){j=h[0]}else{j=h[d+1]}e+=(a.utmX*j.utmY-j.utmX*a.utmY)}f=e/2}return Math.abs(f)}function sphericalPolyArea(a){if(a.length<3){return 0}else{var c=[];for(var b=0;b<a.length;b++){c[b]={x:a[b].longitude/degPerRad,y:a[b].latitude/degPerRad}}return SqKm*sphericalPolyUnitArea(c)}}function sphericalPolyUnitArea(q){var p,o;var g,f,i,h,d,b,l,j,e,c,a,k,m,n;m=0;for(p=0;p<q.length;p++){o=p+1;if(p===0){g=q[p].x;i=q[p].y;f=q[p+1].x;h=q[p+1].y;d=Math.cos(i);b=Math.cos(h)}else{o=(p+1)%(q.length);g=f;i=h;f=q[o].x;h=q[o].y;d=b;b=Math.cos(h)}if(g!=f){l=hav(h-i)+d*b*hav(f-g);e=2*Math.asin(Math.sqrt(l));c=halfPI-h;a=halfPI-i;k=0.5*(e+c+a);j=Math.tan(k/2)*Math.tan((k-e)/2)*Math.tan((k-c)/2)*Math.tan((k-a)/2);n=Math.abs(4*Math.atan(Math.sqrt(Math.abs(j))))*degPerRad;if(f<g){n=-1*n}m=m+n}}return Math.abs(m)}function sphericalPolylineDist(a,d){if(a.length<2){return 0}else{var c=0;for(var b=0;b<a.length-1;b++){c+=distance(a[b].latitude,a[b].longitude,a[b+1].latitude,a[b+1].longitude)}if(d){c+=distance(a[a.length-1].latitude,a[a.length-1].longitude,a[0].latitude,a[0].longitude)}return c}}YAHOO.util.Event.onContentReady("buttonsfrommarkup",function(){function b(f){var e=YAHOO.widget.Button.getButton("butArea");var d=YAHOO.widget.Button.getButton("butDistance");switch(this.get("name")){case"polygon":if(e.get("label")==="STOP New Area Measurement"){measureTypeSelect("none")}else{measureTypeSelect("polygon")}break;case"line":if(d.get("label")==="STOP New Distance Measurement"){measureTypeSelect("none")}else{measureTypeSelect("line")}break;default:measureTypeSelect("none");break}}var a=new YAHOO.widget.Button("butArea");var c=new YAHOO.widget.Button("butDistance");a.on("click",b);c.on("click",b);initializeUnitsMenu()});