//Blocklayer.com 2005
function SetCalc()
{	
	CalcCenters();
}
var useFeet = true;
var studs = 0;
var centers = 0;
var actualCenters = 0;
var actualCentersLevel = 0;
var spaces = 0;
var space = 0;
var spaceLevel = 0;
var run = 0;
var runDesc = "";
var length = 0;
var studWidth = 0;
var useSpaces = true;
var angle = 0;
var rangle = 0;
function CalcCenters()
{
	length = parseInt(document.getElementById("ddC_LengthFeet").value) * 384 + parseInt(document.getElementById("ddC_LengthInches").value) * 32 + parseInt(document.getElementById("ddC_LengthFrac").value);
	centers = parseInt(document.getElementById("ddC_CentersFeet").value) * 384 + parseInt(document.getElementById("ddC_CentersInches").value) * 32 + parseInt(document.getElementById("ddC_CentersFrac").value);
	studWidth = parseInt(document.getElementById("ddC_StudInches").value) * 32 + parseInt(document.getElementById("ddC_StudFrac").value);
	useFeet = document.getElementById("rbUseFeet").checked;	
    if (centers < studWidth || centers > 38400)
	{		
		if (useSpaces)
		    alert("Spaces too small or large\n\r\n\rMin = 1\"\n\rMax = 100'");
		else
		    alert("Centers too small or large\n\r\n\rMin = Member width ("+ ConEng(studWidth, true) +")\n\rMax = 100'");
		return;
	}
	if (studWidth < 16)
	{
		alert("Member width must be at least 1/2\"");
		document.getElementById("ddC-StudFrac").focus();
		return;
	}
	if (length / centers > 400)
	{
		alert("Wall to long or centers to short");
		return;
	}
	var rad = 180 / Math.PI;
    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 = centers / (Math.cos(rangle)); // new centers for angle
    studWidth = studWidth / (Math.cos(rangle));
	if (useSpaces)
	    centers += studWidth;
    var desc = "";
	if (document.getElementById("rbBothEnds").checked)
	{
		actualCenters = (length - studWidth) / Math.ceil((length - studWidth) / centers);
		space = actualCenters - studWidth;
		studs = Math.ceil(((length - studWidth) / actualCenters)) +1;
		spaces = studs - 1;
		desc = "Members both ends<br />";
		run = studWidth;
		runDesc = ConEng(studWidth, false);
	}
	else if (document.getElementById("rbOneEnd").checked)
	{
		actualCenters = length / Math.ceil(length / centers);
		space = actualCenters - studWidth;
		studs = Math.ceil(((length - studWidth) / actualCenters));
		spaces = studs;
		desc = "Members one end only. Work from stud end<br />";
		run = studWidth;
		runDesc = "Working from Member end<br />"+ ConEng(studWidth, false);
	}
	else
	{
		var adj = length + studWidth;
		actualCenters = adj / Math.ceil(adj / centers);
		space = actualCenters - studWidth;
		studs = Math.ceil(adj  / actualCenters)-1;
		spaces = studs + 1;
		desc = "No end members<br />";
		run = space + studWidth;
		runDesc = ConEng(space + studWidth, useFeet);
	}
	actualCentersLevel = actualCenters * Math.cos(rangle);
    spaceLevel = space * Math.cos(rangle);
	desc += GetDesc();
	if (angle >0)
        runDesc = "Adjusted for angle "+ angle +"&deg;<br />" + runDesc;
	runDesc += GetRunDesc();
	document.getElementById("spnCenters").innerHTML = desc;
	document.getElementById("spnCentersRun").innerHTML = runDesc;
}
function GetDesc()
{    
    var des = studs +" members at "+ ConEng(actualCentersLevel, useFeet) +" centers";
    if (angle > 0)
        des +=" (level)";
    des +="<br />"+ spaces +" spaces @ "+ ConEng(spaceLevel, useFeet);
    if (angle > 0)
        des +=" (level)";
    des += "<br />";
    return des;   
}
function GetRunDesc()
{
    var des = "";
    for (var i=0; i<(studs-1); i++)
	{
		run += actualCenters;
		des += ", "+ ConEng(run, useFeet);
	} 
	return des;
}
function ShowCenters(rb)
{
	document.images["imgCenters"].src = "images/"+ rb.id +".gif";
	CalcCenters();
}
function AddStud(d)
{    
    if (studs < 3 && d == -1)
    {
        alert("Must have at least 3 Members");
        return;
    }
    if (space < 20 && d == 1)
    {
        alert("Openings to small")
        return;
    }
    studs += d;
    var desc = "";
    if (document.getElementById("rbBothEnds").checked)
	{
		space = (length - (studs * studWidth)) / (studs - 1);
		spaces = studs - 1;
		run = studWidth;
		desc = "Members both ends<br />";
		runDesc = ConEng(studWidth, false);
	}
	else if (document.getElementById("rbOneEnd").checked)
	{
	    space = (length - (studs * studWidth)) / studs;
	    spaces = studs;
	    run = studWidth;
	    desc = "Members one end only. Work from Member end<br />";
		runDesc = "Working from Member end<br />"+ ConEng(studWidth, false);
	}
	else
	{
	    space = (length - (studs * studWidth)) / (studs + 1);
		spaces = studs + 1;
		run = space + studWidth;
	    desc = "No end Members<br />";
	    runDesc = ConEng(space + studWidth, useFeet);
	}
	actualCenters = space + studWidth;
	actualCentersLevel = actualCenters * Math.cos(rangle);
    spaceLevel = space * Math.cos(rangle);
	desc += GetDesc();
	if (angle >0)
        runDesc = "Adjusted for angle "+ angle +"&deg;<br />" + runDesc;
	runDesc += GetRunDesc();
	document.getElementById("spnCenters").innerHTML = desc;
	document.getElementById("spnCentersRun").innerHTML = runDesc;
}
function TypeChange(ctrl)
{
    useSpaces = ctrl.value == "Spaces";
    CalcCenters();
}