function validate ($form) {
	
	var $elems = $form.elements;
	
	if (($elems.txtFirstName.className.indexOf('required') >= 0) && ($elems.txtFirstName.value == '')) {
		alert ('Please enter your First Name');
		$elems.txtFirstName.focus ();
	} else if (($elems.txtLastName.className.indexOf('required') >= 0) && ($elems.txtLastName.value == '')) {
		alert ('Please enter your Last Name');
		$elems.txtLastName.focus ();
	} else if (($elems.txtTitle != undefined && $elems.txtTitle.className.indexOf('required') >= 0 && $elems.txtTitle.value == '')) {
		alert ('Please enter your Title');
		$elems.txtTitle.focus ();
	} else if (($elems.txtCompany != undefined && $elems.txtCompany.className.indexOf('required') >= 0 && $elems.txtCompany.value == '')) {
		alert ('Please enter your Company');
		$elems.txtCompany.focus ();
	} else if (($elems.txtStreet.className.indexOf('required') >= 0 && $elems.txtStreet.value == '')) {
		alert ('Please enter your Street');
		$elems.txtStreet.focus ();
	} else if (($elems.txtCity.className.indexOf('required') >= 0 && $elems.txtCity.value == '')) {
		alert ('Please enter your City');
		$elems.txtCity.focus ();
	} else if (($elems.txtState.className.indexOf('required') >= 0 && !ValidState($elems.txtState.value))) {
		alert ('Please enter your State');
		$elems.txtState.focus ();
	} else if (($elems.textMessage != undefined && $elems.textMessage.className.indexOf('required') >= 0 && $elems.textMessage.value == '')) {
		alert ('Please enter your Message');
		$elems.textMessage.focus ();
	} else {
		var $zipCode = parseInt ($elems.txtZipCode.value);
		if ($elems.txtZipCode.className.indexOf('required') >= 0 && (isNaN($zipCode) || $zipCode < 0 || $zipCode > 99999 || $elems.txtZipCode.value.length != 5)) {
			alert ('Please enter your Zip Code');
			$elems.txtZipCode.focus ();
		} else {
			var $phoneRegExp = new RegExp ('((\\(\\d{3}\\) ?)|(\\d{3}[- \.]))?\\d{3}[- \.]\\d{4}(\\s(x\\d+)?){0,1}$', 'g');
			var $emailRegExp = new RegExp ('\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*([,;]\\s*\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*)*', 'g');
			
			if ($elems.txtPhone.className.indexOf('required') >= 0 && !$elems.txtPhone.value.match ($phoneRegExp)) {
				alert ('Please enter your Phone Number');
				$elems.txtPhone.focus ();
			} else if ($elems.txtEmail.className.indexOf('required') >= 0 && !$elems.txtEmail.value.match ($emailRegExp)) {
				alert ('Please enter your Email Address');
				$elems.txtEmail.focus ();
			} else {
				return true;
			}
		}
	}
	
	return false;
}

function ValidState(sstate) {

	var sstates = "wa|or|ca|ak|nv|id|ut|az|hi|mt|wy|" +
		"co|nm|nd|sd|ne|ks|ok|tx|mn|ia|mo|" +
		"ar|la|wi|il|ms|mi|in|ky|tn|al|fl|" +
		"ga|sc|nc|oh|wv|va|pa|ny|vt|me|nh|" +
		"ma|ri|ct|nj|de|md|dc|";
	
	if (sstate.length == 2 && sstates.indexOf(sstate.toLowerCase() + "|") > -1) {
		return true;
	}
	
	return false;
}