﻿var buffOvs = [];
var idOvs = [];
var buffParams;
var bufferPolys = [];
var polyline,polygon;

function buffer(idOvs)
{
    if(idOvs.length!=0)
    {
        for(var a=0; a<idOvs.length; a++)
        {
            for(var b=0; b<idOvs[a].length; b++)
            {
                bufferPolys.pop(idOvs[a][b]);
            }
        }
    }
    mapExtension.removeFromMap(buffOvs);
    var buffDist = document.getElementById('txtBufferDist').value;
    buffParams.distances = [buffDist];
       
    for(var x=0; x<idOvs.length; x++)
    {
        for(var y=0; y<idOvs[x].length; y++)
        {
            bufferPolys.push(idOvs[x][y]);
        }
    }
    buffParams.geometries = bufferPolys;
    geomService.buffer(buffParams,buffCallback);
}

function buffCallback(results)
{
    var ov = mapExtension.addToMap(results);
    for(var x=0; x<ov.length; x++)
    {
        buffOvs.push(ov[x]);
    }
}

function enableDrawingLine()
{
    GEvent.removeListener(idEventListener);    
    if(polyline!=undefined || polyline!='Null')
    {
        polyline && gmap.removeOverlay(polyline);
    }
    polyline = new GPolyline([],"#FF3333",2,1.0);
    gmap.addOverlay(polyline);
    GEvent.addListener(polyline,"endline",measureLength);
    polyline.enableDrawing(); //google map function
}

function enableDrawingArea()
{
    if(polygon!=undefined || polygon!='Null')
    {
        polygon && gmap.removeOverlay(polygon);
    }
    polygon = new GPolygon([],"#ff0000",2,0.7,"ff0000",0.3);
    gmap.addOverlay(polygon);
    GEvent.addListener(polygon,"endline",measureArea);
    polygon.enableDrawing();
    
}

function measureLength()
{
    geomService.getLengths([polyline],displayLength);
}

function displayLength(response, error)
{
    if(error)
    {
        alert("Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
        return;
    }
    var meter = response.lengths[0];
    var feet = meter*3.281;
    //var roundLength = Math.round(length*100)/100;
    var roundMeter = Math.round(meter);
    var roundFeet = Math.round(feet);
    var lbl = "";
    lbl = "Length: " + roundFeet + " ft / " + roundMeter + " m";
    document.getElementById('lblMeasure').innerHTML = lbl;
    
}

function measureArea()
{
    geomService.getAreasAndLengths([polygon],displayArea);
}

function displayArea(response, error)
{
    if(error)
    {
        alert("Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
        return;
    }    
    var area = response.areas[0];
    var perimeter = response.lengths[0];
    var sf = area*10.7639;
    var ft = perimeter*3.281;
    var roundArea = Math.round(sf);
    var roundPerim = Math.round(ft);
    var lbl = "";
    lbl = "Area: " + roundArea + " sf / Perimeter: " + roundPerim + " ft";
    document.getElementById('lblMeasure').innerHTML = lbl;
}

function clearDrawing() //clear drawings and buffer results
{
    polyline && gmap.removeOverlay(polyline);
    polygon && gmap.removeOverlay(polygon);
}
