// JavaScript Document
// Elimina los espacios de una cadena
function trim(string)
{
    // Si la cadena no esta vacia
    if(string) {
        return string.replace(/^\s*|\s*$/g, "");
    } else {
        return "";
    }
}

// Dependencias: trim

// Comprueba si una direccion de correo es correcta
function isValidEmailAddress(emailAddress)
{
    // Si es una expresion regular no funciona
    if(!new RegExp(/^test$/).test("test")) {
        return true;
    }

    // Si la direccion esta vacia
    if(trim(emailAddress) == "") {
        return false;
    } else {
        return new RegExp(/^[^@]+@[^@]+\.[^@]{2,}$/).test(trim(emailAddress));
    }
}

function isValidEmail(email, required) 
      {
        if (required==undefined) {   // Si no se especifica, se asume que es requerido
          required=true;
      }
      if (email==null) {
        if (required) {
            return false;
        }
        return true;
      }
      if (email.length==0) { 
        if (required) {
            return false;
        }
        return true;
      }
      if (! allValidChars(email)) // check to make sure all characters are valid
      {  
        return false;
      }
      if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
      } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        return false;
      } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        return false;
    }
    return true;
}

function allValidChars(email) 
{
	var parsed = true;
	var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
	for (var i=0; i < email.length; i++) 
	{
		var letter = email.charAt(i).toLowerCase();
		if (validchars.indexOf(letter) != -1)
			continue;
		parsed = false;
		break;
	}
	return parsed;
}