var RADDEG         = Math.PI/180.0;

var TopDiameter    = 12.0;
var BotDiameter    = 18.0;
var Height         = 10.0;
var Angle          = 0.0;

function ConeCalc(){
	var angle1        = 0.0;   // Angle (sweep) of flat pattern
	var Side1         = 0.0;   // Length of side of cone
	var PeakLength    = 0.0;   // Distance from top outside edge of cone to top point
	var TopStartAngle = 0.0;
	var TopEndAngle   = 0.0;
	var BotStartAngle = 0.0;
	var BotEndAngle   = 0.0;
	var TopStartX     = 0.0;
	var BotStartX     = 0.0;
	var Gap           = 0.005;

	TopDiameter=document.Transition.TopDiameter.value;
	BotDiameter=document.Transition.BottomDiameter.value;
	Height=document.Transition.Height.value;

	// Calculate the distance to the peak of the cone
	Angle = Math.atan(Height/((BotDiameter-TopDiameter)/2))/RADDEG;
	Side1 = linelength(0.0, 0.0, 0.0, ((BotDiameter-TopDiameter)/2.0), Height, 0.0);
	PeakLength = (TopDiameter/2.0) / Math.cos(Angle*RADDEG);
	angle1 = (TopDiameter*Math.PI)/(PeakLength*RADDEG);

	TopStartAngle = Math.asin(Gap/(TopDiameter/2.0))/RADDEG;
	BotStartAngle = Math.asin(Gap/(BotDiameter/2.0))/RADDEG;
	TopEndAngle = 360.0-TopStartAngle;
	BotEndAngle = 360.0-BotStartAngle;
	TopStartX = Math.sqrt(((TopDiameter/2)*(TopDiameter/2))-(Gap*Gap));
	BotStartX = Math.sqrt(((BotDiameter/2)*(BotDiameter/2))-(Gap*Gap));
//Line 36
	//Calculate end points of flat pattern
	Xsmall = PeakLength * Math.sin((angle1/2)*RADDEG);
	Ysmall = PeakLength - (PeakLength * Math.cos((angle1/2)*RADDEG));
	Xlarge = (PeakLength + Side1) * Math.sin((angle1/2)*RADDEG);
	Ylarge = PeakLength - ((PeakLength + Side1) * Math.cos((angle1/2)*RADDEG));
// alert("Xsmall = "+Xsmall+" Ysmall = "+(PeakLength * Math.cos((angle1/2)*RADDEG)));

	// Write the DXF file
	var w = window.frames.w;
	if( !w )
	{
		w = document.createElement( 'iframe' );
		w.id = 'w';
		w.style.display = 'none';
		document.body.insertBefore( w );
		w = window.frames.w;
		if( !w )
		{
			w = window.open( '', '_temp', 'width=100,height=100' );
			if( !w )
			{
				window.alert( 'Sorry, could not create file.' ); return false;
			}
		}
	}

	var d = w.document,
	ext = "utf-8",//  ext = "utf-8",
	name = "cone.txt";

	d.open( 'text/plain', 'replace' );
	d.charset = ext;

	// Write header data to file
	d.write( "  0\nSECTION\n  2\nHEADER\n  0\nENDSEC\n  0\nSECTION\n  2\nTABLES\n  0\nENDSEC\n  0\nSECTION\n  2\nBLOCKS\n  0\nENDSEC\n  0\nSECTION\n  2\nENTITIES\n" );

	// Write arcs of the 3d Cone to file
	d.write( "  0\nARC\n  8\n3D Model\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+0.0+"\n 20\n"+0.0+"\n 30\n"+0.0+"\n" );
	d.write( " 40\n"+(BotDiameter/2.0)+"\n 50\n"+BotStartAngle+"\n 51\n"+BotEndAngle+"\n" );

	d.write( "  0\nARC\n  8\n3D Model\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+0.0+"\n 20\n"+0.0+"\n 30\n"+Height+"\n" );
	d.write( " 40\n"+(TopDiameter/2.0)+"\n 50\n"+TopStartAngle+"\n 51\n"+TopEndAngle+"\n" );

	//Write edge lines along the cone
	d.write( "  0\nLINE\n  8\n3D Model\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+BotStartX+"\n 20\n"+Gap+"\n 30\n0.0\n" );
	d.write( " 11\n"+TopStartX+"\n 21\n"+Gap+"\n 31\n"+Height+"\n" );

	d.write( "  0\nLINE\n  8\n3D Model\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+BotStartX+"\n 20\n"+(-Gap)+"\n 30\n0.0\n" );
	d.write( " 11\n"+TopStartX+"\n 21\n"+(-Gap)+"\n 31\n"+Height+"\n" );


	//Write the flat pattern

	d.write( "  0\nARC\n  8\nFlat Pattern\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+0.0+"\n 20\n"+PeakLength+"\n 30\n"+0.0+"\n" );
	d.write( " 40\n"+PeakLength+"\n 50\n"+(270-(angle1/2))+"\n 51\n"+(270+(angle1/2))+"\n" );

	d.write( "  0\nARC\n  8\nFlat Pattern\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+0.0+"\n 20\n"+PeakLength+"\n 30\n"+0.0+"\n" );
	d.write( " 40\n"+(PeakLength+Side1)+"\n 50\n"+(270-(angle1/2))+"\n 51\n"+(270+(angle1/2))+"\n" );

	//Write edge lines along the flat
	d.write( "  0\nLINE\n  8\nFlat Pattern\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+(-Xsmall)+"\n 20\n"+Ysmall+"\n 30\n0.0\n" );
	d.write( " 11\n"+(-Xlarge)+"\n 21\n"+Ylarge+"\n 31\n0.0\n" );

	d.write( "  0\nLINE\n  8\nFlat Pattern\n  6\nCONTINUOUS\n 62\n1\n" );
	d.write( " 10\n"+Xsmall+"\n 20\n"+Ysmall+"\n 30\n0.0\n" );
	d.write( " 11\n"+Xlarge+"\n 21\n"+Ylarge+"\n 31\n0.0\n" );

	//Write end of file codes
	d.write( "  0\nENDSEC\n  0\nEOF\n" );
	d.close();

	if( d.execCommand( 'SaveAs', null, name ) )
	{
		window.alert( 'The file has been saved.\n\n Please rename it to .DXF' );
	}
	else 
	{
		window.alert( 'The file has not been saved.\nIs there a problem?' );
	}
	w.close();

}

function numcheck(fieldValue, str) {
	<!--checking that the values are numbers--> 
	var numCheck = isNaN (fieldValue); 
	if (numCheck==true) { 
		alert(str); 
		return false; 
	} 
} 

function linelength(X1, Y1, Z1, X2, Y2, Z2)
{
	//Calculate the length of a 3d line
	return Math.sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)+(Z1-Z2)*(Z1-Z2));
}
