function replSpaces2Undr( anObj ) {
    var sOrig = anObj.value;
    anObj.value = anObj.value.replace( /\s+/g, '_' );
    return ( sOrig != anObj.value );
}

function stripSpaces( anObj ) {
    var sOrig = anObj.value;
    anObj.value = anObj.value.replace( /\s+/g, '' );
    return ( sOrig != anObj.value );
}

function isPasswordsEqual( aP1, aP2 ) {
  return ( aP1.value == aP2.value );
}

function isPasswordNotEmpty( aP1 ) {
  return ( 0 != aP1.value.length );
}

function isEmailCorrect( anEmail ) {
  pGood = /^[\w\.\-]+@[a-zA-Z\d\.\-]+\.[a-zA-Z\d]{2,3}$/i;
  return pGood.test( anEmail.value );
}

function isNameUserCorrect( aNameUser ) {
  pGood = /^[\w\-]+$/i;
  return pGood.test( aNameUser.value );
}

function isFormOK( idPass1, idPass2, idEmail, idNameUser ) {
  var replaced = false;
  var aP1 = document.getElementById( idPass1 );
  var aP2 = document.getElementById( idPass2 );
  var anE = document.getElementById( idEmail );
  var aN = document.getElementById( idNameUser );
  stripSpaces( anE );
  replaced = replSpaces2Undr( aN );
  if( !isEmailCorrect( anE ) ) {
    alert( 'Email is not correct.' );
    return false;
  }
  if( !isNameUserCorrect( aN ) ) {
    alert( 'Username is not correct. It can have dashes, digits and letters only.' );
    return false;
  }
  if( !isPasswordNotEmpty( aP1 ) ) {
    alert( 'Password could not be empty.' );
    return false;
  }
  if( !isPasswordsEqual( aP1, aP2 ) ) {
    alert( 'Passwords do not match.' );
    return false;
  }
  if( replaced ) {
    alert( "Attention - The space in your username has been replaced with a _ (underscore)\nExample:  \"Your_username\" please make sure you include this (underscore) when logging in." );
  }
  return true;
}
