
var soilArea = 0;
var calcfactor = 1;

function formatSoilVal( value )
{
  value = Math.round(value*100)/100;

  if( value > 1000 )
  {
    var bils  = Math.floor(value/1000000000);
    var mils  = Math.floor((value - bils*1000000000)/1000000);
    var thous = Math.floor((value - mils*1000000 - bils*1000000000)/1000);
    var rest  = Math.round((value - thous*1000 - mils*1000000 - bils*1000000000)*100)/100;

    if( rest < 10 )
      rest = '00'+rest;
    else if( rest < 100 )
      rest = '0'+rest;

    if( bils > 0 )
    {
      value = bils+','+zeroPad( mils, 3 )+','+zeroPad( thous, 3 )+','+rest;
    }
    else if( mils > 0 )
    {
      value = mils+','+zeroPad( thous, 3 )+','+rest;    
    }
    else 
      value = thous+','+rest;
  }

  return value;
}

function calcShowMaterial( material )
{
  switch( material )
  {
    // soil
    case( 1 ):
      Dom.get('calc_units').innerHTML = "cubic yards";
      calcfactor = 1;
      break;

    // sand
    case( 2 ):
      Dom.get('calc_units').innerHTML = "tons";
      calcfactor = 1.5;
      break;

    // concrete
    case( 3 ):
      Dom.get('calc_units').innerHTML = "tons";
      calcfactor = 2;
      break;
  }
  calcVolume();
}

function calcArea( shape )
{
  // square
  if( shape == 1 )
  {
    var l = getElement('calc_l').value;
    var w = getElement('calc_w').value;

    if( l < 0 || w < 0 || isNaN(l) || isNaN(w) )
      soilArea = 0;
    else
      soilArea = l*w;

    getElement( 'calc_area_disp_sq' ).innerHTML = formatSoilVal( soilArea ); 
  }
  // circle
  else if( shape == 2 )
  {
    var d = getElement('calc_d').value;

    if( d < 0 || isNaN(d))
      soilArea = 0;
    else
      soilArea = Math.PI*(d/2)*(d/2);

    getElement( 'calc_area_disp_cir' ).innerHTML = formatSoilVal( soilArea ); 
  }
  // other
  else
  {
    var a = getElement('calc_a').value;

    if( isNaN(a) || a < 0 )
      soilArea = 0;
    else
      soilArea = a;
  }

  // calculate the volume
  calcVolume();
}


function calcVolume( )
{
  var h = getElement('calc_h').value;

  if( h < 0 || isNaN(h) )
    h = 0;

  var v = h*soilArea/324*calcfactor;

  getElement( 'calc_area_disp_vol' ).innerHTML = formatSoilVal( v );
}


function calcShowShape( shape )
{
  if( shape == 1 )
  {
    getElement('soil_calc_sq').style.display = "block";
    getElement('soil_calc_cir').style.display = "none";
    getElement('soil_calc_other').style.display = "none";
  }
  else if( shape == 2 )
  {
    getElement('soil_calc_sq').style.display = "none";
    getElement('soil_calc_cir').style.display = "block";
    getElement('soil_calc_other').style.display = "none";
  }
  else
  {
    getElement('soil_calc_sq').style.display = "none";
    getElement('soil_calc_cir').style.display = "none";
    getElement('soil_calc_other').style.display = "block";
  }

  calcArea( shape );
}
