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)if(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");else{if(a.id==secondary){a=primary;primary=secondary;secondary=a}else{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 c,d;if(a>b){d=_maxSize;c=d*(b/a)}else{c=_maxSize;d=c*(a/b)}a=document.getElementById("cnvsTriangle");if(a.getContext){a.setAttribute("width",d);a.setAttribute("height",c);a=a.getContext("2d");a.fillStyle="#87CEEB";a.strokeStyle="#000";a.beginPath();a.moveTo(1,1);a.lineTo(1,c-6);a.lineTo(d,c-6);a.lineTo(1,1);if(!h){a.lineTo(d,1);a.lineTo(d,c-6)}a.save();a.shadowOffsetY=6;a.shadowBlur=6;a.shadowColor="#c0c0c0";a.fill();a.restore();a.stroke()}}
function Calculate(){baseAngle=parseFloat(document.getElementById("txtBaseAngle").value);if(isNaN(baseAngle)||baseAngle>89||baseAngle<1){alert("Please enter Base Angle > 0 and < 90");document.getElementById("txtBaseAngle").value=45}else{topAngle=parseFloat(document.getElementById("txtTopAngle").value);if(isNaN(topAngle)||topAngle>89||topAngle<1){alert("Please enter Top Angle > 0 and < 90");document.getElementById("txtTopAngle").value=45}else{base=parseFloat(document.getElementById("txtBase").value);
rise=parseFloat(document.getElementById("txtRise").value);diag=parseFloat(document.getElementById("txtDiagonal").value);if(isNaN(base)||isNaN(rise)||isNaN(diag))alert("Please enter valid side lengths");else{if(primary=="txtBase")if(secondary=="txtRise")CalcBaseRise();else if(secondary=="txtDiagonal")CalcBaseDiagonal();else secondary=="txtTopAngle"?CalcBaseTopAngle():CalcBaseBaseAngle();else if(primary=="txtRise")if(secondary=="txtBase")CalcBaseRise();else if(secondary=="txtDiagonal")CalcRiseDiagonal();
else secondary=="txtTopAngle"?CalcRiseTopAngle():CalcRiseBaseAngle();else if(primary=="txtDiagonal")if(secondary=="txtBase")CalcBaseDiagonal();else if(secondary=="txtRise")CalcRiseDiagonal();else secondary=="txtTopAngle"?CalcDiagonalTopAngle():CalcDiagonalBaseAngle();else if(primary=="txtBaseAngle")if(secondary=="txtBase")CalcBaseBaseAngle();else secondary=="txtRise"?CalcRiseBaseAngle():CalcDiagonalBaseAngle();else if(primary=="txtTopAngle")if(secondary=="txtBase")CalcBaseTopAngle();else 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 c=RoundTo(baseAngle,2),d=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=d;document.getElementById("txtBaseAngle").value=c;var g,e;switch(TrigType){case "BaseAngleDiagonal":g="Base Angle = "+c+" and Diagonal = "+f;e="Base = "+f+" &times; cos("+c+")<br />Top Angle = 90 - "+baseAngle+"<br />Rise = "+f+" &times; sin("+c+")";break;case "BaseAngleBase":g=
"Base Angle = "+c+" and Base = "+a;e="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;e="Base = "+b+" / tan("+c+")<br />Top Angle = 90 - "+c+"<br />Diagonal = "+b+" / sin("+c+")";break;case "DiagonalTopAngle":g="Top Angle = "+d+" and Diagonal = "+f;e="Base = "+f+" &times; sin("+d+")<br />Base Angle = 90 - "+d+"<br />Rise = "+f+" &times; cos("+d+")";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 = "+d+" and Base = "+a;e="Rise = "+a+" / tan("+d+")<br />Base Angle = 90 - "+d+"<br />Diagonal = "+a+" / sin("+d+")";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 = "+d+" and Rise = "+b;e="Base = "+b+" &times; tan("+d+")<br />Base Angle = 90 - "+d+"<br />Diagonal = "+b+" / cos("+d+")";break;default:break}document.getElementById("spnKnown").innerHTML=g;document.getElementById("spnFormulas").innerHTML=e;if(base>rise){g=_maxSize;e=_maxSize/(base/rise)}else{e=_maxSize;
g=_maxSize/(rise/base)}DrawTriangle(a,b,h);h=parseInt(document.getElementById("cnvsTriangle").style.left);a=parseInt(document.getElementById("cnvsTriangle").style.top);b=g/2-25+h;c=a+e;document.getElementById("txtBase").style.left=b+"px";document.getElementById("txtBase").style.top=c+"px";b=h;c=a+e/2;document.getElementById("txtRise").style.left=b+"px";document.getElementById("txtRise").style.top=c+"px";b=g/2+h;c=a+e/2-20-4;document.getElementById("txtDiagonal").style.left=b+"px";document.getElementById("txtDiagonal").style.top=
c+"px";b=h;c=a-20;document.getElementById("txtTopAngle").style.left=b+"px";document.getElementById("txtTopAngle").style.top=c+"px";b=h+g;c=a+e-20;document.getElementById("txtBaseAngle").style.left=b+"px";document.getElementById("txtBaseAngle").style.top=c+"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;document.getElementById("divTriangle").style.height=e+60+"px"}var animTimer,isAnim=false;function AnimStart(a){if(isAnim)AnimStop();else{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;if(document.getElementById(primary).id.indexOf("Angle")>-1&&a>1&&a<89){document.getElementById(primary).value=a;Calculate()}else if(document.getElementById(primary).id.indexOf("Angle")==-1&&a>0){document.getElementById(primary).value=a;Calculate()}else AnimStop()};