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;
}

function profile_Validator(theForm) {
  //alert("Hello, I'm the profile validator");

  if ((theForm.firstname.value.length==0) || (theForm.firstname.value==null)) {
    alert('Please enter a value for the "First Name" field.');
    theForm.firstname.focus();
    return false;
  }

  if ((theForm.lastname.value.length==0) || (theForm.lastname.value==null)) {
    alert('Please enter a value for the "Last Name" field.');
    theForm.lastname.focus();
    return false;
  }

  if (!isValidEmail(theForm.email.value)) {
    alert('Please enter a valid email address in the "Email" field.');
    theForm.email.focus();
    return false;
  }

  if (theForm.email.value != theForm.confirm_email.value) {
    alert('Your confirmation email address does not match your email address.');
    theForm.confirm_email.focus();
    return false;
  }

  if ((theForm.password.value.length==0) || (theForm.password.value==null)) {
    alert('Please enter a value for the "Password" field.');
    theForm.password.focus();
    return false;
  }
  
  if (theForm.password.value != theForm.confirm_password.value) {
    alert('Your password does not match your password confirmation.');
    theForm.password.focus();
    return false;
  }

/*
  if (theForm.password.value.length > 10) {
    alert('Please enter at most 10 characters in the "Password" field.');
    theForm.password.focus();
    return false;
  }
*/

   if (theForm.Major.selectedIndex == 0) {
    alert('The first "Major" option is not a valid selection.  Please choose one of the other options.');
    theForm.Major.focus();
    return false;
  }

  if ((theForm.phone.value.length==0) || (theForm.phone.value==null)) {
    alert('Please enter a value for the "Phone Number" field.');
    theForm.phone.focus();
    return false;
  }

  return true;
}

