var primary="txtBaseAngle",secondary="txtRise",base,rise,diag,baseAngle,topAngle,offColor="#fff",onColor="#7cfc00",RAD=180/Math.PI,TrigType="BaseRise",_maxSize=240;
function SetCurrent(a){if(a.id!=primary)a.id=="txtTopAngle"&&primary=="txtBaseAngle"||a.id=="txtBaseAngle"&&primary=="txtTopAngle"?alert("Can't calc from 2 angles\nPlease choose 2 sides or 1 side and 1 angle"):(a.id==secondary?(a=primary,primary=secondary,secondary=a):(a.style.backgroundColor=onColor,document.getElementById(secondary).style.backgroundColor=offColor,secondary=document.getElementById(primary).id,primary=a.id),Calculate())}function Window_onload(){Calculate();SetNumeric()}
function DrawTriangle(a,b,h){var d,c;a>b?(c=_maxSize,d=c*(b/a)):(d=_maxSize,c=d*(a/b));a=document.getElementById("cnvsTriangle");if(a.getContext)a.setAttribute("width",c),a.setAttribute("height",d),a=a.getContext("2d"),a.fillStyle="#87CEEB",a.strokeStyle="#000",a.beginPath(),a.moveTo(1,1),a.lineTo(1,d-6),a.lineTo(c,d-6),a.lineTo(1,1),h||(a.lineTo(c,1),a.lineTo(c,d-6)),a.save(),a.shadowOffsetY=6,a.shadowBlur=6,a.shadowColor="#c0c0c0",a.fill(),a.restore(),a.strokeStyle="#808080",a.stroke()}
function Calculate(){baseAngle=parseFloat(document.getElementById("txtBaseAngle").value);isNaN(baseAngle)||baseAngle>89||baseAngle<1?(alert("Please enter Base Angle > 0 and < 90"),document.getElementById("txtBaseAngle").value=45):(topAngle=parseFloat(document.getElementById("txtTopAngle").value),isNaN(topAngle)||topAngle>89||topAngle<1?(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"):(primary=="txtBase"?secondary=="txtRise"?CalcBaseRise():secondary=="txtDiagonal"?CalcBaseDiagonal():secondary=="txtTopAngle"?CalcBaseTopAngle():CalcBaseBaseAngle():primary=="txtRise"?secondary=="txtBase"?CalcBaseRise():secondary=="txtDiagonal"?CalcRiseDiagonal():secondary=="txtTopAngle"?CalcRiseTopAngle():CalcRiseBaseAngle():primary=="txtDiagonal"?secondary==
"txtBase"?CalcBaseDiagonal():secondary=="txtRise"?CalcRiseDiagonal():secondary=="txtTopAngle"?CalcDiagonalTopAngle():CalcDiagonalBaseAngle():primary=="txtBaseAngle"?secondary=="txtBase"?CalcBaseBaseAngle():secondary=="txtRise"?CalcRiseBaseAngle():CalcDiagonalBaseAngle():primary=="txtTopAngle"&&(secondary=="txtBase"?CalcBaseTopAngle():secondary=="txtRise"?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,b,h=document.getElementById("rbTriangle").checked;a=h?base*rise/2/1E6:base*rise/1E6;b=parseFloat(document.getElementById("txtThick").value);if(isNaN(b))alert("invalid Nuber 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 d=RoundTo(baseAngle,2),c=RoundTo(topAngle,
2);a=RoundTo(base,1);b=RoundTo(rise,1);var f=RoundTo(diag,1);document.getElementById("txtDiagonal").value=f;document.getElementById("txtBase").value=a;document.getElementById("txtRise").value=b;document.getElementById("txtTopAngle").value=c;document.getElementById("txtBaseAngle").value=d;var g,e;switch(TrigType){case "BaseAngleDiagonal":g="Base Angle = "+d+" and Diagonal = "+f;e="Base = "+f+" &times; cos("+d+")<br />Top Angle = 90 - "+baseAngle+"<br />Rise = "+f+" &times; sin("+d+")";break;case "BaseAngleBase":g=
"Base Angle = "+d+" and Base = "+a;e="Rise = tan("+d+") &times; "+a+"<br />Top Angle = 90 - "+d+"<br />Diagonal = "+a+" / cos("+d+")";break;case "BaseAngleRise":g="Base Angle = "+d+" and Rise = "+b;e="Base = "+b+" / tan("+d+")<br />Top Angle = 90 - "+d+"<br />Diagonal = "+b+" / sin("+d+")";break;case "DiagonalTopAngle":g="Top Angle = "+c+" and Diagonal = "+f;e="Base = "+f+" &times; sin("+c+")<br />Base Angle = 90 - "+c+"<br />Rise = "+f+" &times; cos("+c+")";break;case "BaseDiagonal":g="Base = "+
a+" and Diagonal = "+f;e="Rise = &radic;( "+f+"&sup2; - "+a+"&sup2; )<br />Top Angle = arcsin("+a+" / "+f+")<br />Base Angle = arccos("+a+" / "+f+")";break;case "BaseRise":g="Base = "+a+" and Rise = "+b;e="Diagonal = &radic;( "+b+"&sup2; + "+a+"&sup2; )<br />Top Angle = arctan("+a+" / "+b+")<br />Base Angle = arctan("+b+" / "+a+")";break;case "BaseTopAngle":g="Top Angle = "+c+" and Base = "+a;e="Rise = "+a+" / tan("+c+")<br />Base Angle = 90 - "+c+"<br />Diagonal = "+a+" / sin("+c+")";break;case "RiseDiagonal":g=
"Rise = "+b+" and Diagonal = "+f;e="Base = &radic;( "+f+"&sup2; - "+b+"&sup2; )<br />Top Angle = arccos("+b+" / "+f+")<br />Base Angle = arcsin("+b+" / "+f+")";break;case "RiseTopAngle":g="Top Angle = "+c+" and Rise = "+b,e="Base = "+b+" &times; tan("+c+")<br />Base Angle = 90 - "+c+"<br />Diagonal = "+b+" / cos("+c+")"}document.getElementById("spnKnown").innerHTML=g;document.getElementById("spnFormulas").innerHTML=e;base>rise?(g=_maxSize,e=_maxSize/(base/rise)):(e=_maxSize,g=_maxSize/(rise/base));
DrawTriangle(a,b,h);h=g/2-25;a=e;document.getElementById("txtBase").style.left=h+"px";document.getElementById("txtBase").style.top=a+"px";h=0;a=e/2;document.getElementById("txtRise").style.left=h+"px";document.getElementById("txtRise").style.top=a+"px";h=g/2+6;a=e/2-20-4;document.getElementById("txtDiagonal").style.left=h+"px";document.getElementById("txtDiagonal").style.top=a+"px";h=0;a=-20;document.getElementById("txtTopAngle").style.left=h+"px";document.getElementById("txtTopAngle").style.top=
a+"px";h=g+10;a=e-20;document.getElementById("txtBaseAngle").style.left=h+"px";document.getElementById("txtBaseAngle").style.top=a+"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=
onColor;document.getElementById(secondary).style.backgroundColor=onColor}var animTimer,isAnim=false;function AnimStart(a){isAnim?AnimStop():(document.getElementById(primary).value=Math.round(document.getElementById(primary).value),isAnim=true,animTimer=setInterval("Anim("+a+")",40))}function AnimStop(){clearInterval(animTimer);isAnim=false}
function Anim(a){a=parseFloat(document.getElementById(primary).value)+a;document.getElementById(primary).id.indexOf("Angle")>-1&&a>1&&a<89?(document.getElementById(primary).value=a,Calculate()):document.getElementById(primary).id.indexOf("Angle")==-1&&a>0?(document.getElementById(primary).value=a,Calculate()):AnimStop()};
