function val_form( frm )
{
  // these fields must be non-blank (name must be lowercase)
  aNB = new Array(
        'name',
        'email',
        'title',
        'country',
		'descript',
		'qual',
		'cat',
		'hireorg',
		'expire',
		'pass',
		'pass2');

  // these (and all other) fields can be blank (name must be lowercase)
  aB = new Array( 
		'sal',
		'support',
		'phone',
		'fax',
		'postal',
		'street',
		'city',
		'url',
		'comments',
		'deadline',
		'term'); 		
  for (var i=0; i<frm.elements.length; i++)
  {
    if ( frm.elements[i].type.indexOf('select-') != -1 )
      val = frm.elements[i].options[frm.elements[i].selectedIndex].text
    else
      val = frm.elements[i].value
    if ( !is_blank(val) )
      continue;
    f = frm.elements[i].name;
    f = f.toLowerCase();
    //
    // check if field is permitted to be blank
    b = false;
    for (x=0; x<aB.length; x++)
      if ( f.indexOf(aB[x]) != -1 )
      {
        b = true;
        break;
      }
    if ( b )
      continue;
    //
    // check if field should be non-blank
    for (x=0; x<aNB.length; x++)
    {
      if ( f.indexOf(aNB[x]) != -1 )
        if ( is_blank(val) )
        {
          alert(' '+f.toUpperCase()+' is Empty ')
          return false;
        }
    }
  }

  return true;
} 

function is_blank( s )
{
  var s1 = trim(s);
  if ( s1.length == 0 )
    return true;
  var x = '';
  for ( var i=0; i<s1.length; i++ )
  {
    c = s1.substring(i,i+1);
    if ( c != ' ' && c != 't' && c != 'n' && c != 'r' )
      x += c;
  }
  if ( x.length == 0 )
    return true;
  return false;
}

function trim( s )
{
  for ( var i = s.length-1; i >= 0 && (s.charAt(i) == ' ' || s.charAt(i) == 'r' || s.charAt(i) == 'n'); i-- );
  if ( i >= 0 )
    s = s.substring(0,i+1)
  else
    s = \"\";
  if ( s.length > 0 )
  {
    for ( i = 0; i < s.length && (s.charAt(i) == ' ' || s.charAt(i) == 'r' || s.charAt(i) == 'n'); i++ );
    if ( i < s.length )
      s = s.substring(i,s.length)
    else
      s = \"\";
  }
  return s;
} 

