/*
    Copyright 2004, 4word systems - http://www.4wordsystems.com
    This is FREE code.  Use and/or distribute at-will.

    Email questions or comments to sszettella@4wordsystems.com

    Decent email address validation.  

    Function assumes the email passed in is required, unless "false" is 
    passed as the second argument.

    First, all characters are checked to make sure they are valid for
    an email address.

    Second, we make sure there is an "@" character present, and it is not in the 
    first position.

    Third, we check to be sure that the last "." is after the "@" character

    Last, we make sure the "@" or "." characters are not the last character in the address.
*/

function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
        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.lastIndexOf("@") == email.length-1) {  // @ must not be the last character
        return false;
    } else if (email.lastIndexOf(".") == email.length-1) {  // . 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;
}
