<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:output method="html"/>

	<xsl:template match="/">
	<xsl:variable name="MAINURL"><xsl:value-of select="Toolsheet/Headings/id_main_url"/></xsl:variable>
	
    <HTML>
	    <HEAD>
			<TITLE>NCG CAM Toolsheet</TITLE>
      	</HEAD>

		<STYLE>
    		.page { page-break-before: always }
			BODY {font-family: sans-serif;}
		</STYLE>

		<SCRIPT for="window" event="onload"><xsl:comment><![CDATA[
			stylesheet = document.XSLDocument;
			doc.setProperty("AllowXsltScript", true);
			source = document.XMLDocument;]]></xsl:comment>
		</SCRIPT>

	<BODY>
		<a>
			<xsl:attribute name="name">top</xsl:attribute>
		</a>
		
		<table  width = '100%' border = '1' cellpadding='2' cellspacing='0' bordercolorlight='#404040' bordercolordark='#404040'>
			<tr>
				<td width = '20%' colspan="4" rowspan="6" border="1" align="center">
					<table>
						<td></td>
						<a href="{$MAINURL}" target="_blank">
							<img border = '0' height="100" align="center">
							<xsl:attribute name="SRC"><xsl:value-of select="Toolsheet/CompanyLogoFilename"/></xsl:attribute>
							</img>
						</a>
					</table>
				</td>
				<td colspan = '8' rowspan = '6' align = 'center'>

					<table width = '100%' border = '0'>
						<tr></tr>
						<tr></tr>
					</table>

					<table width = '100%' border = '1' cellpadding='2' cellspacing='0' bordercolorlight='#404040' bordercolordark='#404040'>
						<tr>
							<th width = '30%' colspan = '4' rowspan = '1' bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_date"/></th>
							<td width = '70%' colspan = '4' rowspan = '1' align = "center"><xsl:value-of select="Toolsheet/Date"/></td>
						</tr>
						<tr>
							<th width = '30%' colspan = '4' rowspan = '1' bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_post_processor"/></th>
							<td width = '70%' colspan = '4' rowspan = '1' align = "center"><xsl:value-of select="Toolsheet/PostProcessor"/></td>
						</tr>
					</table>

						</td>
				<td colspan ="8" rowspan="14" bgcolor = '#FFFFFF' align = 'center'>
					<table>
						<td></td>
						<td colspan="7" rowspan="14">
						<a href="{$MAINURL}" target="_blank">
							<img border="0" height="200" width="267" align="center">
							<xsl:attribute name="SRC"><xsl:value-of select="Toolsheet/PartImage"/></xsl:attribute>
							</img>
						</a>
						</td>
					</table>
				</td>
			</tr>
			<tr></tr>
			<tr></tr>
			<tr></tr>
			<tr></tr>
			<tr></tr>
			<tr>
				<th colspan = '4' bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_database_name"/></th>
				<td colspan = '8'><xsl:value-of select="Toolsheet/Database"/>&#160;</td>
			</tr>
			<tr>
				<th colspan = '4' bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_project_prefix"/></th>
				<td colspan = '8'><xsl:value-of select="Toolsheet/ProjectPrefix"/></td>
			</tr>
			<tr>
				<th colspan = '4' bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_project_engineer"/></th>
				<td colspan = '8'><xsl:value-of select="Toolsheet/ProjectEngineer"/>&#160;</td>
			</tr>
			<tr>
				<th colspan="4" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_project_directory"/></th>
				<td colspan="8">
					<a target="_blank">
						<xsl:attribute name="href">file://<xsl:value-of select="Toolsheet/ProjectDirectory"/></xsl:attribute>
						<xsl:value-of select="Toolsheet/ProjectDirectory"/>
					</a>
				</td>
			</tr>
			<tr>
				<th colspan="4" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_project_comment"/></th>
				<td colspan="8"><xsl:for-each select="Toolsheet/ProjectComment"><xsl:value-of select="."/><br/></xsl:for-each></td>
			</tr>
			<tr>
				<td colspan="4">&#160;</td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_min"/></b></td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_max"/></b></td>
				<td>&#160;</td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_min"/></b></td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_max"/></b></td>
				<td>&#160;</td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_min"/></b></td>
				<td align="center" bgcolor="#D4D0C8"><b><xsl:value-of select="Toolsheet/Headings/id_max"/></b></td>
			</tr>
			<tr>
				<td colspan="3" bgcolor="#D4D0C8" align="center" ><b><xsl:value-of select="Toolsheet/Headings/id_total_part_size"/></b></td>
				<td bgcolor="#D4D0C8"><b>X</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBoxSurfaces/X/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBoxSurfaces/X/Max"/></xsl:call-template></td>
				<td bgcolor="#D4D0C8"><b>Y</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBoxSurfaces/Y/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBoxSurfaces/Y/Max"/></xsl:call-template></td>
				<td bgcolor="#D4D0C8"><b>Z</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBoxSurfaces/Z/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBoxSurfaces/Z/Max"/></xsl:call-template></td>
			</tr>
			<tr>
				<td colspan="3" height="0%" bgcolor="#D4D0C8" align="center" ><b><xsl:value-of select="Toolsheet/Headings/id_motion_limits"/></b></td>
				<td bgcolor="#D4D0C8"><b>X</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBox/X/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBox/X/Max"/></xsl:call-template></td>
				<td bgcolor="#D4D0C8"><b>Y</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBox/Y/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBox/Y/Max"/></xsl:call-template></td>
				<td bgcolor="#D4D0C8"><b>Z</b></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMin"><xsl:with-param name="Min" select="Toolsheet/Toolpath/BoundingBox/Z/Min"/></xsl:call-template></td>
				<td nowrap = "true"><xsl:call-template name="formatNumberMax"><xsl:with-param name="Max" select="Toolsheet/Toolpath/BoundingBox/Z/Max"/></xsl:call-template></td>
			</tr>
		</table>
		<tr>
			<td colspan="20" height = "20"></td>
		</tr>
		<table>
			<tr></tr>
		</table>
			
		<table width = '100%'>	
			<tr>
				<td colspan="20">
					<xsl:call-template name="Toolsheet"/>
				</td>
			</tr>
		</table>
      	</BODY>
    </HTML>
  	</xsl:template>

  	<xsl:template name="Toolsheet">
		<table  width = '100%' border = '1' cellpadding='2' cellspacing='0' bordercolorlight='#404040' bordercolordark='#404040'>
			<tr>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_short_no"/></th>
				<th colspan = "4" rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_name"/></th>
				<th colspan = "3" rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_strategy"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_tool_no"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_tool"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_thickness"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_spindle_speed"/></th>
				<th colspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_feedrate"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_coolant"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_min_z"/></th>
				<th colspan = "2" rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_tapefile"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_toolpath_length"/></th>
				<th rowspan="2" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_estimated_time"/></th>
			</tr>
			<tr>
				<th bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_rapid"/></th>
				<th bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_cutting"/></th>
			</tr>

			<xsl:for-each select="Toolsheet/Toolpath">
				<tr>
					<td align="left" rowspan="2"><xsl:value-of select="ID"/></td>
					<td colspan = "4"><xsl:value-of select="Name"/></td>
					<td colspan = "3"><xsl:value-of select="Strategy"/></td>
					<td align="left"><xsl:value-of select="Cutter/ToolNumber"/></td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="Cutter/CutterDiameter"/></xsl:call-template>x
						<xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="Cutter/CornerRadius"/></xsl:call-template>&#160;</td>
					<td align="left"><xsl:call-template name="formatThickness"><xsl:with-param name="thickXY" select="Cutter/ThicknessXY"/><xsl:with-param name="thickZ" select="Cutter/ThicknessZ"/></xsl:call-template>&#160;</td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="SpindleSpeed"/></xsl:call-template>&#160;</td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="Feedrate[1]/FeedrateSpeed"/></xsl:call-template>&#160;</td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="Feedrate[3]/FeedrateSpeed"/></xsl:call-template>&#160;</td>
					<td><xsl:call-template name="coolant"><xsl:with-param name="Coolant" select="Coolant"/></xsl:call-template>&#160;</td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="BoundingBox/Z/Min"/></xsl:call-template>&#160;</td>
					<td colspan = "2"><a target="_blank">
							<xsl:attribute name="href">file://<xsl:value-of select="TapeFile"/></xsl:attribute>
							<xsl:call-template name="GetBaseFileName">
							<xsl:with-param name="Text" select="TapeFile"/>
							</xsl:call-template>
						</a></td>
					<td align="left"><xsl:call-template name="formatNumber"><xsl:with-param name="Number" select="sum(Feedrate//FeedrateDistance)"/></xsl:call-template></td>
					<td align="left"><xsl:call-template name="ncgFormatTime">
						<xsl:with-param name="time" select="EstimatedMachiningTime"/><!--toolpathTime-->
						</xsl:call-template></td>
				</tr>
				<tr>
					<td  colspan="19"><xsl:value-of select="Comment"/>&#160;</td>
				</tr>
			</xsl:for-each>
			<tr>
				<th colspan="19" align="right" bgcolor="#D4D0C8"><xsl:value-of select="Toolsheet/Headings/id_total_time"/></th>
				<td>
					<xsl:call-template name="ncgFormatTime">
					<xsl:with-param name="time" select="sum(//EstimatedMachiningTime)"/><!--totalTime-->
					</xsl:call-template>
				</td>
			</tr>
		</table>
  	</xsl:template>
	
	<xsl:template name="formatNumber">
		<xsl:param name="Number"/>
		<xsl:choose>
			<xsl:when test="$Number = ''">
				<xsl:value-of select="'---'"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="format-number($Number, '0.####')"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template name="formatNumberMin">
		<xsl:param name="Min"/>
		<xsl:choose>
			<xsl:when test="$Min = ''">
				<xsl:value-of select="''"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="format-number($Min[not($Min &lt; .)], '0.####')"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template name="formatNumberMax">
		<xsl:param name="Max"/>
		<xsl:choose>
			<xsl:when test="$Max = ''">
				<xsl:value-of select="'---'"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="format-number($Max[not($Max &gt; .)], '0.####')"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="formatThickness">
		<xsl:param name="thickXY"/>
		<xsl:param name="thickZ"/>
		<xsl:choose>
			<xsl:when test="$thickXY = $thickZ">
				<xsl:value-of select="format-number($thickXY, '0.####')"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="format-number($thickXY, '0.####')"/> ; <xsl:value-of select="format-number($thickZ, '0.####')"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template name="coolant">
		<xsl:param name="Coolant"/>
			<xsl:if test="$Coolant = '0'"><xsl:value-of select="//id_coolant_off"/></xsl:if>
			<xsl:if test="$Coolant = '1'"><xsl:value-of select="//id_coolant_on"/></xsl:if>
			<xsl:if test="$Coolant = '2'"><xsl:value-of select="//id_coolant_flood_external"/></xsl:if>
			<xsl:if test="$Coolant = '3'"><xsl:value-of select="//id_coolant_air_external"/></xsl:if>
			<xsl:if test="$Coolant = '4'"><xsl:value-of select="//id_coolant_flood_through_spindle"/></xsl:if>
			<xsl:if test="$Coolant = '5'"><xsl:value-of select="//id_coolant_air_through_spindle"/></xsl:if>
			<xsl:if test="$Coolant = '6'"><xsl:value-of select="//id_coolant_flood_external_and_through_spindle"/></xsl:if>
			<xsl:if test="$Coolant = '7'"><xsl:value-of select="//id_coolant_air_external_and_through_spindle"/></xsl:if>
	</xsl:template>
	
	<xsl:template name="GetBaseFileName">
		<xsl:param name="Text"/>
		<xsl:param name="Delim" select="'\'"/>
		<xsl:choose>
			<xsl:when test="contains($Text, $Delim)">
				<xsl:call-template name="GetBaseFileName">
					<xsl:with-param name="Text" select="substring-after($Text, $Delim)"/>
					<xsl:with-param name="Delim" select="$Delim"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise><xsl:value-of select="$Text"/></xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="ncgFormatTime">
		<xsl:param name="time" select="." />
		
		<xsl:variable name="hours" select="floor($time div 3600 mod 3600)"/>
		<xsl:variable name="minutes" select="floor($time div 60 mod 60)"/>
		<xsl:variable name="seconds" select="$time - $hours * 3600 - $minutes * 60"/>
		
		<xsl:value-of select="concat(
									format-number($hours,'00:'),
									format-number($minutes, '00:'),
									format-number($seconds, '00'))"/>
	</xsl:template>

	
</xsl:stylesheet>
