﻿var areaTrigger = 0;
var areaCollection = null;
var areaObj = null;

function showDistance()
{
    var map = getMap();
    map.viewDistance("M");
}

function getArea()
{
    try
    {
        var map = getMap();
        top.mapFrame.areaTrigger = 1;
        top.mapFrame.onSelectionChanged(map);
        map.digitizePolygon(); 
    }
    catch(Error)
    {
        try
        {
            var map = getMap();
            top.mapFrame.map.areaTrigger = 1;
            top.mapFrame.map.onSelectionChanged(map);
            map.digitizePolygon(); 
        }
        catch(Error)
        {
            alert("Error");
        }
    } 	
}

function calculateAreaFromPolygon(map, numPoints, points)
{
    // Sets default variables as the polygon was created for the area function
	var theColor=4;
	var theLineType=1;
	var theThickness=1;
	var layerName = "Area"
	
    var formText = "redline object";
    // create redline layer, or get it if it already exists
    var myLayer = map.getMapLayer(layerName);
    if (myLayer == null)
    {
        myLayer = map.createLayer("redline", layerName);
    }
	var redSetup = getMap().getRedlineSetup();
	var edgeAtt = redSetup.getEdgeAttr();
	// Set the Edge attributes (can also add fill attributes for the polygon)...
	edgeAtt.setColor(theColor);
	edgeAtt.setThickness(theThickness);
	edgeAtt.setStyle(theLineType);
	
	// The area polygon is created with only one polygon in the collection
	areaCollection = map.createObject("MGCollection");
    areaCollection.removeAll();
	areaObj = myLayer.createMapObject("","","");
	areaCollection.add(areaObj);
	var area_vertices = map.createObject("mgcollection");
	area_vertices.add(numPoints);
	areaObj.addPolygonPrimitive(points, area_vertices, false);
	map.getSelection().addObjectsEx(areaCollection, false);
	var polyArea = map.getSelection().getMapObjectsEx(null).item(0).getArea();
            			
	var displayUnits = map.getDisplayUnits();
            			
	// Calculates the area of the drawn polygon.
	// ***** POLYAREA is always in square meters because of the Mapping Coordinate System we use in the MWF (lat/long)
	if(displayUnits == 'KM')
	{					
	    alert('The area is ' + (Math.round(polyArea/10000)/100) + ' km²');
		getArea();
	}
	else if(displayUnits == 'M')
	{
		alert('The area is ' + (Math.round(polyArea*100)/100) + ' m²');	
		getArea();					                       		            
	}
	else if(displayUnits == 'MI')
	{
		alert('The area is ' + (Math.round(polyArea/40.468564224)/100) + ' Acres');
		getArea();
	}
	else if(displayUnits == 'FT')
	{
		alert('The area is ' + (Math.round(polyArea*1076.3910417)/100) + ' ft²');
		getArea();
	}						
	areaTrigger = 0;
}