function gotFocus(obj, s)
{
	obj.style.backgroundColor = "#F8FFCC";
	window.status = s;
	return;
}

function lostFocus(obj)
{
	obj.style.backgroundColor = "#FFFFFF";
	window.status = "";
	return;
}

function lostFocusRadio(obj)
{
	obj.style.backgroundColor = "#DDDBDB";
	window.status = "";
	return;
}

function isEmpty(s)
{
	// This function returns true if the argument is empty, otherwise false

	var whitespace = " \t\n\r";
	var i;
	if ((s == null) || (s.length == 0)) return true;

	// search string looking for characters that are not whitespace
	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1)
			return false;
	}

	// all characters are whitespace
	return true;
}

function CheckRadioControl(obj)
{
	// This checks a radio control passed in as obj and returns the index that is checked

	var indexchecked = -1; // -1 is the value for nothing checked
	for (var i = 0; i < obj.length; i++)
		if (obj[i].checked)
		{
			indexchecked = i;
			break;
		}
	return indexchecked;
}

function goodEmail(value)
{
	// This function checks a few facts about email addresses to reject obviously wrong entries
	// This function returns true if the email address is good, otherwise false
		
	if ((value.indexOf("@") == -1) || (value.indexOf("@") != value.lastIndexOf("@")))
		return false;  // no @ symbol or more than one @ symbols
		
	if ((value.indexOf("@") == 0) || (value.indexOf("@") == value.length - 1))
		return false;  // @ symbol at first or last position
		
	if (value.indexOf(" ") != -1)
		return false;  // spaces in address

//	if (value.length < 5)
//		return false;  // length of address < 5

//	if ((value.indexOf(".") == -1) || (value.lastIndexOf(".") - value.indexOf("@")) < 2)
//		return false;  // no . symbol or characters between last . and @ fewer than 2

//	if (value.indexOf(".") == value.length - 1)
//		return false;  // . symbol is at last position

//	for (var i = 0; i < value.length; i++)
//		if ("`!#$%^&*()=+[{]}\|;:'<,>/?".indexOf(value.charAt(i)) != -1)
//			return false;  // contains other illegal characters

	return true;  // email address is valid
}

function RemoveBlanks(value)
{
	// This function removes leading and trailing blanks from a string

	if (value == "") return value;

	// Remove leading blanks
	while (value.charAt(0) == " ")
		value = value.substring(1);
	if (value == "") return value;

	// Remove trailing blanks
	while (value.charAt(value.length - 1) == " ")
		value = value.substring(0, value.length - 1);

	return value;
}

function ValidateRequestForm()
{
	// find errors in the form data entered

	var formerrors = "";
	var s = "";
	var obj;
	var gooddata;

	for (var i = 0; i < NumQuestions; i++)
	{
		if (i < 10)
			s = "0" + i;
		else
			s = "" + i;

		switch (i)
		{
			case 0:// required
			gooddata = CheckRadioControl(document.requestform.salutation);
			if (gooddata == -1) formerrors += "_" + s;
			break;
			case 1:// required
			obj = document.getElementById("firstname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 2:// optional
			obj = document.getElementById("middlename");
			obj.value = RemoveBlanks(obj.value);
			break;
			case 3:// required
			obj = document.getElementById("lastname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 4:// required
			obj = document.getElementById("jobtitle");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 5:// required
			obj = document.getElementById("email");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value))
				formerrors += "_" + s;
			else
				if (!goodEmail(obj.value)) formerrors += "_" + s;
			break;
			case 6:// required
			obj = document.getElementById("telephonenumber");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 7:// required
			obj = document.getElementById("faxnumber");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 8:// required
			obj = document.getElementById("companyname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 9:// required
			obj = document.getElementById("streetaddress");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 10:// optional
			obj = document.getElementById("pobox");
			obj.value = RemoveBlanks(obj.value);
			break;
			case 11:// required
			obj = document.getElementById("city");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 12:// required
			obj = document.getElementById("state");
			if (obj.selectedIndex == 0) formerrors += "_" + s;
			break;
			case 13:// required
			obj = document.getElementById("zip");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value))	formerrors += "_" + s;
			break;
			case 14:// required
			obj = document.getElementById("country");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value))	formerrors += "_" + s;
			break;
			case 15:// required
			var gooddata = CheckRadioControl(document.requestform.typeoforganization);
			if (gooddata == -1) formerrors += "_" + s;
			break;
			case 16:// required if Other Option (7) checked above
			if (document.requestform.typeoforganization[7].checked) // 7 is Other
				{
					// Other is checked: make sure it has a non-blank value
					obj = document.getElementById("typeoforganizationother");
					obj.value = RemoveBlanks(obj.value);
					if (isEmpty(obj.value)) formerrors += "_" + s;
				}
			else
				{
					// Other is not checked: delete any characters there
					obj = document.getElementById("typeoforganizationother");
					obj.value = "";
				}
			break;
			case 17:// required
			obj = document.getElementById("catalogrequested");
			if (obj.selectedIndex == 0) formerrors += "_" + s;
			break;
		}
	}

	if (formerrors != "")
		window.alert("There are errors in your form submission.");
	
	return formerrors;
}

// ---- NOT BEING USED BELOW THIS LINE ----

function ValidateRemoveForm()
{
	// This function finds errors in the form data entered and returns an error string called formerrors
	// The formerrors variable is an empty string if there are no errors
	// This could be used with a web form for unsubscribing

	var formerrors = "";
	var s = "";
	var obj;

	for (var i = 0; i < NumQuestions; i++)
	{
		if (i < 10)
			s = "0" + i;
		else
			s = "" + i;

		switch (i)
		{
			case 0:// required
			obj = document.getElementById("firstname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 1:// required
			obj = document.getElementById("lastname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 2:// required
			obj = document.getElementById("email");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value))
				formerrors += "_" + s;
			else
				if (!goodEmail(obj.value)) formerrors += "_" + s;
			break;
			case 3:// required
			obj = document.getElementById("companyname");
			obj.value = RemoveBlanks(obj.value);
			if (isEmpty(obj.value)) formerrors += "_" + s;
			break;
			case 4:// required
			var gooddata = CheckRadioControl(document.removeform.typeofbusiness);
			if (gooddata == -1) formerrors += "_" + s;
			break;
		}
	}

	if (formerrors != "")
		window.alert("There are errors in your form submission.");

	return formerrors;
}

function goodPhone(value)
{
	// This function returns true if the argument is a valid phone number of the form xxx-xxx-xxxx or
	// xxx.xxx.xxxx where x represents a digit from 0 to 9

	if (value.length != 12)
		return false;

	for (var i = 0; i < value.length; i++)
		if (i == 3 || i == 7)
		{
			if (value.charAt(i) != "-" && value.charAt(i) != ".")
				return false;
		}
		else
		{
			if ("0123456789".indexOf(value.charAt(i)) == -1)
				return false;
		}

	return true
}

function goodZip(value)
{
	// This function returns true if the argument consists of only the digits 0 to 9 and false otherwise
	// This is used the case of a 5-digit ZIP code

	if (value.length != 5)
		return false;

	for (var i = 0; i < value.length; i++)
		if ("0123456789".indexOf(value.charAt(i)) == -1)
			return false;

	return true;
}
