/*
Copyright 2005, 4word systems
All rights reserved.

This software may not be reproduced or distributed in any form without the express 
written consent of 4word systems or it's designee.

Revision 1.1:  20050729 Added underscore to list of valid characters
*/

function isValidEmail(email, required) {
  var i;
    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;
    }

    var emails;

    if (email.indexOf(",") > 0) { //  could be a list
      emails = email.split(/\s*,\s*/);
    } else {
      emails = new Array (email);
    }

    for (i=0; i<emails.length; i++) {
      var the_email = emails[i];
      if (! allValidChars(the_email)) {  // check to make sure all characters are valid
          return false;
      }
      if (the_email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
          return false;
      } else if (the_email.lastIndexOf(".") <= the_email.indexOf("@")) {  // last dot must be after the @
          return false;
      } else if (the_email.indexOf("@") == the_email.length) {  // @ must not be the last character
          return false;
      } else if (the_email.indexOf("..") >=0) { // two periods in a row is not valid
          return false;
      } else if (the_email.indexOf(".") == the_email.length) {  // . must not be the last character
          return false;
      }
    }
    return true;
}

function allValidChars(email) {
  var i;
  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;
}


