

function getFormElement( form, element ) {
  if( document.getElementById ) return document.getElementById( element );
  if( document.all ) return document.all[ element ];
  if( document.layers ) return document[ form ][ element ];
  return null;
}

function validateFields() {

  // initializations
  var form = validateFields.arguments[ 0 ];
  var output = "";
  var ok = true;

  // retrieve each field in the given list
  for( var i = 1; i < validateFields.arguments.length; i++ ) {

    var field = validateFields.arguments[ i ];
    var xtype = field.charAt( 0 );
    field = field.substring( 1, field.length );

    var ref = getFormElement( form, field );

    switch( xtype ) {

      case 'T':
        if( ! validText( ref.value ) ) {
          ok = false;
          output = output + "\nThe field '" + field + "' is empty.";
        }
        break;

      case 'N':
        if( ! validNumber( ref.value ) ) {
	  ok = false;
          output = output + "\nThe field '" + field + "' must be a number.";
        }
        break;

      case 'E':
        if( ! validEmail( ref.value ) ) {
	  ok = false;
          output = output + "\nThe field '"+ field + "' must be an e-mail adress.";
	}
        break;

    }
  }


  // send results and function result
  if( ! ok ) alert( "Oops..." + output );
  return ok;

}


function validText( text ) {
  return ( text != "" );
} 

function validNumber( number ) {
  if ( number == "" ) return false;
  for( var i = 0; i < number.length; i++ ) {
    var ch = number.charAt( i );
    if( ch < '0' || ch > '9' ) return false;
  }
  
  return true;
}

function validEmail( email ) {

  // check 'at'
  var x = email.indexOf( '@' );
  if( x < 0 ) return false;

  var x2 = email.lastIndexOf( '.' );
  if( x2 == email.length - 1 || x2 < x ) return false;
  return true;

}


