
//  -----------------------------------------------------------------
//    Notes:	The purpose of this Javascript File is supply the javascript code to perform user measurements\
//              on the map.  Included line, segment, perimter, and area
//
//    Global Variables Delcared:         
//           None
//
//    Arguments:   
//    Returns:	N/A
//  		E:\WebSite_Default\ArcIMSFrameWorkSource\JavaScript\ArcIMSFrameWork_Measure.js
//   -----------------------------------------------------------------
//    Orginization:	City of Asheville IT Services
//    Original Code: 	Dave Michelson 1/31/2006
//    Last Update:	Dave Michelson 1/31/2006
//                      Dave Michelson 6/14/2006 added distance units to display
//


  //function to get the length of a line
  function resetLength(myMeasureElement){
    var measureOBJ = document.getElementById(myMeasureElement);

    measureOBJ.innerHTML = 0;
  }

  //function to get the length of a line
  function getLength(mX1,mX2,mY1,mY2,myInUnits,myOutUnits,myMeasureElement){
    
    var measureOBJ = document.getElementById(myMeasureElement);
    var eletwo = myMeasureElement+'_Two';
    var measureOBJMILES = document.getElementById(eletwo);

    var reg = new RegExp(' Feet', 'g');
    var mDVal = measureOBJ.innerHTML.replace(reg,'');
    var mDistance =  Number(mDVal);

    //Ensure the current distance is numeric value    
    if (String(mDistance) == 'NaN'){
      mDistance = 0;
    }

    //get the map x and y for the first point
    var MapDim = getMapXY(mX1,mY1);
    var X1 = MapDim.X;
    var Y1 = MapDim.Y;

    //get the map x and y for the second point
    var MapDim = getMapXY(mX2,mY2);
    var X2 = MapDim.X;
    var Y2 = MapDim.Y;
  	
    var xD = Math.abs(X2 - X1);
    var yD = Math.abs(Y2 - Y1);
	
    mDistance = Math.sqrt(Math.pow(xD,2) + Math.pow(yD,2));
    
    var theDist = convertUnits(mDistance,myInUnits,myOutUnits);
    currentMeasure = Math.round(Number(theDist)*10)/10;

    var theDistance = Number(currentMeasure);
    theDistance = Math.round(Number(theDistance)*10)/10;

    var mDist = Number(measureOBJ.innerHTML);
    mDist = currentMeasure + mDist
    mDist = Math.round(Number(mDist)*10)/10;

    var mDistTwo = convertUnits(mDist ,'FEET','MILES');

    if(measureOBJMILES)
    { 
      measureOBJMILES.innerHTML = mDistTwo;
    }

    measureOBJ.innerHTML = mDist;


    return(mDist);
  }

  function getPerimiter(numPnt,clkX,clkY,myMeasureElement){
    var dist = 0;
    var i;
    var X1;
    var Y1;
    var X2;
    var Y2;

    resetElement(myMeasureElement,'SPAN');

    for (i=0; i<numPnt; i++) {

      X1 = clkX[i];
      Y1 = clkY[i];     
      
      if ((i+1) >= numPnt){
        X2 = clkX[0];
        Y2 = clkY[0];
      }else{
        X2 = clkX[i+1];
        Y2 = clkY[i+1];
      }
  
      getLength(X1,X2,Y1,Y2,'FEET','FEET',myMeasureElement);
    }

  }

  function getArea(numPnt,clkX,clkY,myMeasureElement){
    var measureOBJ = document.getElementById(myMeasureElement);
    var eletwo = myMeasureElement+'_Two';
    var measureOBJsqFeet = document.getElementById(eletwo);
    var eleThree = myMeasureElement+'_Three';
    var measureOBJsqMiles = document.getElementById(eleThree );

    var workarea = 0.0;

    cai = numPnt - 1;
    caj = 0;

    var X = 0.0;
    var Y = 0.0;

    while (caj < numPnt) {

      //get the map x and y for the second point
      var MapDim = getMapXY(clkX[caj],clkY[cai]);
      var X = MapDim.X;
      var Y = MapDim.Y;

      xjyi = X * Y;

      //get the map x and y for the second point
      var MapDim = getMapXY(clkX[cai],clkY[caj]);
      var X = MapDim.X;
      var Y = MapDim.Y;

      xiyj = X * Y;

      xydiff = (xjyi - xiyj);
      workarea = workarea+xydiff;
      cai = caj;
      caj = parseFloat(caj + 1);  
    }

    workarea = Math.abs(workarea / ( 2.0));
    var sqFeet = workarea;
    workarea = ConvertSqUnits(workarea,'FEET','ACRES')  

    sqFeet = Math.round(Number(sqFeet)*10)/10;

    var sqMiles = ConvertSqUnits(sqFeet,'FEET','SQUARE_MILES')  

    if(measureOBJsqFeet )
    { 
      measureOBJsqFeet.innerHTML = sqFeet;
    }

    if(measureOBJsqMiles)
    { 
      measureOBJsqMiles.innerHTML = sqMiles;
    }
    
    measureOBJ.innerHTML = workarea;

  }
