var totalWidth,totalLength,optGap,boardWidth,boardAndGap,boards,allGaps,actualGap,linealBoards,minLast,boardLength,joistSpacing,boardThick;function Setup(){minLast=25;RestoreFromQs();CalcDeck();SetInput()}
function CalcDeck(){totalWidth=parseFloat(document.getElementById("txtTotalWidth").value);if(totalWidth<100||totalWidth>1E5||isNaN(totalWidth)){alert("Deck width must be between 1000 and 100000");document.getElementById("txtTotalWidth").focus()}else{totalLength=parseFloat(document.getElementById("txtTotalLength").value);if(isNaN(totalLength)){document.getElementById("txtTotalLength").value="0";totalLength=0}optGap=parseFloat(document.getElementById("_txtOptGap").value);if(optGap<1||optGap>20||isNaN(optGap)){alert("Optimal Gap must be between 1 and 20");
document.getElementById("_txtOptGap").focus()}else{boardWidth=parseFloat(document.getElementById("txtBoardWidth").value);if(boardWidth<20||boardWidth>600||isNaN(boardWidth)){alert("Board width must be between 20 and 600");document.getElementById("txtBoardWidth").focus()}else{boardThick=parseFloat(document.getElementById("txtBoardThick").value);if(boardThick<19||boardThick>100||isNaN(boardThick)){alert("Board thickness must be between 19 and 100");document.getElementById("txtBoardThick").focus()}else{boardLength=
parseFloat(document.getElementById("txtBoardLength").value);if(boardLength<1E3||boardLength>6E3||isNaN(boardLength)){alert("Board length must be between 1000 and 6000");document.getElementById("txtBoardLength").focus()}else{joistSpacing=parseFloat(document.getElementById("txtJoistSpacing").value);if(joistSpacing<200||joistSpacing>1E3||isNaN(joistSpacing)){alert("Joist Spacing must be between 200 and 1000");document.getElementById("txtJoistSpacing").focus()}else{boards=Math.floor((totalWidth+optGap)/
(boardWidth+optGap));allGaps=totalWidth-boards*boardWidth;actualGap=allGaps/(boards-1);boardAndGap=boardWidth+actualGap;document.getElementById("btnSubBoard").disabled=false;document.getElementById("btnAddBoard").disabled=false;document.getElementById("btnCutLast").disabled=false;UpdateResults(0)}}}}}}}
function Board(a){if(a==1)if(allGaps>boardWidth)boards++;else{document.getElementById("btnAddBoard").disabled=true;alert("Won't Fit");return}else if(actualGap<20)boards--;else{document.getElementById("btnSubBoard").disabled=true;alert("Gaps are too large");return}allGaps=totalWidth-boards*boardWidth;actualGap=allGaps/(boards-1);boardAndGap=boardWidth+actualGap;linealBoards=boards*totalLength;document.getElementById("btnSubBoard").disabled=false;document.getElementById("btnAddBoard").disabled=false;
document.getElementById("btnCutLast").disabled=false;UpdateResults(0)}
function UpdateResults(a){DoRun();linealBoards=boards*totalLength;document.getElementById("spnBoards").innerHTML=boards;document.getElementById("spnGap").innerHTML=RoundTo(actualGap,1);document.getElementById("spnLineal").innerHTML=CommaFormat(linealBoards);var b=parseFloat(document.getElementById("ddWaste").value),c=linealBoards+linealBoards*b/100;document.getElementById("spnLinealPlus").innerHTML=CommaFormat(c);document.getElementById("spnPercentWaste").innerHTML=b;b=Math.ceil(c/boardLength);document.getElementById("spnTotalBoards").innerHTML=
b;c=b*boardLength*boardWidth*boardThick*1.0E-9;document.getElementById("spnBoardVolume").innerHTML=RoundTo(c,3);c=Math.ceil(totalLength/joistSpacing)+1;document.getElementById("spnJoists").innerHTML=c;c=c*boards*2;if(totalLength>boardLength)c+=b*2;document.getElementById("spnFasteners").innerHTML=c;document.getElementById("spnBoardLength").innerHTML=boardLength;b="";if(a==0)b=boards+" Members @ "+boardWidth+" wide, with "+(boards-1)+" gaps of "+RoundTo(actualGap,1)+" mm";else{b=boards-1+" Members @ "+
boardWidth+" wide + 1 @ "+a+" wide, with "+(boards-1)+" gaps of "+RoundTo(actualGap,1)+"mm";document.getElementById("spnBoards").innerHTML+=" (Last Board = "+a+")"}document.getElementById("spnDesc").innerHTML=b}
function DoRun(){for(var a="",b=0,c=document.getElementById("cbEveryBoard").checked,e=document.getElementById("ddEveryBoard").value,d=0;d<boards-1;d++){b+=boardAndGap;if(d%e==e-1)a+='<span class="deck">'+Math.round(b)+"</span>, ";else c||(a+=Math.round(b)+", ")}a=a.substring(0,a.length-2);document.getElementById("spnBoardRun").innerHTML=a}
function CutLast(){var a=Math.round(totalWidth%(boardWidth+optGap));if(a>0)boards=Math.ceil(totalWidth/boardAndGap);if(a<minLast)if(confirm("With "+optGap+"mm gaps, the last board width is too small ("+Math.round(a)+"mm)\n\r\n\rWould you like to adjust gaps for min last board = "+minLast+"mm ?")){actualGap-=(minLast-a)/(boards-1);boardAndGap=boardWidth+actualGap;a=minLast}else return;actualGap=optGap;boardAndGap=boardWidth+actualGap;document.getElementById("btnAddBoard").disabled=true;document.getElementById("btnCutLast").disabled=
true;UpdateResults(Math.round(a))}function Reset(){document.getElementById("btnSubBoard").disabled=true;document.getElementById("btnAddBoard").disabled=true;document.getElementById("btnCutLast").disabled=true};
