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(a.id=="txtTopAngle"&&primary=="txtBaseAngle"||a.id=="txtBaseAngle"&&primary=="txtTopAngle")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}b=document.getElementById("sldr");var c,d;if(primary.indexOf("Angle")>-1){c=1;d=89}else if(primary.indexOf("Diag")>-1){c=parseInt(document.getElementById(secondary).value)+1;d=parseInt(a.value)*2}else if(secondary.indexOf("Diag")>-1){d=parseInt(document.getElementById(secondary).value)-1;c=1}else{c=2;d=parseInt(a.value)*2}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(document.getElementById("sldr").type=="range")document.getElementById("divSldr").style.display="block"}function sldr_onchange(a){document.getElementById(primary).value=a.value;Calculate()}
function DrawTriangle(a,b){var c,d;if(a>b){d=_maxSize;c=d*(b/a)}else{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="#000";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);if(isNaN(baseAngle)||baseAngle>90||baseAngle<0){alert("Please enter Base Angle > 0 and < 90");document.getElementById("txtBaseAngle").value=45}else{topAngle=parseFloat(document.getElementById("txtTopAngle").value);if(isNaN(topAngle)||topAngle>90||topAngle<0){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=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);var 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+")";break;default:break}document.getElementById("spnKnown").innerHTML=g;document.getElementById("spnFormulas").innerHTML=f;if(base>rise){g=_maxSize;f=_maxSize/(base/rise)}else{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 animTimer;function AnimStart(a){document.getElementById(primary).value=Math.round(document.getElementById(primary).value);animTimer=setInterval("Anim("+a+")",40)}function AnimStop(){clearInterval(animTimer)}
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()};