

function resize_map()

 {

  var info = new zget_winsize();

  if(info.clientWidth<=800 && info.clientHeight<500) {

    zset_resize("map",800,500);

    zset_resize("message",800-200,15);

   } else {

    zset_resize("map",info.clientWidth-5,info.clientHeight-50);

    zset_resize("message",info.clientWidth-200,15);

   }

 }









function app_about()

 {

   var MSG = "<center><b>MapTool</b> (beta)";

   MSG+='<br>Elevations, Distances, Areas & Perimeters<br><br>';

   MSG+='<a href="javascript:app_source();">Elevations source: USGS seamless dataset</a> <br>';

   MSG+='<br>Last update: May 3, 2007';

   MSG+='<br>(c) 2006-2007 Zonum Solutions</center>';

   zwin_msgbox("About",300,140,"","",MSG);

 }





 function app_source()

 {

  var Url ="http://www.zonums.com/library/online/elevsource.html"; 

  window.open(Url,'','scrollbars=yes,menubar=no,height=450,width=800,resizable=yes,toolbar=no,location=no,status=no');

 }





 function app_comments()

 {

  zfr_comments('maptool');

 }



  function ClearDist()

  {

    NumPoint = 0;

    PtsList = [];

    map.clearOverlays();

    document.getElementById("message").innerHTML = "Click the First Point:";

  }



  function StopArea()

  {

    NumPoint = 0;

    PtsList = [];

  }



  function ClearArea()

  {

    NumPoint = 0;

    PtsList = [];

    map.clearOverlays();

    document.getElementById("message").innerHTML = "Click the First Point:";

  }



  function changeTool()

  {

   zTool = zweb_listIndex(document.frGeo.optaction);

   NumPoint = 0;

   PtsList = [];  

   map.clearOverlays();

   document.getElementById("message").innerHTML ="";

   if(zTool==1 || zTool==2) {

     if(zTool==1) {uL=1;} else {uL=3;} 

     document.getElementById("message").innerHTML = "Click a Point over the Map to get the Elevation:";

   }

   if(zTool>2 && zTool<=7) {

     uL=zTool-2;

     document.getElementById("message").innerHTML = "Click the First Point:";

   } 

    if(zTool>7 && zTool<=13) {

     uA=zTool-7;

     if(uA<=3) {uL=1;} else {uL=5;}



     document.getElementById("message").innerHTML = "Click the First Point:";

   }

  }



 function getUnitL_Text(UnitX)

 {

  var Text = "uknown";



  if(UnitX==1) {Text = "meters";}

  if(UnitX==2) {Text = "km";}

  if(UnitX==3) {Text = "feet";}

  if(UnitX==4) {Text = "yards";}

  if(UnitX==5) {Text = "miles";}

  

  return Text 

 }



 function conv_length(DistX,UnitX)

 {

  

  if(UnitX==2) {DistX = DistX * 0.001;}

  if(UnitX==3) {DistX = DistX * 3.2808398950;}

  if(UnitX==4) {DistX = DistX * 1.0936132983377078;}

  if(UnitX==5) {DistX = DistX * 0.000621371192237;}



  return DistX

 }



function getUnitA_Text(UnitX)

 {

  var Text = "uknown";



  if(UnitX==1) {Text = "sq. meters";}

  if(UnitX==2) {Text = "sq. km";}

  if(UnitX==3) {Text = "hectare";}

  if(UnitX==4) {Text = "sq. feet";}

  if(UnitX==5) {Text = "sq. mile";}

  if(UnitX==6) {Text = "acre";}



  return Text 

 }



function conv_area(AreaX,UnitX)

 {

  

  if(UnitX==2) {AreaX = AreaX * 0.000001;}

  if(UnitX==3) {AreaX = AreaX * 0.0001;}

  if(UnitX==4) {AreaX = AreaX * 10.763910416709722;}

  if(UnitX==5) {AreaX = AreaX * 3.8610215859e-7;}

  if(UnitX==6) {AreaX = AreaX * 0.00024710538149;} 

  return AreaX

 }





function zpt(lat,lon)

 {

   var point = new GLatLng(lat,lon);

   map.addOverlay(new GMarker(point));



  //var myMarker = new GMarker(point,icon);  

  //myMarker.title = output;

  //map.addOverlay(myMarker);

 }



 function add_pointLayer()

 {

    zpt(32.231857, -110.953474);

  }



 function getcoords(point,showUTM)

 { 

   var outcoo = "";

   if(showUTM==true) {

       UTMZone = zGeo_calcUTMZone(point.lng());

       outcoo = zGeo_LatLon2UTM2(UTMZone,point.lat(),point.lng(),", ");

       x = outcoo.split(' ')[0];

       y = outcoo.split(' ')[2];



       x = parseFloat(x);

       y = parseFloat(y);



       outcoo = outcoo + " Zone " +UTMZone; 

    

  

// lat/lon

   } else {outcoo = " "+point.toUrlValue();}

  return outcoo;

 } 





 function zmouse_move(point)

 {

   var showUTM = document.frGeo.utm.checked;

   var line = getcoords(point,showUTM);

  document.getElementById("latlon").innerHTML = line; 

 }





function changemaptype(newtype)

 {

  map.setMapType(newtype);

  document.getElementById("message").innerHTML = "Map style has changed";

 }


function changecursor(newcursor)

 {

  map.getDragObject().setDraggableCursor('crosshair');

  document.getElementById("message").innerHTML = "Map style has changed";

 }


 function changezscale()

  {

  var svisible = document.frGeo.scalebar.checked;

  if(svisible) {

     map.addControl(sc);

     document.getElementById("message").innerHTML = "MapScale Control: on";

   } else {

     map.removeControl(sc);

     document.getElementById("message").innerHTML = "MapScale Control: off";

   }

 }



 function changezoview()

 {

  var svisible = document.frGeo.overviewmap.checked;

  if(svisible) {

    map.addControl(omc);

    document.getElementById("message").innerHTML = "Overview Map: on";

   } else { 

    map.removeControl(omc);

    document.getElementById("message").innerHTML = "Overview Map: off";

  }

 }



 function changezzoom()

  {

  var svisible = document.frGeo.zoompan.checked;

  if(svisible) {

    map.addControl(smc);

   document.getElementById("message").innerHTML = "Zoom Control: on";

   } else { 

   document.getElementById("message").innerHTML = "Zoom Control: off";

    map.removeControl(smc);

  }

}


 function changecursor()

  {

  var svisible = document.frGeo.cursor.checked;

  if(svisible) {

    map.addControl(smc);

   document.getElementById("message").innerHTML = "cursor Control: on";

   } else { 

   document.getElementById("message").innerHTML = "Zoom Control: off";

    map.removeControl(smc);

  }

}







 function getDist(Pt1,Pt2)

 {

    DX = Pt2.x-Pt1.x;

    DY = Pt2.y-Pt1.y;

    tmpdist = Math.pow(DX,2)+Math.pow(DY,2);

    if(tmpdist>0) { tmpdist = Math.sqrt(tmpdist);}

    else {tmpdist = 0;}



   return tmpdist

 }



 function PtLatLon2UTM(Pt)

 {

    outcoo = zGeo_LatLon2UTM(UTMZone,Pt.y,Pt.x,',');

    x = parseFloat(outcoo.split(',')[0]);

    y = parseFloat(outcoo.split(',')[1]);

  return new myPoint(x,y)

 }





 function getSegDist(PtList,Index1,Index2)

 {



  UTMZone = zGeo_calcUTMZone(PtList[Index1].x);



  var Pt1 = PtLatLon2UTM(PtList[Index1]);

  var Pt2 = PtLatLon2UTM(PtList[Index2]);

 

  return getDist(Pt1,Pt2)

 }





 function calDist(PtList)

 { var dist = 0;

   

  UTMZone = zGeo_calcUTMZone(PtList[0].x);

  for(i=0; i<PtList.length; i++) {

    

    if(i==0) { Pt1 = PtLatLon2UTM(PtList[0]);}

     else {

     Pt2 = PtLatLon2UTM(PtList[i]);



     

     dist =  dist + getDist(Pt1,Pt2);

    

     Pt1.x=Pt2.x;

     Pt1.y=Pt2.y;

    }

 

  }

  return dist

 }



 function calPerimeter(PtList)

 { 

  var dist = calDist(PtList);

  var dist2 = getSegDist(PtList,0,PtList.length-1);

   

  dist = dist + dist2;

 

  

  return dist

 }





 function calArea(PtList)

    {

        // Calculate the area of a polygon

        // using the data stored

        // in the arrays x and y

        var area = 0.0;



 

        UTMZone = zGeo_calcUTMZone(PtList[0].x);



        Pt1 = PtLatLon2UTM(PtList[PtList.length-1]);



        for( k = 0; k <PtList.length ; k++ ) {

            Pt2 = PtLatLon2UTM(PtList[k]);

            xDiff = Pt2.x - Pt1.x;

            yDiff = Pt2.y - Pt1.y;

            area = area + Pt1.x * yDiff - Pt1.y * xDiff;

            Pt1.x=Pt2.x;

            Pt1.y=Pt2.y;

        }

       area = 0.5 * Math.abs(area);



       area = conv_area(area,uA);

     

     return area

    }





 function PointClick(point)

 {

   var myMarker = new GMarker(point,icon); 

    map.addOverlay(myMarker);

          

    doGetElevation(point.y,point.x);

 }





 function DistClick(point)

 {

  if(NumPoint==0) {

     PtsList.push(new GLatLng(point.y,point.x));

     OldPoint.x=point.x;

     OldPoint.y=point.y;

     document.getElementById("message").innerHTML = "Next Point:";

     NumPoint =1;

     var myMarker = new GMarker(point,icon); 

     map.addOverlay(myMarker);



  } else {    

     PtsList.push(new GLatLng(point.y,point.x));      

     var polyline = new GPolyline(PtsList, "#FF0000", 4,1);

     map.addOverlay(polyline);



    var distText = "";

    var TotDist = conv_length(calDist(PtsList),uL);

    



    if(PtsList.length>2) {

     var tmpdist = conv_length(getSegDist(PtsList,PtsList.length-2,PtsList.length-1),uL);

     

     distText = "Segment = "+ tmpdist.toFixed(4) + " Total =";



    }



    distText += " " + TotDist.toFixed(3)+" "+getUnitL_Text(uL);





    document.getElementById("message").innerHTML = 'Distance : '+distText+' <a href="javascript:ClearDist();">[Clear]</a><a href="javascript:dispcoo(false,1);">[Lat/Lon]</a><a href="javascript:dispcoo(true,1);">[UTM]</a>';

    NumPoint = 1;

    var myMarker = new GMarker(point,icon); 

    map.addOverlay(myMarker);

  }

 }



function AreaClick(point)

 {

  if(NumPoint==0) {

     PtsList.push(new GLatLng(point.y,point.x));

     OldPoint.x=point.x;

     OldPoint.y=point.y;

     document.getElementById("message").innerHTML = "Next Point:";

     NumPoint =1;

     var myMarker = new GMarker(point,icon); 

     map.addOverlay(myMarker);



  } else {    

     PtsList.push(new GLatLng(point.y,point.x)); 



     var TotArea = "3rd Point:";

     var TotDist = "";

   



     if(PtsList.length>2) {   

       var Polygon=new GPolygon(PtsList,'#FF0000', 3, 1,'#0000FF',0.2);

       map.addOverlay(Polygon);  

       TotArea = calArea(PtsList);

       TotArea = TotArea.toFixed(3);



       TotArea = "Area = "+TotArea +" " +getUnitA_Text(uA);



       TotDist = conv_length(calPerimeter(PtsList),uL);

       TotDist = "Perimeter = "+TotDist.toFixed(3)+" "+getUnitL_Text(uL);



     } else {

       var polyline = new GPolyline(PtsList, "#FF0000", 4,1);

       map.addOverlay(polyline);

     }

     



     if(PtsList.length>2) {

     document.getElementById("message").innerHTML = TotArea+' '+TotDist+'<a href="javascript:StopArea();">[Stop]</a><a href="javascript:ClearArea();">[Clear]</a><a href="javascript:dispcoo(false,2);">[Lat/Lon]</a><a href="javascript:dispcoo(true,2);">[UTM]</a>';

     } else {

      document.getElementById("message").innerHTML = TotArea+' <a href="javascript:StopArea();">[Stop]</a>';

     }

     

     NumPoint = NumPoint +1;

  }

 }



 function zmapclick(overlay, point)

   { 

     if (point) {

       map.clearOverlays();

       if(zTool==1 || zTool==2) {PointClick(point);};



       if(zTool>2 && zTool<=7) {DistClick(point);}  

       if(zTool>7 && zTool<=13) {AreaClick(point);}     

     }                       

   }





function zRequest(url)

{

  document.getElementById("message").innerHTML = "Wait...";

  xmlhttp=null

// code for Mozilla, etc.

if (window.XMLHttpRequest)

  {

  xmlhttp=new XMLHttpRequest()

  }

// code for IE

else if (window.ActiveXObject)

  {

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

  }

if (xmlhttp!=null)

  {

  xmlhttp.onreadystatechange=state_Change

  xmlhttp.open("GET",url,true)

  //xmlhttp.open("POST",url,true)

  xmlhttp.send(null)

  }

else

  {document.getElementById("message").innerHTML = "Your browser does not support XMLHTTP.";

  }

}



function state_Change()

{

// if xmlhttp shows "loaded"

if (xmlhttp.readyState==4)

  {

  // if "OK"

  if (xmlhttp.status==200)

  {

  //alert("XML data OK")

  //document.getElementById('A1').innerHTML=xmlhttp.status

  //document.getElementById('A2').innerHTML=xmlhttp.statusText

  //document.getElementById('A3').innerHTML=xmlhttp.responseText

  //document.getElementById("message").innerHTML =xmlhttp.responseText;



  parseElevation(xmlhttp.responseText);



  }

  else

  {document.getElementById("message").innerHTML = "Problem retrieving data:" + xmlhttp.statusText;

  }

  }

}



function parseElevation_Old(TextData)

  {

  

   x = TextData.indexOf('XMLWebServices/');

   SubCad = TextData.substring(x+16,TextData.length);

   x = SubCad.indexOf('<');

   SubCad = SubCad.substring(1,x);

   cadena = "Point Elevation = " + getElev_units(SubCad);

   

   document.getElementById("message").innerHTML = cadena;

     

  }

 function parseElevation(TextData)

  {

   //alert(TextData);

   var x = TextData.indexOf('<double>');

   SubCad = TextData.substring(x+7,TextData.length);

   x = SubCad.indexOf('</');

   SubCad = SubCad.substring(1,x);

   cadena = "Point Elevation = " + getElev_units(SubCad);

   document.getElementById("message").innerHTML = cadena;

  }





 function getElev_units(Elevation)

  {

    Elev = parseFloat(Elevation);

    Elev = conv_length(Elev,uL);

    Elev = "" + Elev.toFixed(3) + " " + getUnitL_Text(uL);



    return Elev 

  }





 function doGetElevation(lat,lon)

 {var Url = '';



  //var path = 'XMLWebServices/TNM_Elevation_Service.asmx/getElevation?';

  var path = '/XMLWebServices2/elevation_service.asmx/getElevation?';

  path  +='X_Value='+lon+'&Y_Value='+lat+'&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=TRUE';



  Url =  'http://www.zonums.com/gmaps/elevserver2.php?yws_path=' + encodeURIComponent(path); 

 // alert(Url);

   // zRequest('http://gisdata.usgs.gov//XMLWebServices/TNM_Elevation_Service.asmx/getElevation?

   //X_Value='+lon+'&Y_Value='+lat+'&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=TRUE');

  //zRequest('http://gisdata.usgs.net/'+path);

  //zRequest('http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=-112.120972&Y_Value=33.054716&Elevation_Units=FEET&Source_Layer=-1&Elevation_Only=TRUE');

  zRequest(Url);

  

 }



 function dispcoo(isUTM,eType)

 {

   var FormatOut ="TXT";

   var line = "";

   nw = window.open("","x","width=515,height=405,scrollbars");

   nw.title = "pagina";   

   nwd = nw.document;

   nwd.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');

   nwd.write('<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">');



   nwd.write('<html><head><title>MapTool</title>');

   nwd.write('<meta name="keywords" content="Zmaps, Google Maps, Mapping, retrieve elevation, DEM, elevation, distance, ESRI">');

   nwd.write('</head>');

   nwd.write('<body  bgcolor="#f8f8f6"  style="font-family: Arial, Helvetica, sans-serif; font-size: 9pt">');

   nwd.write('<b> Coordinates</b><br>');

   nwd.write('Select all the data and copy/paste it into a textfile ');

   nwd.write('(you could use NOTEPAD)\n');

   nwd.write('<form name="dataform" method="POST" action="wresult.php">');

   if(es_MSI()) {

   nwd.write('<textarea name="datamemo" rows="5" cols="10" style="width:470px; height:240px" >');

   } else {

   nwd.write('<textarea name="datamemo" rows="5" cols="10" style="width:490px; height:350px" >');

   }

   var xCad = "";

   

   



   if(eType==1) {

     xCad = conv_length(calDist(PtsList),uL);

     xCad = ""+ xCad.toFixed(3)+" "+getUnitL_Text(uL);

     nwd.write('Polyline:\nLength = '+xCad);

     

   } else {

    xCad = conv_length(calPerimeter(PtsList),uL);

    xCad = ""+ xCad.toFixed(3)+" "+getUnitL_Text(uL); 

    nwd.write('Polygon:\nPerimeter = '+xCad);

    xCad = conv_length(calArea(PtsList),uA);

    xCad = "" + xCad.toFixed(3) + " "+getUnitA_Text(uA);

    nwd.write('\nArea = '+xCad);

   }



   nwd.write('\nVertices = '+PtsList.length);



   if(isUTM==true) {

    nwd.write('\n\nUTM (meters) Zone '+UTMZone);

    nwd.write('\nX, Y\n');

   } else {

    nwd.write('\n\nLat, Lon\n');

   }

  

   



   for(i=0; i<PtsList.length; i++) {

    if(isUTM==true) {

       Pt1 = PtLatLon2UTM(PtsList[i]);

       xCad = ""+ Pt1.x + "," +Pt1.y;

     } else {

       Pt1 = PtsList[i];

       xCad = "" + Pt1.y + "," + Pt1.x; 

     }



    nwd.write(xCad+'\n');

   

   }

   

   nwd.write('</textarea>');

   nwd.write('</form>\n');

 if(es_MSI()) {

   xCad ='<div id="adBottom" style="position:absolute; left:0px; top:300px;width:469px;height:60px;overflow:hidden;">\n<!--$begin html$-->';

   xCad += '<script type="text/javascript"><!--\n';

   xCad +='google_ad_client = "pub-3234906288040413";';

   

xCad +='google_ad_width = 468;';

xCad +='google_ad_height = 60;';

xCad +='google_ad_format = "468x60_as";';

xCad +='google_ad_type = "text_image";';

xCad +='google_ad_channel = "";';

xCad +='google_color_border = "FFFFFF";';

xCad +='google_color_bg = "E6E6E6";';

xCad +='google_color_link = "0000FF";';

xCad +='google_color_text = "000000";';

xCad +='google_color_url = "008000";';

xCad +='\n //--></script>\n';

xCad +='<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>';

xCad +='<!--$end html$--></div>';

   nwd.write(xCad);

 }



   nwd.write('</body></html>');

 }

 





 

-->