function findObj(n, d)
{
  var p,i,x;
  if( !d )
  {
    d = document;
  }
  if( ( p = n.indexOf("?") ) > 0 && parent.frames.length )
  {
    d = parent.frames[n.substring(p+1)].document;
    n = n.substring(0,p);
  }
  if( !( x = d[n] ) && d.all )
  {
    x = d.all[n];
    for( i = 0; !x && i < d.forms.length; i++ )
    {
      x = d.forms[i][n];
    }
    for( i=0; !x && d.layers && i < d.layers.length; i++ )
    {
      x = findObj( n, d.layers[i].document );
    }
  }
  return x;
}


function validateFormFields()
{
 var curr_token, flag;
 var i, errors = '', args=validateFormFields.arguments;
 
 for (i = 0; i < ( args.length - 1 ); i += 3)
 {
  flag = args[i+1];
  if( flag != 'S' )
  {
    curr_token = findObj( args[i] );
  }

  if( flag == 'R' )
  {
    if( curr_token.value == "" || curr_token.value == "-1" )
    {
      errors += '- ' + args[i+2] + ' is required.\n';
    }
  }

  if( flag == 'RC' ) 
  {
    next_token = findObj( args[i+3] );
    // A password is required so check both
    if( curr_token.value != "" && next_token.value != "" )
    {
      if( curr_token.value != next_token.value )
      {
        errors += '- Passwords dont match.\n';
      }
    }
    else
    {
      errors += '- Please fill-in both password fields.\n';
    }
  }
  if( flag == 'C' )
  {
    // A password may not be required here
    if( curr_token.value != "" )
    {
      next_token = findObj( args[i+3] );
      if( curr_token.value != next_token.value )
      {
        errors += '- Passwords dont match.\n';
      }
    }
  }

  if( flag == 'C2' )
  {
    // A password may not be required here
    if( curr_token.value != "" )
    {
      next_token = findObj( args[i-3] );
      if( curr_token.value != next_token.value )
      {
        errors += '- Passwords dont match.\n';
      }
    }
  }
 }
 if( errors )
 {
  alert( 'The following error(s) occurred:\n' + errors );
 }
 document.returnValue = ( errors == '' );
}
