function SetCalc(){CalcCenters();SetNumeric();if(document.getElementById("sldr").type=="range")document.getElementById("divSldr").style.display="block"}var studs=0,centers=0,actualCenters=0,actualCentersLevel=0,spaces=0,space=0,spaceLevel=0,run=0,runStart=0,runDesc="",length=0,studWidth=0,useSpaces=!0,angle=0,rangle=0,RAD=180/Math.PI;
function CalcCenters(){length=parseFloat(document.getElementById("txtWallLength").value);studWidth=parseFloat(document.getElementById("txtStudWidth").value);centers=parseFloat(document.getElementById("txtCenters").value);if(centers<studWidth||centers>1E4)document.getElementById("txtCenters").style.backgroundColor="red",useSpaces?alert("Spaces too small or large\n\r\n\rMin = 20\n\rMax = 10000"):alert("Centres too small or large\n\r\n\rMin = Member width ("+studWidth+")\n\rMax = 10000"),document.getElementById("txtCenters").style.backgroundColor=
"",document.getElementById("txtCenters").focus();else if(length<1E3||length>1E5)document.getElementById("txtWallLength").style.backgroundColor="red",alert("Length must be at least 1000 and no larger than 100000"),document.getElementById("txtWallLength").style.backgroundColor="",document.getElementById("txtWallLength").focus();else if(studWidth<20||studWidth>200)document.getElementById("txtStudWidth").style.backgroundColor="red",alert("Member width must be at least 20 and no larger than 200"),document.getElementById("txtStudWidth").style.backgroundColor=
"",document.getElementById("txtStudWidth").focus();else if(length/centers>400)alert("Wall too long or centres too short");else{angle=parseFloat(document.getElementById("_txtAngle").value);if(isNaN(angle)||angle>89||angle<0)angle=0,document.getElementById("_txtAngle").value="0",alert("Invalid angle\n\r\n\rReset to 0");rangle=angle/RAD;centers/=Math.cos(rangle);studWidth/=Math.cos(rangle);useSpaces&&(centers+=studWidth);var a="";document.getElementById("rbBothEnds").checked?(actualCenters=(length-studWidth)/
Math.ceil((length-studWidth)/centers),space=actualCenters-studWidth,studs=Math.round((length-studWidth)/actualCenters)+1,spaces=studs-1,a="Members both ends<br />",runStart=studWidth,runDesc=Math.round(studWidth).toString()):document.getElementById("rbOneEnd").checked?(actualCenters=length/Math.ceil(length/centers),space=actualCenters-studWidth,spaces=studs=Math.round((length-studWidth)/actualCenters),a="Member one end only. Work from member end<br />",runStart=studWidth,runDesc=Math.round(studWidth).toString()):
(a=length+studWidth,actualCenters=a/Math.ceil(a/centers),space=actualCenters-studWidth,studs=Math.round(a/actualCenters)-1,spaces=studs+1,a="No end members<br />",runStart=space+studWidth,runDesc=Math.round(runStart).toString());actualCentersLevel=actualCenters*Math.cos(rangle);spaceLevel=space*Math.cos(rangle);a+=GetDesc();angle>0?(document.getElementById("spnAngle").innerHTML="Adjusted for angle "+angle+"&deg;<br />",document.getElementById("spnAngle").style.display="block"):document.getElementById("spnAngle").style.display=
"none";runDesc+=GetRunDesc();document.getElementById("spnCenters").innerHTML=a;document.getElementById("spnCentersRun").innerHTML=runDesc;document.getElementById("imgQR")!=null&&document.body.removeChild(document.getElementById("imgQR"));Draw()}}function GetDesc(){var a=studs+" members at "+RoundTo(actualCentersLevel,1)+" centres";angle>0&&(a+=" (level)");a+="<br />"+spaces+" spaces @ "+RoundTo(spaceLevel,1);angle>0&&(a+=" (level)");a+="<br />";return a}
function GetRunDesc(){var a="";run=runStart;for(var c=0;c<studs-1;c++)run+=actualCenters,a+=", "+Math.round(run).toString();return a}
function AddStud(a){studs<3&&a==-1?alert("Must have at least 3 Members"):space<20&&a==1?alert("Openings too small"):(studs+=a,a="",document.getElementById("rbBothEnds").checked?(space=(length-studs*studWidth)/(studs-1),spaces=studs-1,runStart=studWidth,a="Members both ends<br />",runDesc=Math.round(studWidth).toString()):document.getElementById("rbOneEnd").checked?(space=(length-studs*studWidth)/studs,spaces=studs,runStart=studWidth,a="Member one end only. Work from member end<br />",runDesc="Working from Member end<br />"+
Math.round(studWidth).toString()):(space=(length-studs*studWidth)/(studs+1),spaces=studs+1,runStart=space+studWidth,a="No end Members<br />",runDesc=Math.round(space+studWidth).toString()),actualCenters=space+studWidth,actualCentersLevel=actualCenters*Math.cos(rangle),spaceLevel=space*Math.cos(rangle),a+=GetDesc(),angle>0&&(runDesc="Adjusted for angle "+angle+"&deg;<br />"+runDesc),runDesc+=GetRunDesc(),document.getElementById("spnCenters").innerHTML=a,document.getElementById("spnCentersRun").innerHTML=
runDesc,Draw())}function TypeChange(a){useSpaces=a.value=="Spaces";CalcCenters()}
function Draw(){var a=document.getElementById("cnvsCenters");if(a.getContext){var c=a.width-10,d=length/c,g=space/d,d=studWidth/d,e=Math.tan(rangle)*c,f=100+e;a.setAttribute("height",f+50);var b=a.getContext("2d");b.clearRect(0,0,a.width,a.height);var a=Math.tan(rangle)*(d+g),h=document.getElementById("rbNoEnds").checked?g:0,i=document.getElementById("rbNoEnds").checked?f-a:f;b.fillStyle="#00f";b.beginPath();b.moveTo(0,f);b.lineTo(c,f-e);b.strokeStyle="#f00";b.stroke();run=runStart;c="";b.font="12px verdana";
for(e=0;e<studs;e++)b.fillRect(h,i-100,d,100),b.save(),b.fillStyle="#000",c=Math.round(run),b.translate(h,i+2),b.rotate(90/RAD),b.fillText(c,0,0),b.restore(),run+=actualCenters,i-=a,h+=d+g}}function sldr_onchange(a){document.getElementById("_txtAngle").value=RoundTo(a.value,1);CalcCenters()}var autoTimer=null;function StartAuto(a){autoTimer=setInterval("Auto("+a+")",100)}
function Auto(a){a=parseInt(document.getElementById("_txtAngle").value)+a;if(a>-1&&a<60)document.getElementById("_txtAngle").value=a,document.getElementById("sldr").value=a,CalcCenters()}function StopAuto(){clearInterval(autoTimer)}var sizeTimer;function Resize(a){sizeTimer=setInterval("Sizer("+a+")",100)}function Sizer(a){var c=document.getElementById("cnvsCenters"),a=parseInt(c.width)+a;a>100&&a<1E3?(c.setAttribute("width",a),Draw()):StopSizer()}function StopSizer(){clearInterval(sizeTimer)}
function GetQR(a){BuildQR(a,"Centres "+RoundTo(actualCenters,1)+" Start at "+RoundTo(runStart,1))}function RunTalk(){RunTalkQR("RunTalk - Metric",actualCenters,runStart)};
