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('.');
	
	if(at == -1 || 
				dot == -1 || 
				dot <= at + 1 ||
				dot == 0 || 
				dot == 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);
	}