<!--
//(c) 2006-2007 Zonum Solutions
//Last modified: February 25,2007

//This library is not for distribution
//If you decide to use part of it, you must create a link to zonums
//on any page that uses this library




function web_pagina()
 {
  
   nw = window.open("","x","width=550,height=450,scrollbars");
   nw.title = "pagina";   
   nwd = nw.document;
   wn = nwd.write;
   nwd.write('<html><head><title>Zonums</title></head>');
   nwd.write('<body  bgcolor="#f8f8f6"  style="font-family: Arial, Helvetica, sans-serif; font-size: 9pt">');
   nwd.write('<b>EPANET inp File</b><br>');
   nwd.write('<textarea name="datamemo" rows="19" cols="60" WRAP="OFF" readonly>');
   nwd.write('[TITLE]\ngpx2epa\n');
   nwd.write('</textarea>');
   nwd.write('</form>');
   nwd.write('</body></html>');
 }



 function hide_dialogo()
 {
   var fr=document.getElementById('divframe');
   fr.style.visibility="hidden";
 }

 function app_openfile()
 {
  var fr=document.getElementById('divframe');
  fr.style.visibility="visible";
  window.frames['fr2'].location ="LoadFile.php?TipoFile=GPX";
 }

 function app_export()
 {
   var NPoints = NJuncs + NTanks + NResvrs;

  //web_pagina();

  if(NPoints>0) {web_resultado();}
   else {alert("The project is empty!");}
 }

 

function app_about()
 {
   var MSG = "<br><center><b>gpx2epa </b> (beta)";
   MSG+="<br>Epanet projects from a GPS<br><br>(c) 2006-2007 Zonum Solutions</center>";
   zwin_msgbox("About",300,110,"","",MSG);
 }

 function cleardata()
 {
  document.toclist.dataNode.value ="";
 }

function Link_Parent_Close(DataList)
 {
   //document.toclist.datamemo.value = "Processing File...";
   hide_dialogo(); 
   map.clearOverlays();
   drawGPX(DataList);
 }

 function enabledUTM()
 {
  var index = document.frGeo.Projection.options.selectedIndex;
  var isUTM = false;
  if(index==1) {isUTM = true;}
  
  document.frGeo.UTMZone.disabled = isUTM;
  document.frGeo.btUTMGrid.disabled = isUTM;
  document.frGeo.Hemisph.disabled = isUTM;
   
 }


 function prepare_app()
 {
   hide_dialogo();
   zFillCombo(document.frGeo.UTMZone,1,1,60,"Zone ",11);
   
   var wsize = 705;
   if(!es_MSI()) {wsize = 688;}
   var hsize =screen.availHeight;
   if(hsize>=755) {hsize=755;}
   window.resizeTo(wsize,hsize);

    map = new GMap2(document.getElementById("map"));
     map.addControl(new GMapTypeControl());    
     //map.addControl(omc);       
     map.addControl(smc);
     //map.addControl(sc);

     //map.setCenter(new GLatLng(32.231857, -110.953474), 12);
     map.setCenter(new GLatLng(32.231857, -110.953474), 11);
     map.setMapType(G_SATELLITE_MAP);
     map.enableContinuousZoom();
     map.enableScrollWheelZoom();
 }
 


function changezscale()
  {
  var svisible = document.frMap.scalebar.checked;
  if(svisible) {map.addControl(sc);}
   else {map.removeControl(sc);}
 }

 function changezoview()
 {
  var svisible = document.frMap.overviewmap.checked;
  if(svisible) {map.addControl(omc);}
   else {map.removeControl(omc);}
 }

 function changezzoom()
  {
  var svisible = document.frMap.zoompan.checked;
  if(svisible) {map.addControl(smc);}
  else {map.removeControl(smc);}
}

function getcoords(text,SendUTM)
 { 
  var ylat = text.split("|")[1];
  var xlon = text.split("|")[2];
    
    ylat = parseFloat(ylat);
    xlon = parseFloat(xlon);
  
  if(SendUTM) {    
    outcoo = zGeo_LatLon2UTM(UTMZone,ylat,xlon,"\t");
    //xlon = parseFloat(outcoo.split(sp)[0]);
    //ylat = parseFloat(outcoo.split(sp)[1]);
  } else {
  
   outcoo = xlon + "\t" +ylat;
  }

  return text.split("|")[0]+"\t"+outcoo;

 } 



function web_resultado()
 {
  
  SendUTM =false;
  SendUTM = (document.frGeo.Projection.options.selectedIndex==0);
   UTMZone = document.frGeo.UTMZone.options.selectedIndex+1;

   var line = "";
   nw = window.open("","x","width=515,height=425,scrollbars");
   nw.title = "pagina";   
   nwd = nw.document;
   wn = nwd.write;
   

   nwd.write('<html><head><title>Gpx2epa</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>EPANET inp File</b><br>');
   nwd.write('Select all the data and copy/paste it into a textfile\n');
   nwd.write('(you could use NOTEPAD) and save the file with the INP extension.\n');
   //nwd.write('If you would like to receive the file by email, input your\n');
   //nwd.write('email address and click the SEND button.\n');
   nwd.write('<form name="dataform" method=POST action = "data_sendmail.php">');
   //nwd.write('&nbsp;Email &nbsp;');
   //nwd.write('<input type="text" name="email" style="width: 300px">&nbsp;');
   //nwd.write('<input type="submit" name="submit" value="Send"/>');

   if(es_MSI()) {
   nwd.write('<textarea name="datamemo" rows="5" cols="10" readonly style="width:470px; height:240px" >');
   } else {
   nwd.write('<textarea name="datamemo" rows="5" cols="10"  WRAP="OFF" readonly style="width:490px; height:350px" >');
   }
   

   nwd.write('[TITLE]\ngpx2epa\n');
     if(SendUTM) {
        nwd.write('Units: UTM(meters), Zone '+UTMZone+'\nDatum: WGS84\n');
       } else {nwd.write('Units: Lat/Lon (Decimal degrees)\nDatum: WGS84\n');}
     nwd.write('Powered by Zonum Solutions\nwww.zonums.com\n');
     

 if(NJuncs>0) {
   nwd.write('\n[JUNCTIONS]\n;ID\tElev\tDemand\tPattern\n');
   var data = document.toclist.dataNode.value;
   data = data.replace(/(\r\n|\r|\n)/g, '\n');
   datal = data.split("\n");
   for (i=0; i<datal.length-1; i++) {
    datax = datal[i];
    nwd.write(datax.split("|")[0]+"\t"+datax.split("|")[3]+"\t0\t;\n");
   }
  }   

 if(NResvrs>0) {
   nwd.write('\n[RESERVOIRS]\n;ID\tHead\tPattern\n');
   var data = document.toclist.dataResv.value;
   var datal = data.split("\n");
   for (i=0; i<NResvrs; i++) {
    nwd.write(datal[i].split("|")[0]);
    nwd.write("\t0\t;\n");
   }
  }

  if(NTanks>0) {
   nwd.write('\n[TANKS]\n;ID\tElevation\tInitLevel\tMinLevel\tMaxLevel\tDiameter\tMinVol\tVolCurve\t\n');
   var data = document.toclist.dataTank.value;
   data = data.replace(/(\r\n|\r|\n)/g, '\n');
   data = data.split("\n");
   for (i=0; i<data.length-1; i++) {
    datax=data[i];
    nwd.write(datax.split("|")[0]+"\t"+ datax.split("|")[3]+"\t10\t0\t2\t0\t50\t0;\n");
   }
  }    

 
  nwd.write('\n[COORDINATES]\n;Node\tX-Coord\tY-Coord\n');
  if(NJuncs>0) {
   var data = document.toclist.dataNode.value;
   data = data.split("\n");
   for (i=0; i<data.length-1; i++) {nwd.write(getcoords(data[i],SendUTM)+"\n");}
  }

 if(NResvrs>0) {
   var data = document.toclist.dataResv.value;
   data = data.split("\n");
   for (i=0; i<data.length-1; i++) {nwd.write(getcoords(data[i],SendUTM)+"\n");}
  }

 if(NTanks>0) {
   var data = document.toclist.dataTank.value;
   data = data.split("\n");
   for (i=0; i<data.length-1; i++) {nwd.write(getcoords(data[i],SendUTM)+"\n");}
  }

   nwd.write('\n[BACKDROP]');
   data = " |"+(latmin-0.005)+"|"+(lonmin-0.005);
   nwd.write('\n DIMENSIONS'+getcoords(data,SendUTM));
   data = " |"+(latmax+0.005)+"|"+(lonmax+0.005);
   nwd.write(" "+getcoords(data,SendUTM)+"\n");

//   nwd.write('\n DIMENSIONS\t'+EXMin+'\t'+EYMin+'\t'+EXMax+'\t'+EYMax);

   if(SendUTM==true) {nwd.write('\nUNITS Meters');}
   else {nwd.write('\nUNITS Degrees');}
   nwd.write('\nFILE');
   nwd.write('\nOFFSET 0.00 0.00\n');
   nwd.write('\n[END]');
   nwd.write('</textarea>');
   nwd.write('</form>');
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>');
 }
 

function TEXT_parser(Text)
 {
    // code for IE
    if (window.ActiveXObject)
     {
       var doc=new ActiveXObject("Microsoft.XMLDOM");
       doc.async="false";
       doc.loadXML(Text);
     }
    // code for Mozilla, Firefox, Opera, etc.
   else
    {
      var parser=new DOMParser();
      var doc=parser.parseFromString(Text,"text/xml");
    }
   return doc.documentElement
 }


function getname_tag(obj,defaultName)
 {
  var xNode = obj.getElementsByTagName("name");
  var xname = " "+defaultName; 
  
  if(xNode.length>0) {xname = xNode[0].firstChild.nodeValue;}
  //if(xNode!=null) {xname = xNode[0].text;}

  return xname 
 }

function getele_tag(obj)
 {
  var xNode = obj.getElementsByTagName("ele");
  var xname = "0"; 
  
  if(xNode.length>0) {xname = xNode[0].firstChild.nodeValue;}
  //if(xNode!=null) {xname = xNode[0].text;}

  return xname 
 }

 function DrawPoint(point, Label)
 {
  var myMarker = new GMarker(point,iconJunc);  
  myMarker.title = Label;
  map.addOverlay(myMarker);
 }



 function GetPoint(GPXPoint,PtName,PtElev,typeNode)
 {
   var lon = parseFloat(GPXPoint.getAttribute("lon"));
   var lat = parseFloat(GPXPoint.getAttribute("lat"));
  
   if(FlagPt1==false) {
     latmin = lat; latmax = lat;
     lonmin = lon; lonmax = lon;
     FlagPt1 = true;
   } else   {
     if(lat<latmin) {latmin = lat;}
     if(lat>latmax) {latmax = lat;}
     if(lon<lonmin) {lonmin = lon;}
     if(lon>lonmax) {lonmax = lon;}
   }

   var cad = ""+PtName+"|"+lat+"|"+lon+"|"+PtElev+"\n";
   if(typeNode==0) {
      GPXJunc += cad;
      NJuncs += 1;
      iconJunc.image = "http://www.zonums.com/library/symbols/epanet/GEJunction.png";
   } else {
    if(typeNode==1) {
      GPXTank += cad;
      NTanks += 1;
      iconJunc.image = "http://www.zonums.com/library/symbols/epanet/GETank.png";
    } else {
      GPXResv += cad;
      NResvrs += 1;
      iconJunc.image = "http://www.zonums.com/library/symbols/epanet/GESource.png";
    }
   }

  xpt =  new GLatLng(lat,lon);
  return xpt
 }

function ZoomCenter(NPoints)
 {
   if(NPoints>1) {
   Dx = lonmax-lonmin;
   Dy = latmax - latmin;
   Cx = (lonmax+lonmin)/2;
   Cy = (latmax+latmin)/2;
   map.setCenter(new GLatLng(Cy, Cx), 12);
   var bounds = new GLatLngBounds();
   bounds.extend(new GLatLng(latmin,lonmin));
   bounds.extend(new GLatLng(latmax,lonmax));
   map.setZoom(map.getBoundsZoomLevel(bounds));
   } else {
     map.setCenter(new GLatLng(latmin, lonmin), 10);
   }
   
 }


 function gettypeNode(PtName)
 {
   var tipo = 0;
   if(PtName!=null) {
    //PtName = PtName.toUpperCase();
    var x = PtName.indexOf('TANK');
    if(x>=0) {tipo=1;} else {
       x = PtName.indexOf('RESVR');
       if(x>=0) {tipo=2;}
    }
   } else {PtName = "X";}
   return tipo
 }


function drawGPX(GPXData)
 {
   document.toclist.dataNode.value = "";
   NJuncs = 0;
   NTanks = 0;
   NResvrs = 0;
   typeNode = 0;   

   GPXDoc=TEXT_parser(GPXData);
   GPXJunc = "";
   GPXTank = "";
   GPXResv = "";

   FlagPt1 = false;
   var N_wpts = 0;
   var PtName = "";
   var PtElev = "";
 
   var Points = GPXDoc.getElementsByTagName("wpt");
   N_wpts = Points.length;
   for (var i=0; i<Points.length; i++) {
     PtName = getname_tag(Points[i],i);

     typeNode = gettypeNode(PtName);
     PtElev = getele_tag(Points[i]);
     MPoint =  GetPoint(Points[i],PtName,PtElev,typeNode);
     DrawPoint(MPoint," ");
   }
   
  
  if(N_wpts>0) {ZoomCenter(N_wpts);}
   else {alert("No util data was found!");} 

//  var limits = "Latitude\n Max : "+latmax+"\n Min : "+latmin+"\n";
//  limits += "Longitude\n Max : "+lonmax+"\n Min : "+lonmin;
//  limits += "\n\nPoints:" + N_wpts+"\nTracks: "+Tracks.length;

  document.toclist.dataNode.value = GPXJunc;
  document.toclist.dataTank.value = GPXTank;
  document.toclist.dataResv.value = GPXResv;
  GPXJunc = "";
  GPXTank = "";
  GPXResv = ""; 

 }



function app_summary()
 {
   var MSG = "<br><center><b>Network Summary</b><br><br>";
   MSG+="Junctions: "+NJuncs+"<br>Tanks: "+NTanks+"<br>Reservoirs: "+NResvrs+"<br><enter>";
   zwin_msgbox("gpx2epa",200,150,"","",MSG);
 }


 
-->