	//-----------------------------------------------------------------
	function IsValidLength(object, minChars, maxChars)
		{
		var value=object.value;
		if (value.length < minChars) 
		{
			object.select();         
			object.focus();         
    		alert("Your entry should be " + minChars + " or more characters long.");
			return false;
		}
		else if ( maxChars < value.length) 
		{
			object.select();         
			object.focus();         
    		alert("Your entry should be " + maxChars + " or less characters long.");
			return false;
		}
		return true;
		}
	//-----------------------------------------------------------------
	function IsValidNonBlank(object)
	{
		var str = object.value;  
		// Return false if number field is blank.   
		if (str == ""||str == "NA")
		{         
			object.focus();
			object.select();        			
    		alert("Your entry should not be blank. ");
			return false;         
		} 
		return true;  
	}
	//-----------------------------------------------------------------
	function IsValidRadio(object, errorMsg)
	{
		var option = "unchecked";
		var optionList = "";
		var optionCount=object.length;
		for(var i=0;i<optionCount;i++)
		{
			optionList += object[i].value;
			if(i < optionCount - 1) optionList += ", ";	
			if(object[i].checked) option = object[i].value;
		}
		if(option == "unchecked")
		{
			if (IsValidRadio.arguments.length<2)
			{
	    	errorMsg = "Radio option '" + object[0].name + "' is not set. Value is: " + option + " . Should be one of: " + optionList + ".";
			}
			alert(errorMsg);
			return false;         
		}
		return true;
	}
	//-----------------------------------------------------------------
	function IsValidName(object)
	{
		if(!IsValidNonBlank(object)) return false;
		else if (!IsValidLength(object, 1, 48)) return false; 
		return true;   
	}        
	//-----------------------------------------------------------------
	function IsValidEmailAddress(object)
	{
		var emailParts;
		var emailName;
		var emailLocation;
		var locationParts;
		var str = new String(object.value);
		var emailChar = "\@";
		var atPosition = str.indexOf(emailChar);
		if (atPosition == -1)
		{
    		alert("Your email address is \"" + str + "\". It must contain a " + emailChar);
			return false; 
		} 
		emailParts = str.split(emailChar); 
		emailName = emailParts[0];   
		emailLocation = emailParts[1]; 
		if(emailName == "")
		{
    		alert("Your email address must contain a name before the " + emailChar);
			return false; 
		}  
		if(emailLocation == "")
		{
    		alert("Your email address must contain a location after the " + emailChar);
			return false; 
		}  
		if (emailLocation.indexOf('.') == -1)
		{
    		alert("Your email address must contain one or more '.'s.");
			return false; 
		}
		locationParts =  emailLocation.split('.');
		for(var i=0;i<locationParts.length;i++)
		{
			if (locationParts[i] == "")
			{
    			alert("Your email location must must be in the form 'abc.def.ghij'");
				return false; 
			}
		}
		return true;   
	}
	//-----------------------------------------------------------------
	function IsValidOtherMenu(menuObject, fieldObject)
	{
		var isValid = true;
		if(menuObject.options[menuObject.selectedIndex].value == "other")
		{
			var str = fieldObject.value;  
			// Return false if field is blank.   
			if (str == ""||str == "NA")
			{         
				fieldObject.focus();
				fieldObject.select();        			
				isValid = false;         
    			alert("Your \"other\" text field must not be blank. ");
			}
		}
		return isValid;
	}
	//-----------------------------------------------------------------
	// If the telephone number is not empty
	// make sure the characters are OK.
	// To make a telephone number 'required'
	// add a previous IsValidNonBlank test as well.
	function IsValidTelephoneNumber(textObject)
	{
		var str = textObject.value;  
		// Return false if characters are not '0-9A-Z()-+ '. 
		var charCount =  str.length;
		if(charCount > 0)
		{ 
			if(charCount < 6) 
			{
				alert("Your telephone number should contain 6 or more characters.");
				return false;
			}
			for (var charIndex = 0; charIndex < charCount; charIndex++)
			{      
				var ch = str.charAt(charIndex);
				if(!(("A" <= ch  &&  ch <= "Z" ) 
					|| ("0" <=ch && ch <= "9" ) 
					|| ch == "("  ||  ch == ")"
					|| ch == "-"  ||  ch == " "))
				{         
					textObject.select();         
					textObject.focus();         
					alert("Your telephone number should contain only digits, uppercase alphabetic characters or '(',')','-', or space");
					return false;         
				}      
			}
		}   
		return true;   
	}
	//-----------------------------------------------------------------
	// If the credit card number is not empty
	// make sure the characters are OK.
	// To make a credit card number number 'required'
	// add a previous IsValidNonBlank test as well.
	
	function IsValidCreditCardNumber(textObject, menuObject)
	{
		var str = textObject.value;  
		// Return false if characters are not '0-9A-Z()-+ '. 
		var charCount =  str.length;
		if(charCount > 0)
		{ 
			if(charCount < 6) 
			{
				alert("Your telepone number should contain 6 or more characters.");
				return false;
			}
			for (var charIndex = 0; charIndex < charCount; charIndex++)
			{      
				var ch = str.charAt(charIndex);
				if(!(("A" <= ch  &&  ch <= "Z" ) 
					|| ("0" <=ch && ch <= "9" ) 
					|| ch == " "))
				{         
					textObject.select();         
					textObject.focus();         
					alert("Your credit card number should contain only \ndigits or uppercase alphabetic characters. ");
					return false;         
				}      
			}
		}   
		return true;   
	}
	//-----------------------------------------------------------------
	// If the credit card number is not empty
	// make sure the characters are OK.
	// To make a credit card number number 'required'
	// add a previous IsValidNonBlank test as well.
	
	function IsValidDate(textObject)
	{
		var str = textObject.value;  
		// Return false if characters are not '0-9A-Za-z()-/ '. 
		var charCount =  str.length;
		if(charCount > 0)
		{ 
			if(charCount < 6) 
			{
				alert("Your telephone number should contain 6 or more characters.");
				return false;
			}
			for (var charIndex = 0; charIndex < charCount; charIndex++)
			{      
				var ch = str.charAt(charIndex);
				if(!(("A" <= ch  &&  ch <= "Z" ) 
					|| ("a" <=ch && ch <= "z" ) 
					|| ("0" <=ch && ch <= "9" ) 
					|| ch == "/" || ch == "-" || ch == ":" ))
				{         
					textObject.select();         
					textObject.focus();         
					alert("Your credit card number should contain only \ndigits or uppercase alphabetic characters. ");
					return false;         
				}      
			}
		}   
		return true;   
	}
	
	//-----------------------------------------------------------------
