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.indexOf("@") == email.length) {  // @ must not be the last character
	        return false;
	    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
		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;
	}
