function validateFields(frm){
  var elements = frm.elements;
  var emailPattern = /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/;
  var integerPattern = /(^-?\d\d*$)/;
  var currencyPattern = /-?[0-9]+\.[0-9]{2}$/;
  for (var i = 0; i < elements.length; i++)
  {
    if (/(^| )checkRequired( |$)/.test(elements[i].className) && elements[i].value == "")
    {
      elements[i].focus();
      alert("Please fill out this field.");
      return false;
    }
    
    if (/(^| )checkOther( |$)/.test(elements[i].className) && elements[i].value == "Other")
    {
      if (elements['other'].value == ""){
        elements['other'].focus();
        alert("Please enter a value in the 'If other please state' field.");
        return false;
      }
    }

    if (/(^| )checkEmail( |$)/.test(elements[i].className) && !emailPattern.test(elements[i].value))
    {
      elements[i].focus();
      alert("Please fill in a valid e-mail address.");
      return false;
    }
    
    if (/(^| )checkInteger( |$)/.test(elements[i].className) && !integerPattern.test(elements[i].value))
    {
      elements[i].focus();
      alert("Please enter a whole number value in this field.");
      return false;
    }
    
    if (/(^| )checkCurrency( |$)/.test(elements[i].className) && !currencyPattern.test(elements[i].value))
    {
      elements[i].focus();
      alert("Please enter a currency value eg 2.99.");
      return false;
    }
  }
  return true;
}
