
// johonb@gmail.com
// Created:  2007.06.12

function formval( aform )
{

  var valid = true;
  var field;
  var val;

  var elements = aform.elements;

  for( var i=0; i < elements.length; i++ )
  {
    var elem = elements[ i ];

    if( toValidate( elem.name ) )
    {
      var valid2 = manCheck( elem );

      if( ! valid2 )
      {
        valid = false;
      }
    }
  }

  return valid;
}

function toValidate( elemName )
{
  for( var i=0; i < manFields.length; i++ )
  {
    if( elemName == manFields[ i ] )
    {
      return true;;
    }
  }

  return false;
}

function manCheck( field )
{
  var valid = true;
  var val = document.getElementById( field.name + '_er' );

  // Reset error
  val.innerHTML = 'Required';

  valid = field.value && specialVal( field, val );

  if( ! valid )
  {
    val.style.display = "block";
    valid = false;
  }
  else
  {
    val.style.display = "none";
  }

  return valid;
}

// Add specialized validation here
function specialVal( field, val )
{
  
  var rc = true;
  var name = field.name;
  var value = field.value;
  var pos = -1;

  // Is email field?
  if( name.indexOf( 'email' ) >= 0 )
  { 
    pos = value.indexOf( '@' );

    if( value.indexOf( '@' ) <= 0 )
    {
      val.innerHTML = 'Must be valid email address';
      rc = false;
    }
    else if( pos == value.length-1 ) 
    {
      val.innerHTML = "Email must have a valid domain after '@'";
      rc = false;
    }
  } // Valid number?
  else if( name.indexOf( 'employees' ) >= 0 )
  {
    var nof = field.value.replace( /^\s+|\s+$/g, '' ) ;

    if( isNaN( parseInt( nof ) ) || ! isNumeric( nof ) )
    {
      val.innerHTML = 'Invalid number';
      rc = false;
    }
  }

  return rc;
}

// Check for valid numeric strings	
function isNumeric( strString )
{
  var strValidChars = "0123456789";
  var strChar;
  var blnResult = true;

  if( strString.length == 0 ) return false;

  // Test strString consists of valid digits listed above
  for( i = 0; i < strString.length && blnResult; i++ )
  {
    strChar = strString.charAt( i );

    if( strValidChars.indexOf( strChar ) == -1 )
    {
      blnResult = false;
    }
  }

  return blnResult;
}
