// version 1.0
// updated 2/21
  function validateForm( frm )
  {
    var errors = "";
    
    if( frm.avx_required )
    {
      var reqs = frm.avx_required.value.split( "," );    
      for( var i = 0; i<= reqs.length - 1; i++ )
      {
        // first check to see if item is even defined
        if( defined( eval( 'frm.'+reqs[i] ) ) )
        {
          // first check to see if item is a radio object because if it is, I need to test each element individually
          if( isRadio( eval( 'frm.'+reqs[i] ) ) )
          {
              var obj = eval( 'frm.'+reqs[i] );
              var itemSelected = false;
              for( var j = 0; j <= obj.length - 1; j++ )
              {
                if( obj[j].checked )itemSelected = true;
              }
              if( !itemSelected )
              {
                if( errors != "" )errors += "\n";
                errors += '\t'+reqs[i]+' is a required field.';
              }
          }
          else
          {
            if( eval( 'frm.'+reqs[i]+'.value==null || frm.'+reqs[i]+'.value==""' ) )
            {
              if( errors != "" )errors += "\n";
              errors += '\t'+reqs[i]+' is a required field.';
            }
          } // END - if( isRadio( eval( 'frm.'+reqs[i] ) ) )
        } // END - if( defined( eval( 'frm.'+reqs[i] ) ) )
      } // END - for( var i = 0; i<= reqs.length - 1; i++ )
    }
    
    if( frm.avx_required_optionals )
    {
      var reqs_opts = frm.avx_required_optionals.value.split( "," );
      for( var i = 0; i<= reqs_opts.length - 1; i++ )
      {
        var flds = reqs_opts[i].split( "|" );
        var exp = "", names = "";
        
        for( var j = 0; j <= flds.length - 1; j++ )
        {
          // first check to see if item is even defined
          if( defined( eval( 'frm.'+flds[j] ) ) )
          {
            if( exp != "" )exp += ' && ';
            exp += '( frm.'+flds[j]+'.value==null || frm.'+flds[j]+'.value=="" )';
            if( names != "" )names += ' or ';
            names += flds[j];
          }
        }
        if( eval( exp ) )
        {
          if( errors != "" )errors += "\n";
          errors += '\tEither '+names+' must be supplied.'; 
        }
      }
     }
    
    if( errors != "" ) 
    {
      alert( 'Please correct the errors noted below:\n\n' + errors + '\n');
      return false;
    }
    else
    {
      return true;
    }
  }
  function isRadio( testObject ) {
    if( isArray( testObject ) )
    {
      if( testObject[ 0 ].type == 'radio' ) return true;
    }
    return false;
  }
  function isArray(testObject) {   
    return defined( testObject[0] ); //return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
  }
  function defined(o) {
    return typeof(o)!="undefined";
  }