function validateContactInfo() {
	var here = document.forms.SubmitForm;
	if (! requireFilled(here.firstName,	'Please enter your first name.')) 		{return false;}
	if (! requireFilled(here.lastName,	'Please enter your last name.')) 		{return false;}
	if (! requireFilled(here.phone1,	'Please enter one phone number.')) 		{return false;}
	if (! requirePhone(here.phone1,		'Please enter a full phone number.')) 	{return false;}
	if (! requirePhone(here.phone2,		'Please enter a full phone number.')) 	{return false;}
	if (! requireFilled(here.email,		'Please enter your email address.'))	{return false;}
	if (! requireEmail(here.email,		'Please enter valid email address.'))	{return false;}
	if (! requireFilled(here.address1,	'Please enter your address.')) 			{return false;}
	if (! requireFilled(here.city,		'Please enter your city.')) 			{return false;}
	if (! requireSelected(here.state,	'Please enter your state.')) 			{return false;}
	if (! requireLength(here.zip, 5,	'Please enter your zip code.')) 		{return false;}
	return true;
}

function validateCreditCards() {
	var here = document.forms.SubmitForm;
	var num = here.cardNumber;
	if (! requireSelected(here.creditCard,			'Please select your credit card type.'))						{return false;}
	if (! requireFilled(here.cardNumber,			'Please enter your credit card number.'))						{return false;}
	if (! require(num, (num.value.length >= 10),	'Please enter a valid credit card number.'))					{return false;}
	if (! requireSelected(here.expMonth,			'Please select the expiration date of your card.'))				{return false;}
	if (! requireSelected(here.expYear,				'Please select the expiration date of your card.'))				{return false;}
	if (! requireFilled(here.nameOnCard,			'Please enter your name as it appears on your credit card.'))	{return false;}
	return true;
}

function requireFilled(elem, message) {
	// For regular input and textbox elements
	return requireLength(elem, 1, message);
}

function requireLength(elem, lengthOf, message) {
	// For regular input and textbox elements
	return require(elem, (elem.value.length >= lengthOf), message);
}

function requireSelected(elem, message) {
	// For select elements
	return require(elem, (elem.selectedIndex > 0), message);
}

function requirePicked(elem, message) {
	// For radio input elements
	var i = 0;
	var valid = false;
	for (i=0; i < elem.length; i++) {
		valid = elem[i].checked;
		if (valid) {
			break;
		}
	}
	return require(null, valid, message);
}

function requirePhone(elem, message) {
	//If not blank, must be a phone number
	return require(elem, (elem.value == '' || checkInternationalPhone(elem.value)), message);
}

function requireEmail(elem, message) {
	//If not blank, must be an email address
	return require(elem, (elem.value == '' || echeck(elem.value)) , message);
}

function require(elem, requirementMet, message) {
	if (! requirementMet) {
		alert(message);
		if (elem != null) {
			elem.focus();
		}
	}
	return requirementMet;
}

function getRadioValue(item) {
	var i = 0;
	for (i=0; i < item.length; i++) {
		if (item[i].checked) {
			return item[i].value;
		}
	}
	return '';
}
function isAnythingSet(item) {
	var i = 0;
	for (i=0; i < item.length; i++) {
		if (item[i].checked) {
			return true;
		}
	}
	return false;
}

// External Code Follows


	/**
	 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	   (modified by Eric Thompson of OCS to allow dots (.) as a digit-separator. 
	 */
	
		// Declaring required variables
		var digits = "0123456789";
		// non-digit characters which are allowed in phone numbers
		var phoneNumberDelimiters = "()-. ";
		// characters which are allowed in international phone numbers
		// (a leading + is OK)
		var validWorldPhoneChars = phoneNumberDelimiters + "+";
		// Minimum no of digits in an international phone no.
		var minDigitsInIPhoneNumber = 10;
		
		function isInteger(s) {
			var i;
			for (i = 0; i < s.length; i++) {   
				// Check that current character is number.
				var c = s.charAt(i);
				if (((c < "0") || (c > "9"))) return false;
			}
			// All characters are numbers.
			return true;
		}
		
		function stripCharsInBag(s, bag) {
			var i;
			var returnString = "";
			// Search through string's characters one by one.
			// If character is not in bag, append to returnString.
			for (i = 0; i < s.length; i++) {   
				// Check that current character isn't whitespace.
				var c = s.charAt(i);
				if (bag.indexOf(c) == -1) returnString += c;
			}
			return returnString;
		}
		
		function checkInternationalPhone(strPhone){
			s=stripCharsInBag(strPhone,validWorldPhoneChars);
			return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
		}
	
	
	/**
	 * DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */
	
		function echeck(str) {
			var at="@"
			var dot="."
			var lat=str.indexOf(at)
			var lstr=str.length
			var ldot=str.indexOf(dot)
			if (str.indexOf(at)==-1) 														{return false}
			if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)		{return false}
			if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)	{return false}
			if (str.indexOf(at,(lat+1))!=-1)												{return false}
			if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)			{return false}
			if (str.indexOf(dot,(lat+2))==-1)												{return false}
			if (str.indexOf(" ")!=-1)														{return false}
			 return true					
		}
