//DESCRIPTION: 
//var convRatio = 0.4536/(0.3048*0.3048*0.3048);		//kgs/cubic meter; 1 lb = 0.4536 kg; 1 foot = 0.3048 meter.
var convRatio  = 0.4536/Math.pow(0.9144, 3);		//kgs/cubic meter; 1 lb = 0.4536 kg; 1 yard = 0.9144 meter.
var foot2yard  = 0.3333;
var lb2kg      = 0.4536;
var yard2meter = 0.9144;
var inch2foot  = 1/12;

//Aggregate calculator for Quarries
function CalculateAggregate() 
{
    var tempString, tempVal, tempFloat, parsecheck, tempFloat2, parsecheck2;
    var len, width, thick, dens, total;
    var localConvert, foot2YardConvert, tonCorrection, totalStr;
     
    for (var i = 1; i <= 5; i++) {
    
    	if ((i != 3) && (i != 4))
    	{
		tempString = "calcAgg" + i;
		tempVal    = document.getElementById(tempString).value;
		
		tempFloat  = parseFloat(tempVal);
		parsecheck = "" + tempFloat;
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 4 input fields.");
			return false;
		}
	}
	
	// The thickness fields (feet and inches) are allowed to have one field empty/blank/=0, as long as the other one is not.
	tempFloat = parseFloat(document.getElementById('calcAgg3').value);
	parsecheck = "" + tempFloat;
	
	tempFloat2 = parseFloat(document.getElementById('calcAgg4').value);
	parsecheck2 = "" + tempFloat2;
	
	if (tempFloat <= 0 || parsecheck == "NaN") 
	{
		if (tempFloat2 <= 0 || parsecheck2 == "NaN")
		{
			window.alert("Please enter a positive number in each of the 4 input fields.");
			return false;
		}
	}
    }
    
    if (document.getElementById('calcUnitSelected').value == 0)
    {
		// US Standard
    	localConvert     = 12;	// 12 inches = 1 foot
    	tonCorrection    = 2000;
			foot2YardConvert = Math.pow(foot2yard, 3);
    	totalStr = "Total Tons Required: ";
    } else
    {
		// Metric
    	localConvert     = 100 	// 100 cm = 1 meter
    	tonCorrection    = 1000; 
			foot2YardConvert = 1;
    	totalStr = "Total Metric Tons Required: ";
    }
    
    len   = parseFloat (document.getElementById('calcAgg1').value);
    width = parseFloat (document.getElementById('calcAgg2').value);
    
    // Insert a "0" to guard against an empty field
    // Add inches to feet, or cm to meter.
    thick = parseFloat ("0" + document.getElementById('calcAgg3').value) + 
		   (parseFloat ("0" + document.getElementById('calcAgg4').value)/localConvert);
    
    dens  = parseFloat (document.getElementById('calcAgg5').value);
    total = len * width * thick * dens * (foot2YardConvert/tonCorrection);
 
    document.getElementById('result').value = totalStr + formatvalue(total,7);
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
    
    return true;   
}

//Concrete Footing calculator
function CalculateConcreteFooting() 
{
    var tempString, tempVal, tempFloat, parsecheck;
    var len, width, depth, total;
    var beginStr, endStr;
  
    for (var i = 1; i <= 3; i++) 
	{
       	tempString = "calcAgg" + i;
		tempVal    = document.getElementById(tempString).value;
	
		tempFloat  = parseFloat(tempVal);
		parsecheck = "" + tempFloat;
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 3 input fields.");
			return false;
		}
    }
         
    beginStr = " ";
    
    len   = parseFloat (document.getElementById('calcAgg1').value);
    width = parseFloat (document.getElementById('calcAgg2').value);
    depth = parseFloat (document.getElementById('calcAgg3').value);
        
    total  = len * width * depth;
	
    if (document.getElementById('calcUnitSelected').value == 0)
    {
    	endStr = " cubic yards of concrete.";
    	total  = (total*inch2foot*inch2foot) * Math.pow(foot2yard, 3);
    } else
    {
    	endStr = " cubic meters of concrete.";
    }
    
    document.getElementById('result').value = beginStr + formatvalue(total,7) + endStr;
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
           
    return true;   
}

//Concrete Round Column calculator
function CalculateConcreteRoundColumn() 
{
    var tempString, tempVal, tempFloat, parsecheck;
    var depth, diameter, total;
    var beginStr, endStr;
  
    for (var i = 1; i <= 2; i++) 
	{
       	tempString = "calcAgg" + i;
		tempVal = document.getElementById(tempString).value;
	
		tempFloat = parseFloat(tempVal);
		parsecheck = "" + tempFloat
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 2 input fields.");
			return false;
		}
    }
         
    beginStr = " ";
    
    depth    = parseFloat (document.getElementById('calcAgg1').value);
    diameter = parseFloat (document.getElementById('calcAgg2').value);
    
    total = Math.PI * Math.pow(((diameter*inch2foot) / 2), 2) *  depth;
	
    if (document.getElementById('calcUnitSelected').value == 0)
    {
    	endStr = " cubic yards of concrete.";
    	total  = total * Math.pow(foot2yard, 3);
    } else
    {
    	endStr = " cubic meters of concrete.";
    }
    
    document.getElementById('result').value = beginStr + formatvalue(total,7) + endStr;
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
           
    return true;   
}

//Concrete Slab calculator
function CalculateConcreteSlab() 
{
    var tempString, tempVal, tempFloat, parsecheck;
    var len, width, thick, total;
    var beginStr, endStr;
 
    for (var i = 1; i <= 3; i++) 
	{
		tempString = "calcAgg" + i;
		tempVal = document.getElementById(tempString).value;
	
		tempFloat = parseFloat(tempVal);
		parsecheck = "" + tempFloat
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 3 input fields.");
			return false;
		}
    }
         
    beginStr = " ";
    
    len   = parseFloat (document.getElementById('calcAgg1').value);
    width = parseFloat (document.getElementById('calcAgg2').value);
    thick = parseFloat (document.getElementById('calcAgg3').value);
    
    total  = len * width * thick;
	
    if (document.getElementById('calcUnitSelected').value == 0)
    {
    	endStr = " cubic yards of concrete.";
    	total  = (total*inch2foot) * Math.pow(foot2yard, 3);
    } else
    {
    	endStr = " cubic meters of concrete.";
    }
    
    document.getElementById('result').value = beginStr + formatvalue(total,7) + endStr;
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
           
    return true;   
}

//Concrete Slab on Grade calculator
function CalculateConcreteSlabOnGrade() 
{
    var tempString, tempVal, tempFloat, parsecheck;
	var slabLen, slabWidth, slabThick;
    var footLen, footWidth, footThick, total;
    var beginStr, endStr;
 
    for (var i = 1; i <= 6; i++) 
	{
       	tempString = "calcAgg" + i;
		tempVal = document.getElementById(tempString).value;
	
		tempFloat = parseFloat(tempVal);
		parsecheck = "" + tempFloat
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 6 input fields.");
			return false;
		}
	}
         
    beginStr = " ";
    
    slabLen   = parseFloat (document.getElementById('calcAgg1').value);
    slabWidth = parseFloat (document.getElementById('calcAgg2').value);
    slabThick = parseFloat (document.getElementById('calcAgg3').value);
	
    footLen   = parseFloat (document.getElementById('calcAgg4').value);
    footWidth = parseFloat (document.getElementById('calcAgg5').value);
    footThick = parseFloat (document.getElementById('calcAgg6').value);
        
    if (document.getElementById('calcUnitSelected').value == 0)
    {
    	endStr = " cubic yards of concrete.";
    	total  = (slabLen * slabWidth * (slabThick*inch2foot) * Math.pow(foot2yard, 3)) +
		 (footLen * (footWidth*inch2foot) * (footThick*inch2foot) * Math.pow(foot2yard, 3));
    } else
    {
    	endStr = " cubic meters of concrete.";
    	total  = (slabLen * slabWidth * slabThick) + 
				 (footLen * footWidth * footThick);
    }
    
    document.getElementById('result').value = beginStr + formatvalue(total,7) + endStr;
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
           
    return true;   
}

//Concrete Wall calculator
function CalculateConcreteWall() 
{
    var tempString, tempVal, tempFloat, parsecheck;
    var len, width, thick, total;
    var beginStr, endStr;
 
    for (var i = 1; i <= 3; i++) 
	{
       	tempString = "calcAgg" + i;
		tempVal = document.getElementById(tempString).value;
	
		tempFloat = parseFloat(tempVal);
		parsecheck = "" + tempFloat
		if (tempFloat <= 0 || parsecheck == "NaN") 
		{
			window.alert("Please enter a positive number in each of the 3 input fields.");
			return false;
		}
    }
         
    beginStr = " ";
    
    len   = parseFloat (document.getElementById('calcAgg1').value);
    width = parseFloat (document.getElementById('calcAgg2').value);
    thick = parseFloat (document.getElementById('calcAgg3').value);
        
    total  = len * width * thick;
	
    if (document.getElementById('calcUnitSelected').value == 0)
    {
    	endStr = " cubic yards of concrete.";
    	total  = (total*inch2foot) * Math.pow(foot2yard, 3);
    } else
    {
    	endStr = " cubic meters of concrete.";
    }
    
    document.getElementById('result').value = beginStr + formatvalue(total,7) + endStr;
    var answer_block = document.getElementById("answer");
    answer_block.style.display = 'block';
           
    return true;   
}

function formatvalue(input, rsize) {
   var invalid = "**************************";
   var nines   = "999999999999999999999999";
   var strin   = "" + input;
   var fltin   = parseFloat(strin);
   
   if (strin.indexOf("e") != -1 || fltin > parseFloat(nines.substring(0,rsize)+".4"))
      return invalid.substring(0, rsize);
   
   if (strin.length <= rsize) return strin;
   
   var rounded = "" + (fltin + (fltin - parseFloat(strin.substring(0, rsize))));
   
   return rounded.substring(0, rsize);
}

function SetDensity(unitFlag, densityField, densityValue)
{
    // unitFlag to show fields are for Standard or Metric
    // density is related to the type of base rock or drain rock
   
    if (unitFlag==0)
    {
    	document.getElementById(densityField).value = densityValue;				// Standard
    } else
    {
    	document.getElementById(densityField).value = formatvalue(densityValue * convRatio, 7);	// Metric
    }
}
   
// -->
