function calcDA()
{
  document.form1.danetcost.value =
    document.form1.dagst.value =
      document.form1.datotal.value = '';

  if ( document.form1.da.value )
  {
    if ( !integerRE.exec( document.form1.da.value ) )
    {
      alert( 'Number of users must be an integer, or blank (none)' );
      document.form1.da.focus();
    }
    else
    {
      if ( document.form1.da.value > 100 )
      {
        alert( 'Contact Learn Canada for Digital Architecture ' +
               'subscriptions of more than 100 users' );
        document.form1.da.value = '';
      }
      else
      {
        document.form1.danetcost.value = formatCurrency( calcDAsubtotal() );
        document.form1.dagst.value =
                 formatCurrency( document.form1.danetcost.value * 0.07 );

        document.form1.datotal.value =
                 formatCurrency( 1.0 * document.form1.danetcost.value +
                                 1.0 * document.form1.dagst.value );
      }
    }
  }

  updateGrandTotal()
}
function calcDAsubtotal()
{
  daUsers = document.form1.da.value;

  if ( 1 <= daUsers && daUsers <= 5 )
  {
    return( 29 * daUsers );
  }
  if ( 6 <= daUsers && daUsers <= 25 )
  {
    return( 23 + 55 * daUsers );
  }
  if ( 26 <= daUsers && daUsers <= 50 )
  {
    return( 21 + 45 * daUsers );
  }
  if ( 51 <= daUsers && daUsers <= 100 )
  {
    return( 18 + 40 * daUsers );
  }
  return '';
}
function calcEP()
{
  document.form1.epnetcost.value =
    document.form1.epgst.value =
      document.form1.eptotal.value = '';

  if ( document.form1.ep.value )
  {
    if ( !integerRE.exec( document.form1.ep.value ) )
    {
      alert( 'Number of users must be an integer, or blank (none)' );
      document.form1.ep.focus();
    }
    else
    {
      if ( document.form1.ep.value > 25 )
      {
        alert( 'Contact Learn Canada for Easy Project ' +
               'subscriptions of more than 25 users' );
        document.form1.ep.value = '';
      }
      else
      {
        document.form1.epnetcost.value = formatCurrency( calcEPsubtotal() );
        document.form1.epgst.value =
                 formatCurrency( document.form1.epnetcost.value * 0.07 );

        document.form1.eptotal.value =
                 formatCurrency( 1.0 * document.form1.epnetcost.value +
                                 1.0 * document.form1.epgst.value );
      }
    }
  }

  updateGrandTotal()
}
function calcEPsubtotal()
{
  epUsers = document.form1.ep.value;

  if ( 1 <= epUsers && epUsers <= 5 )
  {
    return( 500 );
  }
  if ( 6 <= epUsers && epUsers <= 25 )
  {
    return( 500 + 65 * epUsers );
  }
  if ( 26 <= epUsers && epUsers <= 50 )
  {
    return( 700 + 60 * epUsers );
  }
  if ( 51 <= epUsers && epUsers <= 100 )
  {
    return( 700 + 55 * epUsers );
  }
  if ( 101 <= epUsers && epUsers <= 500 )
  {
    return( 1200 + 50 * epUsers );
  }
  return '';
}
function calcSW()
{
  document.form1.swnetcost.value =
    document.form1.swgst.value =
      document.form1.swtotal.value = '';

  if ( document.form1.sw.checked )
  {
    document.form1.swnetcost.value = formatCurrency( 80 );
    document.form1.swgst.value =
                 formatCurrency( document.form1.swnetcost.value * 0.07 );

    document.form1.swtotal.value =
                 formatCurrency( 1.0 * document.form1.swnetcost.value +
                                 1.0 * document.form1.swgst.value );
  }

  updateGrandTotal()
}
function calcTS( module )
{
  subTotal = calcTSsubtotal( module );

  if ( 1.0 * subTotal == 0 )
  {
    document.form1.tsnetcost.value =
      document.form1.tsgst.value =
        document.form1.tstotal.value = '';

    updateGrandTotal()

    return;
  }

  document.form1.tsnetcost.value = formatCurrency( subTotal );
  document.form1.tsgst.value =
                 formatCurrency( document.form1.tsnetcost.value * 0.07 );

  document.form1.tstotal.value =
                 formatCurrency( 1.0 * document.form1.tsnetcost.value +
                                 1.0 * document.form1.tsgst.value );

  updateGrandTotal()
}
function calcTSsubtotal( module )
{
  if ( module == 0 )
  {
    document.form1.ts1.checked = true;
    document.form1.ts2.checked = true;
    document.form1.ts3.checked = true;
    document.form1.ts4.checked = true;
    document.form1.ts5.checked = true;
    document.form1.ts6.checked = true;
  }

  if ( document.form1.ts1.checked &&
       document.form1.ts2.checked &&
       document.form1.ts3.checked &&
       document.form1.ts4.checked &&
       document.form1.ts5.checked &&
       document.form1.ts6.checked )  return 295;

  subtotal = 0;
  if ( document.form1.ts1.checked )  subtotal += 100;
  if ( document.form1.ts2.checked )  subtotal += 50;
  if ( document.form1.ts3.checked )  subtotal += 50;
  if ( document.form1.ts4.checked )  subtotal += 50;
  if ( document.form1.ts5.checked )  subtotal += 50;
  if ( document.form1.ts6.checked )  subtotal += 50;
  return subtotal;
}
function updateGrandTotal()
{
  document.form1.grandtotal.value =
             formatCurrency( 1.0 * document.form1.datotal.value +
                             1.0 * document.form1.eptotal.value +
                             1.0 * document.form1.swtotal.value +
                             1.0 * document.form1.tstotal.value );
  if ( 1.0 * document.form1.grandtotal.value == 0 )
  {
    document.form1.grandtotal.value = '';
  }
}
function validate()
{
  // check that at least SOMETHING was ordered
  if ( 1.0 * document.form1.grandtotal.value == 0 )
  {
    alert( 'Error - This is a null order!' );
    document.form1.da.focus();
    return false;
  }
}
