function Validate_String(string, return_invalid_chars)
 {
	 valid_chars = '1234567890-_.^~abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	 invalid_chars = '';
	 
	 if(string == null || string == '')
	    return(true);
	 
	 //For every character on the string.   
	for(index = 0; index < string.length; index++)
    {
    char = string.substr(index, 1);                        
    
    //Is it a valid character?
    if(valid_chars.indexOf(char) == -1)
      {
      //If not, is it already on the list of invalid characters?
      if(invalid_chars.indexOf(char) == -1)
        {
        //If it's not, add it.
        if(invalid_chars == '')
           invalid_chars += char;
        else
           invalid_chars += ', ' + char;
        }
      }
    }                     
	    
	//If the string does not contain invalid characters, the function will return true.
	//If it does, it will either return false or a list of the invalid characters used
	//in the string, depending on the value of the second parameter.
	if(return_invalid_chars == true && invalid_chars != '')
	{
		last_comma = invalid_chars.lastIndexOf(',');
	
		if(last_comma != -1)
		  invalid_chars = invalid_chars.substr(0, $last_comma) + 
		  ' and ' + invalid_chars.substr(last_comma + 1, invalid_chars.length);
	          
		return(invalid_chars);
	}
	else
		return(invalid_chars == ''); 
 }


function Validate_Email_Address(email_address)
{
	//Assumes that valid email addresses consist of user_name@domain.tld
	at = email_address.indexOf('@');
	dot = email_address.indexOf('.',at+1);
	lastdot = email_address.lastIndexOf('.');
	
	if(at == -1 || 
		dot == -1 || 
		dot == at + 1 ||
		dot == 0 || 
		lastdot == email_address.length - 1
	)
		return(false);
	
	user_name = email_address.substr(0, at);
	domain_name = email_address.substr(at + 1, email_address.length);                  
	
	if(Validate_String(user_name) === false || 
	Validate_String(domain_name) === false
	)
		return(false);                     
	
	return(true);
	
}

