<!--
//(c) Zonum Solutions
//March 21, 2008


 function app_comments()
  {
   zfr_comments('cad2XY');
  }

 function app_about()
  {
   var MSG = "<br><center><b>cad2XY</b>";
   MSG+="<br>Extract CAD information<br><br>(c) 2006-2008 Zonum Solutions</center>";
   zwin_msgbox("About",300,110,"","",MSG);
  }
  
  function app_clear()
  {
   document.frGeo.datamemo.value ="";
  }
  
  function app_help()
  {
   var MSG = "<br><center><b>Steps</b></center><br>";
   MSG+="<table>";
   MSG+="<tr><td align=left>* Use the 'List' command and select entities (in AutoCAD)</td></tr>";
	 MSG+="<tr><td align=left>* Open AutoCAD Text Window (F2)</td></tr>";
	 MSG+="<tr><td align=left>* Select and copy information</td></tr>";
	 MSG+="<tr><td align=left>* Paste information into cad2XY tool</td></tr>";
	 MSG+="</table>";
   zwin_msgbox("Help",370,170,"","",MSG);
  
  }
  
  
  function app_Hint()
  {
   var cad="By using the 'TAB' format; you could copy/paste from/to Excel";
   alert(cad);
  }
  
  function hide_dialogo()
 {
   var fr=document.getElementById('divframe');
   fr.style.visibility="hidden";
 }

 function app_loadfile()
 {
  var fr=document.getElementById('divframe');
  fr.style.visibility="visible";
  window.frames['fr2'].location ="../lib/LoadFile.php?TipoFile=CSV/TXT";
 }
 
  function Link_Parent_Close(DataList)
 {
   document.frGeo.datamemo.value = DataList;
   hide_dialogo(); 
 }
  
 function Send_Result()
 {
  myWin = window.open("result.php?ztype=cad2xy","result","width=490,height=440,scrollbars");
  if(myWin) {
   if (myWin.focus) {myWin.focus();} 
  }
 } 
 
 function Send_ResultWindow()
 {
  myWin = window.open("_blank","result","width=490,height=440,scrollbars");
  if(myWin) {
   if (myWin.focus) {myWin.focus();} 
  }
 }
 
  
 function Link_Parent_data()
 {
		web_resultado();
  } 
  
  
  function app_example()
  {
   var cad="Command: list\nSelect objects: Other corner: 11 found\nSelect objects:\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 2D\nat point, X=  26.5074  Y=  21.1038  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 33\nat point, X=  25.5333  Y=  24.1389  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 32\nat point, X=  24.9030  Y=  26.2005  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 2F\nat point, X=  25.5333  Y=  28.8920  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nPress ENTER to continue:\n";
   cad+="Handle = 34\nat point, X=  27.9971  Y=  25.7424  Z=   0.0000\nPOINT     Layer: 0\n";
   cad+="Space: Model space\nHandle = 35\nat point, X=  30.2317  Y=  26.0287  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 2E\nat point, X=  30.3463  Y=  24.4252  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 31\nat point, X=  27.9971  Y=  27.1740  Z=   0.0000\n";
   cad+="POINT     Layer: 0\nSpace: Model space\nHandle = 36\nat point, X=  32.1225  Y=  25.7424  Z=   0.0000";

   var fr = document.frGeo;
	 fr.datamemo.value = cad;
	 //zweb_setindex(fr.fcols_in,0);
  } 
  
   
 
  
  function is_DXFLine(DXFLine)
  {
   var isLine=(DXFLine=="LWPOLYLINE" || DXFLine=="POLYLINE");
   
   return isLine
  }
  
  
  function GetEntiHeader()
  { var EHeader="";
    switch(EntiSearch) {
	    case "POINT": EHeader="X"+sepa+"Y"+sepa+"Z"; break;
	    case "LINE": EHeader="X"+sepa+"Y"+sepa+"Z"+sepa+"X2"+sepa+"Y2"+sepa+"Z2"+sepa+"Length"; break;
	    case "POLYLINE": EHeader="X"+sepa+"Y"+sepa+"Z"+sepa+"Length"+sepa+"Area"; break;
	    case "LWPOLYLINE": EHeader="X"+sepa+"Y"+sepa+"Z"+sepa+"Length"+sepa+"Area"; break;
	    case "CIRCLE": EHeader="X"+sepa+"Y"+sepa+"Z"+sepa+"Radius"+sepa+"Circumference"+sepa+"Area"; break;
	    case "TEXT": EHeader="X"+sepa+"Y"+sepa+"Z"+sepa+"Height"+sepa+"Text"+sepa+"Rotation"; break;
	   }
	   
	  return EHeader; 
  }
  
  function checkEntities(line)
  {
    var found=false;
    var myEntity="";
		
		for(var i=0; i<EntiList.length && found==false; i++) {
	  	if(line.indexOf(EntiList[i])>-1) { 
			 found=true; myEntity=EntiList[i];
			}
    }
   
   return myEntity
  }
  
  
  function dxf_getcoords(label,line,iniLine)
  { var found=false;
    var posx=line.indexOf(label);
    if(posx>-1) {
      var cad=line.substring(posx+label.length);
	    cad=cad.replace(/( |=|X)/g,"");
	    cad=cad.replace(/(Y|Z)/g,sepa);
		  dataout+=iniLine+cad;
		  found=true;
		}  
		
		return found;
  }
  
  
  function dxf_getvalue(label,line)
   {
    var found=false;
    var posx=line.indexOf(label);
    
    if(posx>-1) {
      var cad=line.substring(posx+label.length);
	      cad=cad.replace(/ /g,"");
		    dataout+=sepa+cad;
    }
   
    return found;
   }
   
  function dxf_getstr(label,line)
   {
    var found=false;
    var posx=line.indexOf(label);
    
    if(posx>-1) {
      var cad=line.substring(posx+label.length);
		    dataout+=sepa+cad;
    }
   
    return found;
   }

  

 function analyze_line(line)
  {
   if(dxf_getcoords('from point,',line,"\n")==false) {
   if(dxf_getcoords('to point,',line,sepa)==false) {
     var posx=line.indexOf('Length =');
     if(posx>-1) {
        posx=line.indexOf(",");
        if(posx>-1) {
          line =  line.substring(0,posx);
          var a=dxf_getvalue('Length =',line);
        }
     }
		 } 
		}
  }

  function analyze_pline(line)
  {
   if(dxf_getcoords('at point,',line,"\n")==false) {
     if(dxf_getvalue('area',line)==false) {
		   var a=dxf_getvalue('length',line);
		  }
		}
  }

  
  function analyze_circle(line)
  {
    if(dxf_getcoords('center point,',line,"\n")==false) {
		  if(dxf_getvalue('radius',line)==false) {
		   if(dxf_getvalue('circumference',line)==false) {
		     var a=dxf_getvalue('area',line);
		    }
		  }
		}
  }
  
  function analyze_text(line)
  {
    if(dxf_getcoords('start point,',line,"\n")==false) {
		  if(dxf_getvalue('height',line)==false) {
		   if(dxf_getvalue('rotation angle',line)==false) {
		     var a=dxf_getstr('text',line);
		    }
		  }
		}
  } 
  
  
  
	function do_process(line)
	{
	 var posx=-1;
	 line = line.replace(/\n/g, '');
	 
	 posx=line.indexOf("Layer:");
	 if(posx>-1) {//New Entity
	   var newEnti=checkEntities(line.substring(0,posx));
	   if(EntiFound && newEnti=="VERTEX") { /*Nothing */}
	    else {
			  if(is_DXFLine(newEnti) && is_DXFLine(EntiSearch)) {EntiSearch=newEnti;} 
			
			  EntiFound=(newEnti==EntiSearch);
			  
			  if(EntiFound) {
			    if(is_DXFLine(newEnti)) {if(EntiN>0) {dataout+="\n";}}
			    EntiN+=1;
			  }
			} 
	 } else {
	 
	  if(EntiFound) { //I am in the correct entity
	  
	   switch(EntiSearch) {
	    case "POINT": dxf_getcoords('at point,',line,"\n"); break;
	    case "LINE": analyze_line(line); break;
	    case "POLYLINE":  analyze_pline(line);break; 
	    case "LWPOLYLINE": analyze_pline(line); break;
	    case "CIRCLE": analyze_circle(line); break;
	    case "TEXT": analyze_text(line); break;
	   }
	   
		}
	 }
	
	} 
   
   
  function open_tmpwin()
	 {
	  var myWin = window.open("","x","width=515,height=405,scrollbars");
    myWin.document.write('<form name="frForma"><textarea name="datamemo" rows="5" cols="10" readonly style="width:470px; height:290px" >');
    myWin.document.write('</textarea></form>');
    web_resultado();
	 } 
   
   
 
 function app_run()
  {
   var fr =document.frGeo;
   var entitype=0;
   sepa =  zget_arrayval(",| |\t",',',zweb_listIndex(fr.fseparator));
   
   xdata = fr.datamemo.value;
   if(xdata.length>3  && xdata!="Copy/paste your data here!") {
		 EntiSearch=EntiList[zget_radiolist_index(fr.fcheck1)-1]; 
     //open_tmpwin();
     Send_Result();
   } else {alert("No data to process was found.");}
   
 }

function web_resultado()
  {
   var line = "";
   dataout="";
      
   xdata = xdata.replace(/(\r\n|\r|\n)/g, '\n');
   xdata = xdata.split('\n');
   Nmax=xdata.length;

   EntiFound=false;
   EntiN=0;
	 dataout=GetEntiHeader();
  
    for (var i=0; i<Nmax; i++){
      line = xdata[i];
      if(line.length>0) {do_process(line);} 
   }

   
   xdata=""; 

   //var myfr=myWin.document.getElementById("frForma");

    var myfr =myWin.document.getElementById("dataform");
   if (myfr) {myfr.datamemo.value=dataout;} else {alert("Please try Again");}
   dataout="";
 }  
  
    
-->
