// TarrantIT 2005
function SetCalc()
{
	CalculateArc();
}
function HeightOrRadius_Click()
{        
    if (document.getElementById("rbArcRadius").checked)
       document.getElementById("spnHeightOrRadius").innerHTML = "Radius";
    else
         document.getElementById("spnHeightOrRadius").innerHTML = "Height";
}
function CalculateArc()
{
    var RAD = 180 / Math.PI;
    var width = parseFloat(document.getElementById("txtArcWidth").value);
    var hor = parseFloat(document.getElementById("txtHeightOrRadius").value);
    var hw = width / 2;
    if (document.getElementById("rbArcRadius").checked)
    {
        if (hor < hw)
        {
            alert("Radius must not be less than 1/2 arc width\n\r\n\rFor current width of "+ width +" radius must be greater than "+ hw);
            document.getElementById("txtHeightOrRadius").focus();
            return;
        }
    }
    else
    { 
        if (hor > hw)
        {
            alert("Height must not be greater than 1/2 arc width\n\r\n\rFor current width of "+ width +" height must be less than "+ hw);
            document.getElementById("txtHeightOrRadius").focus();
            return;
        }
    }
    var inc = parseInt(document.getElementById("txtArcInc").value);
    if (inc < 20 || inc > hw)
    {
        alert("Increments must be greater than 20 and less than 1/2 width\n\r\n\rWith current width of "+ width +" increments must be less than "+ hw);
        document.getElementById("txtArcInc").focus();
        return;
    }
    var radius = 0;
    var arcHeight = 0;
    if (document.getElementById("rbArcRadius").checked)
    {
        radius = hor;
        arcHeight = radius - Math.sqrt((hor * hor) - (hw * hw));
        document.getElementById("spnHeigthOrRadius").innerHTML = "Height ";
        document.getElementById("spnHeigthOrRadius2").innerHTML = Math.round(arcHeight);
    }
    else
    {
        arcHeight = hor;
        var d = Math.sqrt((hor * hor) + (hw * hw)); 
        var a = Math.atan(hw / hor);
        radius = (d / 2) / Math.cos(a);
        document.getElementById("spnHeigthOrRadius").innerHTML = "Radius ";
        document.getElementById("spnHeigthOrRadius2").innerHTML = Math.round(radius);
    }
    var rl = radius - arcHeight;
    var rs = radius * radius;
    var sb = "x 0 ... "+ Math.round(arcHeight).toString();
    for (var i=inc; i<= hw; i += inc)
    {            
        sb += "<br />x "+ i +" ... "+ Math.round(Math.sqrt(rs - (i * i)) - rl);
    }
    document.getElementById("spnArcResults").innerHTML = sb;
    var sweepAngle = (Math.atan(hw / rl) * RAD)* 2;
    document.getElementById("spnSweep").innerHTML = RoundTo(sweepAngle, 2);
    var circleTotalArea = (Math.PI * rs);
    var sliceArea = circleTotalArea / (360 / sweepAngle);
    var area = (sliceArea - (rs * Math.sin(sweepAngle / RAD) / 2)) * .000001;
    document.getElementById("spnArcArea").innerHTML = RoundTo(area, 2);
    var circleCirc = Math.PI * (radius * 2);
    document.getElementById("spnCircleCirc").innerHTML = Math.round(circleCirc);
    var aroundArc = circleCirc / (360 / sweepAngle);
    document.getElementById("spnAroundArc").innerHTML = Math.round(aroundArc);
    var circleArea = (Math.PI * rs) * .000001;
    document.getElementById("spnCircleArea").innerHTML = RoundTo(circleArea, 2); 
}
function RoundTo(val, places)
{
    places = Math.pow(10, places);
    d = Math.round(val * places) / places;
    return d;
}