function check_product_quantities(theForm)
{
  var allOK = true;
  for(var i = 0; i < product_limits.length; i++)
  {
      var p = product_limits[i];
      var re = new RegExp('^Quantities\\[' + p.StockCode + '(\\]|$)');

      for(var j = 0; j < theForm.elements.length; j++)
      {
        if(theForm.elements[j].name.match(re))
        {
          if(!check_product_quantity(parseInt(theForm.elements[j].value), p.min, p.max, p.mult, p.name))
          {
            allOK = false;
          }
        }
      }
  }
  return allOK;
}

function check_product_quantity(value, min, max, mult, name)
{
  if(isNaN(value) )
  {
    alert('Please enter a quantity for "' + name + '" before continuing, enter 0 if you wish to remove it.');
    return false;
  }

  if(max && max < value)
  {
    alert('Sorry, the maximum order for "' + name + '" is ' + max + '.');
    return false;
  }

  if(min && min > value)
  {
    alert('Sorry, this minimum order for "' + name + '" is ' + min + '.');
    return false;
  }

  if(mult && value % mult)
  {
    var nextVal = Math.floor(value / mult) ? Math.floor(value / mult)  * mult : mult;
    alert('Sorry, the quantity of "' + name + '" you order must be a multiple of ' + mult + ', try ' + nextVal + '.');
    return false;
  }

  return true;
}