function PrepareForms()
{
	// Set onSubmit event for all forms within the content div
	if (!document.getElementById) return false;
	if (!document.getElementById("content")) return false;
	if (!document.getElementsByTagName) return false;
	var ContentDiv = document.getElementById("content");
	var aryForms = ContentDiv.getElementsByTagName("form");
	for(ndx=0;ndx<aryForms.length;ndx++)
	{
		if (ndx == 0) {
			aryForms[ndx].onsubmit = function() {
				return ValidateEmailForm(this);
			}
		}
		if (ndx == 1) {
			aryForms[ndx].onsubmit = function() {
				return ValidateMailingListForm(this);
			}
		}
	}
}
var reWhitespace=/^[\s]+$/;
var reAlphabetic=/^[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿ\'\-\. ]+$/;
var reDigit=/^[0-9]$/;
var reNumeric=/^[0-9]+$/;
var reAlphanumeric=/^[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿ\'\-\. 0-9]+$/;
var rePunctuation=/^[\-\_\.\,\?\¿\!\¡\/\#\%]+$/;
var reText=/^[A-Za-zÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿ\'\-\. 0-9\-\_\.\,\?\¿\!\¡\/\#\%]+$/;
var reUSZipCode=/^\d{5}(-\d{4})?$/;
var reCanadianPostalCode=/^[A-Za-z]\d[A-Za-z]( |-)\d[A-Za-z]\d$/;
var rePhoneDelimiter=/(\+|\(|\)|\-|\.|\/| )/g;
var reUSPhoneNumber=/^\d{10}$/;
var reInternationalPhoneNumber=/^[0-9\+\(\)\-\.\/ ]{7,20}$/;
var reEmailAddress=/^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$/;
var sInvalidUSZipCode = "Please enter a valid 5- or 9-Digit U.S. Zip Code (such as 12345 or 12345-6789).";
var sInvalidCanadianPostalCode = "Please enter a valid Canadian Postal Code (such as A1B-2C3 or D4E 5F6).";
var sInvalidUSPhoneNumber = "Please enter a valid 10-Digit U.S. Phone Number (such as 123/456-7890).";
var sInvalidInternationalPhoneNumber = "Please enter a valid 7- to 20-Digit International Phone Number (such as +123-(4)5-67 89 01 or 01 800 123 1234).";
var sInvalidEmailAddress = "Please enter a valid Email Address (such as john.doe@mail.com).";
function Reformat(s)
{	var sArg;
	var intPosition=0;
	var sResult="";
	for (var ndx=1;ndx<Reformat.arguments.length;ndx++)
	{	sArg=Reformat.arguments[ndx];
		if (ndx%2==1) sResult+=sArg;
		else
		{	sResult+=s.substring(intPosition,intPosition+sArg);
			intPosition+=sArg;
		}
	}
	return sResult;
}
function WarnInvalid(field,s)
{	alert(s);
	field.focus();
	return false;
}
function WarnInvalidText(field,s)
{	alert(s);
	field.focus();
	field.select();
	return false;
}
function StripCharsInRE(s,re)
{	s=s.replace(re,"");
	return s;
}
function IsEmpty(s)
{	return ((s==null) || (s.length==0))
}
function IsWhitespace(s)
{	return (IsEmpty(s) || reWhitespace.test(s));
}
function IsAlphabetic(s)
{	return reAlphabetic.test(s);
}
function IsNumeric(s)
{	return reNumeric.test(s);
}
function IsAlphanumeric(s)
{	return reAlphanumeric.test(s);
}
function IsPunctuation(s)
{	return rePunctuation.test(s);
}
function IsText(s)
{	return reText.test(s);
}
function IsDigit(c)
{	return reDigit.test(c)
}
function IsInteger(s)
{	if (IsEmpty(s)) return false;
	for (var ndx=0;ndx<s.length;ndx++)
	{	var c=s.charAt(ndx);
		if (!IsDigit(c)) return false;
	}
	return true;
}
function IsUSZipCode(s)
{	return reUSZipCode.test(s);
}
function CheckUSZipCode(field)
{	if (IsEmpty(field.value)) return false;
	else
	{	if (!IsUSZipCode(field.value)) return WarnInvalidText(field,sInvalidUSZipCode);
		else return true;
	}
}
function IsCanadianPostalCode(s)
{	return reCanadianPostalCode.test(s);
}
function CheckCanadianPostalCode(field)
{	if (IsEmpty(field.value)) return false;
	else
	{	if (!IsCanadianPostalCode(field.value)) return WarnInvalidText(field,sInvalidCanadianPostalCode);
		else return true;
	}
}
function IsUSPhoneNumber(s)
{	return reUSPhoneNumber.test(s);
}
function ReformatUSPhoneNumber(USPhoneNumber)
{   return (Reformat(USPhoneNumber, "", 3, "\/", 3, "-", 4))
}
function CheckUSPhoneNumber(field)
{	if (IsEmpty(field.value)) return false;
	else
	{	var NormalizedValue=StripCharsInRE(field.value,rePhoneDelimiter);
		if (!IsUSPhoneNumber(NormalizedValue)) return WarnInvalidText(field,sInvalidUSPhoneNumber);
		else
		{	field.value=ReformatUSPhoneNumber(NormalizedValue);
			return true;
		}
	}
}
function IsInternationalPhoneNumber(s)
{	return reInternationalPhoneNumber.test(s);
}
function CheckInternationalPhoneNumber(field)
{	if (IsEmpty(field.value)) return false;
	else
	{	if (!IsInternationalPhoneNumber(field.value)) return WarnInvalidText(field,sInvalidInternationalPhoneNumber);
		else return true;
	}
}
function IsEmailAddress(s)
{	return reEmailAddress.test(s);
}
function CheckEmailAddress(field)
{	if (IsEmpty(field.value)) return false;
	else
	{	if (!IsEmailAddress(field.value)) return WarnInvalidText(field,sInvalidEmailAddress);
		else return true;
	}
}
var sRequiredFields = "One or both of the required fields on this form have not yet been filled out.\nPlease scan the form and fill out both fields marked required."
function ValidateEmailForm(form)
{
	if (IsWhitespace(document.forms[0].name_for_email.value) ||
		IsWhitespace(document.forms[0].message_for_email.value))
	{
		alert(sRequiredFields);
		return false;
	}
	else
	{
		if (!IsWhitespace(document.forms[0].name_for_email.value) && !IsAlphabetic(document.forms[0].name_for_email.value))
		{
			return WarnInvalidText(document.forms[0].name_for_email,"Please enter an alphabetic value for Name.");
		}
		return true;
	}
}
function ValidateMailingListForm(form)
{
	if (IsWhitespace(document.forms[1].name.value) ||
		IsWhitespace(document.forms[1].email.value))
	{
		alert(sRequiredFields);
		return false;
	}
	else
	{
		if (!IsWhitespace(document.forms[1].name.value) && !IsAlphabetic(document.forms[1].name.value))
		{
			return WarnInvalidText(document.forms[1].name,"Please enter an alphabetic value for the Name.");
		}
	    if (!CheckEmailAddress(document.forms[1].email)) return false;
		if (!IsWhitespace(document.forms[1].address1.value) && !IsText(document.forms[1].address1.value))
		{
			return WarnInvalidText(document.forms[1].address1,"Please enter a value for the Street Address 1 which contains only alphanumeric characters, dashes, underscores, periods, commas, question marks, exclamation points, forward-slashes, or number signs.");
		}
		if (!IsWhitespace(document.forms[1].address2.value) && !IsText(document.forms[1].address2.value))
		{
			return WarnInvalidText(document.forms[1].address2,"Please enter a value for the Street Address 2 which contains only alphanumeric characters, dashes, underscores, periods, commas, question marks, exclamation points, forward-slashes, or number signs.");
		}
		if (!IsWhitespace(document.forms[1].city.value) && !IsAlphabetic(document.forms[1].city.value))
		{
			return WarnInvalidText(document.forms[1].city,"Please enter an alphabetic value for the City.");
		}
		if ((document.forms[1].country[document.forms[1].country.selectedIndex].value == "Canada" || document.forms[1].country[document.forms[1].country.selectedIndex].value == "United States") && document.forms[1].state[document.forms[1].state.selectedIndex].value == "0")
		{
			return WarnInvalid(document.forms[1].state,"If the address is within the United States or Canada, please select a State/Province.");
		}
		if ((document.forms[1].country[document.forms[1].country.selectedIndex].value == "Canada" || document.forms[1].country[document.forms[1].country.selectedIndex].value == "United States") && IsWhitespace(document.forms[1].zip.value))
		{
			return WarnInvalid(document.forms[1].state,"If the address is within the United States or Canada, please select a Zip/Postal Code.");
		}
		if (document.forms[1].country[document.forms[1].country.selectedIndex].value == "United States")
		{
			if (!CheckUSZipCode(document.forms[1].zip)) return false;
			if (!IsWhitespace(document.forms[1].phone.value) && !CheckUSPhoneNumber(document.forms[1].phone)) return false;
		}
		else if (document.forms[1].country[document.forms[1].country.selectedIndex].value == "Canada")
		{
			if (!CheckCanadianPostalCode(document.forms[1].zip)) return false;
			if (!IsWhitespace(document.forms[1].phone.value) && !CheckUSPhoneNumber(document.forms[1].phone)) return false;
		}
		else if (document.forms[1].state[document.forms[1].state.selectedIndex].value != "0")
		{
			if (!IsWhitespace(document.forms[1].phone.value) && !CheckInternationalPhoneNumber(document.forms[1].phone)) return false;
		}
		return true;
	}
}
