var primary="txtBaseAngle",secondary="txtRise",base,rise,diag,baseAngle,topAngle,offColor="#fff",primColor="#7cfc00",secColor="#ffff00",RAD=180/Math.PI,TrigType="BaseRise",_maxSize=400;
function SetCurrent(a){if(a.id!=primary)if("txtTopAngle"==a.id&&"txtBaseAngle"==primary||"txtBaseAngle"==a.id&&"txtTopAngle"==primary)alert("Can't calculate from 2 angles\n\nPlease choose 2 sides or 1 side and 1 angle");else{if(a.id==secondary){var b=primary;primary=secondary;secondary=b;a.style.backgroundColor=primColor;document.getElementById(secondary).style.backgroundColor=secColor}else a.style.backgroundColor=primColor,document.getElementById(secondary).style.backgroundColor=offColor,secondary=
document.getElementById(primary).id,document.getElementById(secondary).style.backgroundColor=secColor,primary=a.id;var b=document.getElementById("sldr"),c,d;-1<primary.indexOf("Angle")?(c=1,d=89):-1<primary.indexOf("Diag")?(c=parseInt(document.getElementById(secondary).value)+1,d=2*parseInt(a.value)):-1<secondary.indexOf("Diag")?(d=parseInt(document.getElementById(secondary).value)-1,c=1):(c=2,d=2*parseInt(a.value));b.setAttribute("min",c);b.setAttribute("max",d);b.value=a.value;document.getElementById("spnPrimary").innerHTML=
primary.substring(3);Calculate()}}function window_onload(){Calculate();SetNumeric();if("range"==document.getElementById("sldr").type)document.getElementById("divSldr").style.display="block"}function sldr_onchange(a){document.getElementById(primary).value=a.value;Calculate()}
function DrawTriangle(a,b){var c,d;a>b?(d=_maxSize,c=d*(b/a)):(c=_maxSize,d=c*(a/b));var e=document.getElementById("cnvsTriangle");if(e.getContext)e.setAttribute("width",d),e.setAttribute("height",c),e=e.getContext("2d"),e.fillStyle="#87CEEB",e.strokeStyle="#808080",e.beginPath(),e.moveTo(1,1),e.lineTo(1,c-6),e.lineTo(d,c-6),e.lineTo(1,1),e.save(),e.shadowOffsetY=6,e.shadowBlur=6,e.shadowColor="#c0c0c0",e.fill(),e.restore(),e.stroke()}
function Calculate(){baseAngle=parseFloat(document.getElementById("txtBaseAngle").value);isNaN(baseAngle)||90<baseAngle||0>baseAngle?(alert("Please enter Base Angle > 0 and < 90"),document.getElementById("txtBaseAngle").value=45):(topAngle=parseFloat(document.getElementById("txtTopAngle").value),isNaN(topAngle)||90<topAngle||0>topAngle?(alert("Please enter Top Angle > 0 and < 90"),document.getElementById("txtTopAngle").value=45):(base=parseFloat(document.getElementById("txtBase").value),rise=parseFloat(document.getElementById("txtRise").value),
diag=parseFloat(document.getElementById("txtDiagonal").value),isNaN(base)||isNaN(rise)||isNaN(diag)?alert("Please enter valid side lengths"):("txtBase"==primary?"txtRise"==secondary?CalcBaseRise():"txtDiagonal"==secondary?CalcBaseDiagonal():"txtTopAngle"==secondary?CalcBaseTopAngle():CalcBaseBaseAngle():"txtRise"==primary?"txtBase"==secondary?CalcBaseRise():"txtDiagonal"==secondary?CalcRiseDiagonal():"txtTopAngle"==secondary?CalcRiseTopAngle():CalcRiseBaseAngle():"txtDiagonal"==primary?"txtBase"==
secondary?CalcBaseDiagonal():"txtRise"==secondary?CalcRiseDiagonal():"txtTopAngle"==secondary?CalcDiagonalTopAngle():CalcDiagonalBaseAngle():"txtBaseAngle"==primary?"txtBase"==secondary?CalcBaseBaseAngle():"txtRise"==secondary?CalcRiseBaseAngle():CalcDiagonalBaseAngle():"txtTopAngle"==primary&&("txtBase"==secondary?CalcBaseTopAngle():"txtRise"==secondary?CalcRiseTopAngle():CalcDiagonalTopAngle()),UpdateValues())))}
function CalcBaseRise(){diag=Math.sqrt(rise*rise+base*base);baseAngle=Math.atan(rise/base)*RAD;topAngle=90-baseAngle;TrigType="BaseRise"}function CalcBaseDiagonal(){if(diag<base)alert("Diagonal must be longer than Base\n\n( "+(base+1)+" or longer )"),document.getElementById("txtDiagonal").value=base+1,diag=base+1;rise=Math.sqrt(diag*diag-base*base);baseAngle=Math.atan(rise/base)*RAD;topAngle=90-baseAngle;TrigType="BaseDiagonal"}
function CalcRiseDiagonal(){if(diag<rise)alert("Diagonal must be longer than Rise\n\n( "+(rise+1)+" or longer )"),document.getElementById("txtDiagonal").value=base+1,diag=rise+1;base=Math.sqrt(diag*diag-rise*rise);baseAngle=Math.atan(rise/base)*RAD;topAngle=90-baseAngle;TrigType="RiseDiagonal"}function CalcBaseTopAngle(){baseAngle=90-topAngle;rise=Math.tan(baseAngle/RAD)*base;diag=Math.sqrt(rise*rise+base*base);TrigType="BaseTopAngle"}
function CalcBaseBaseAngle(){topAngle=90-baseAngle;rise=Math.tan(baseAngle/RAD)*base;diag=Math.sqrt(rise*rise+base*base);TrigType="BaseAngleBase"}function CalcRiseTopAngle(){baseAngle=90-topAngle;base=rise/Math.tan(baseAngle/RAD);diag=Math.sqrt(rise*rise+base*base);TrigType="RiseTopAngle"}function CalcRiseBaseAngle(){topAngle=90-baseAngle;base=rise/Math.tan(baseAngle/RAD);diag=Math.sqrt(rise*rise+base*base);TrigType="BaseAngleRise"}
function CalcDiagonalTopAngle(){baseAngle=90-topAngle;rise=Math.sin(baseAngle/RAD)*diag;base=Math.sqrt(diag*diag-rise*rise);TrigType="DiagonalTopAngle"}function CalcDiagonalBaseAngle(){topAngle=90-baseAngle;rise=Math.sin(baseAngle/RAD)*diag;base=Math.sqrt(diag*diag-rise*rise);TrigType="BaseAngleDiagonal"}
function UpdateValues(){var a=base*rise/2/1E6,b=parseFloat(document.getElementById("txtThick").value);if(isNaN(b))alert("invalid Number for Thickness\n\nRe-set to 100"),b=100,document.getElementById("txtThick").value="100";b=a*(b/1E3);document.getElementById("spnVolume").innerHTML="Volume "+RoundTo(b,2)+" m&sup3;";document.getElementById("spnArea").innerHTML="Area "+RoundTo(a,2)+" m&sup2;";var c=RoundTo(baseAngle,2),d=RoundTo(topAngle,2),a=RoundTo(base,1),b=RoundTo(rise,1),e=RoundTo(diag,1);document.getElementById("txtDiagonal").value=
e;document.getElementById("txtBase").value=a;document.getElementById("txtRise").value=b;document.getElementById("txtTopAngle").value=d;document.getElementById("txtBaseAngle").value=c;var g,f;switch(TrigType){case "BaseAngleDiagonal":g="Base Angle = "+c+" and Diagonal = "+e;f="Base = "+e+" &times; cos("+c+")<br />Top Angle = 90 - "+baseAngle+"<br />Rise = "+e+" &times; sin("+c+")";break;case "BaseAngleBase":g="Base Angle = "+c+" and Base = "+a;f="Rise = tan("+c+") &times; "+a+"<br />Top Angle = 90 - "+
c+"<br />Diagonal = "+a+" / cos("+c+")";break;case "BaseAngleRise":g="Base Angle = "+c+" and Rise = "+b;f="Base = "+b+" / tan("+c+")<br />Top Angle = 90 - "+c+"<br />Diagonal = "+b+" / sin("+c+")";break;case "DiagonalTopAngle":g="Top Angle = "+d+" and Diagonal = "+e;f="Base = "+e+" &times; sin("+d+")<br />Base Angle = 90 - "+d+"<br />Rise = "+e+" &times; cos("+d+")";break;case "BaseDiagonal":g="Base = "+a+" and Diagonal = "+e;f="Rise = &radic;( "+e+"&sup2; - "+a+"&sup2; )<br />Top Angle = arcsin("+
a+" / "+e+")<br />Base Angle = arccos("+a+" / "+e+")";break;case "BaseRise":g="Base = "+a+" and Rise = "+b;f="Diagonal = &radic;( "+b+"&sup2; + "+a+"&sup2; )<br />Top Angle = arctan("+a+" / "+b+")<br />Base Angle = arctan("+b+" / "+a+")";break;case "BaseTopAngle":g="Top Angle = "+d+" and Base = "+a;f="Rise = "+a+" / tan("+d+")<br />Base Angle = 90 - "+d+"<br />Diagonal = "+a+" / sin("+d+")";break;case "RiseDiagonal":g="Rise = "+b+" and Diagonal = "+e;f="Base = &radic;( "+e+"&sup2; - "+b+"&sup2; )<br />Top Angle = arccos("+
b+" / "+e+")<br />Base Angle = arcsin("+b+" / "+e+")";break;case "RiseTopAngle":g="Top Angle = "+d+" and Rise = "+b,f="Base = "+b+" &times; tan("+d+")<br />Base Angle = 90 - "+d+"<br />Diagonal = "+b+" / cos("+d+")"}document.getElementById("spnKnown").innerHTML=g;document.getElementById("spnFormulas").innerHTML=f;base>rise?(g=_maxSize,f=_maxSize/(base/rise)):(f=_maxSize,g=_maxSize/(rise/base));DrawTriangle(a,b);a=parseInt(document.getElementById("cnvsTriangle").style.left);b=parseInt(document.getElementById("cnvsTriangle").style.top);
c=g/2-25+a;d=b+f;document.getElementById("txtBase").style.left=c+"px";document.getElementById("txtBase").style.top=d+"px";c=a-50;d=b+f/2;document.getElementById("txtRise").style.left=c+"px";document.getElementById("txtRise").style.top=d+"px";c=g/2+a;d=b+f/2-20-4;document.getElementById("txtDiagonal").style.left=c+"px";document.getElementById("txtDiagonal").style.top=d+"px";c=a;d=b-20;document.getElementById("txtTopAngle").style.left=c+"px";document.getElementById("txtTopAngle").style.top=d+"px";c=
a+g;d=b+f-20;document.getElementById("txtBaseAngle").style.left=c+"px";document.getElementById("txtBaseAngle").style.top=d+"px";document.getElementById("txtBase").style.backgroundColor=offColor;document.getElementById("txtRise").style.backgroundColor=offColor;document.getElementById("txtDiagonal").style.backgroundColor=offColor;document.getElementById("txtTopAngle").style.backgroundColor=offColor;document.getElementById("txtBaseAngle").style.backgroundColor=offColor;document.getElementById(primary).style.backgroundColor=
primColor;document.getElementById(secondary).style.backgroundColor=secColor;document.getElementById("sldr").value=document.getElementById(primary).value}var autoTimer;function AutoStart(a){document.getElementById(primary).value=Math.round(document.getElementById(primary).value);autoTimer=setInterval("Auto("+a+")",100)}function AutoStop(){clearInterval(autoTimer)}
function Auto(a){a=parseFloat(document.getElementById(primary).value)+a;-1<document.getElementById(primary).id.indexOf("Angle")&&1<a&&89>a?(document.getElementById(primary).value=a,Calculate()):-1==document.getElementById(primary).id.indexOf("Angle")&&0<a?(document.getElementById(primary).value=a,Calculate()):AutoStop()};
