// TarrantIT 2005
function SetCalc()
{
	SetNumeric();
	CalcStuds();
}
function CheckRange(ctrl, min, max)
{
	if (ctrl.value == "")
	{
		alert('Value Required');
		ctrl.select();
		return false;
	}
	var val = parseFloat(ctrl.value);
	if (isNaN(val))
	{
		ctrl.focus();
		alert('Numbers Only');
		ctrl.select();
		return false;
	}
	else if (val < min)
	{
		ctrl.focus();
		alert('Must be larger than or = '+ min);
		ctrl.select();
		return false;
	}
	else if (val > max)
	{				
		ctrl.focus();
		alert('Must be smaller than or = '+ max);
		ctrl.select();
		return false;
	}
	return true;
}
function CalcStuds()
{
    var ctrl;
    var rangle;
    var dangle;
    var rad = 180 / Math.PI;
    if (document.getElementById("trAngle").style.display == "block")
    {
        ctrl = document.getElementById("_txtAngle");
        if (!CheckRange(ctrl, 1, 89))
            return;
        dangle = ctrl.value;
        rangle = ctrl.value / rad;
    }
    else
    {
        ctrl = document.getElementById("txtRise");
        if (!CheckRange(ctrl, 1, 10000))
            return;
        var rise = ctrl.value;
        ctrl = document.getElementById("txtRun");
        if (!CheckRange(ctrl, 1, 100000))
            return;
        var run = ctrl.value;
        rangle = Math.atan(rise / run);
        dangle = rangle * rad;
    }
    ctrl = document.getElementById("txtCentersLevel");
    if (! CheckRange(ctrl, 50, 10000))
        return;
    var centersLevel = parseInt(ctrl.value);	
    ctrl = document.getElementById("txtLevelLength")
    if (! CheckRange(ctrl, 0, 100000))
        return;
    var lengthLevel = parseInt(ctrl.value);
    ctrl = document.getElementById("txtFirstStud")
    if (! CheckRange(ctrl, 0, 10000))
        return;
    var firstStudLength = parseInt(ctrl.value);
    ctrl = document.getElementById("txtStudWidth")
    if (! CheckRange(ctrl, 0, 100))
        return;
    var studWidth = ctrl.value;
    var studSetback = Math.tan(rangle) * studWidth;
    document.getElementById("spnStudSetback").innerHTML = Math.round(studSetback) +" mm";
    var centersAngle = centersLevel / (Math.cos(rangle));
    document.getElementById("spnCentersAngle").innerHTML = Math.round(centersAngle) +" mm";
    var lengthAngle = lengthLevel / Math.cos(rangle);
    document.getElementById("spnLengthAngle").innerHTML = "(<span style='color:Red;'>"+ RoundTo(dangle, 2) + "&deg;</span>) "+ Math.round(lengthAngle) +" mm";
    var studInc = Math.tan(rangle) * centersLevel;
    document.getElementById("spnStudInc").innerHTML = Math.round(studInc) +" mm";
    var thisStud = firstStudLength + studSetback;
    var studRun = "0 - "+ Math.round(thisStud) +"<br />";
    var run = 0;
    while (run < lengthLevel - centersLevel)
    {
        run += centersLevel;
        thisStud += studInc;
        studRun += run + " - " + Math.round(thisStud) + "<br />";
    }
    studRun = studRun.substring(0, studRun.length - 6);
    var lastStudLength = (Math.tan(rangle) * lengthLevel) + firstStudLength;
    if (thisStud != lastStudLength)
        studRun += "<br />"+ lengthLevel +" - "+ Math.round(lastStudLength);
    if (lengthLevel - run != centersLevel)
        studRun += " * Last Center =  "+ Math.round(lengthLevel - run);
    document.getElementById("spnStudRun").innerHTML = "Stud Lengths (Long Side) @ Centers (Level)<br />"+ studRun;
}
function AngleRiseRun(r)
{
    if (r == "r")
    {
        document.getElementById("trAngle").style.display = "none";
        document.getElementById("trRiseRun").style.display = "block";
        document.getElementById("btnAngle").style.color = "";
        document.getElementById("btnRiseRun").style.color = "Green";
    }
    else
    {
        document.getElementById("trRiseRun").style.display = "none";
        document.getElementById("trAngle").style.display = "block";
        document.getElementById("btnAngle").style.color = "Green";
        document.getElementById("btnRiseRun").style.color = "";
    }
}
function RoundTo(val, places)
{
    places = Math.pow(10, places);
    d = Math.round(val * places) / places;
    return d;
}