function validate(form)
{
	if( !checkRequiredFields( form.FirstName, "First Name", form.LastName, "Last Name",
							  form.Phone1, "Phone", form.Phone2, "Phone", 
							  form.Phone3, "Phone" ) )
		return false;

	if( form.DeliveryType[0].checked )
	{
		if( trim( form.Email.value ) == "" )
		{
			alert( "Email Address is required if the delivery choice is Email." );
			form.Email.select();
			form.Email.focus();
			return false;
		}

	    if ( !validEmail(form.Email.value) )
	    {
			alert( "Email Address is invalid." );
			form.Email.select();
			form.Email.focus();
			return false;
	    }
	}	
	else if( form.DeliveryType[1].checked )
	{
		if( trim( form.Address1.value ) == "" )
		{
			alert( "Address 1, City, State and Zipcode are required for Mail delivery." );
			form.Address1.select();
			form.Address1.focus();
			return false;
		}
		if( trim( form.City.value ) == "" )
		{
			alert( "Address 1, City, State and Zipcode are required for Mail delivery." );
			form.City.select();
			form.City.focus();
			return false;
		}
		if( trim( form.State.value ) == "" )
		{
			alert( "Address 1, City, State and Zipcode are required for Mail delivery." );
			form.State.select();
			form.State.focus();
			return false;
		}
		if( trim( form.Zip.value ) == "" )
		{
			alert( "Address 1, City, State and Zipcode are required for Mail delivery." );
			form.Zip.select();
			form.Zip.focus();
			return false;
		}
	    if (!/\d{2}(\-\d{4})?$/.test(form.Zip.value)) {
		    alert("Zip code invalid.");
	        form.Zip.select();
			form.Zip.focus();
		    return false;
	    }
	}
	else if( form.DeliveryType[2].checked )
	{
		if( trim( form.Fax1.value ) == "" && trim( form.Fax2.value) == "" && 
			trim( form.Fax3.value ) == "" )
		{
			alert( "Fax Number is required if the delivery choice is Fax." );
			form.Fax1.select();
			form.Fax1.focus();
			return false;
		}
		if( ( trim(form.Fax1.value) != "" && (trim(form.Fax2.value) == "" || 
			  trim(form.Fax3.value) == "" )) ||
			( trim(form.Fax2.value) != "" && (trim(form.Fax1.value) == "" ||
			  trim(form.Fax3.value) == "" )) ||
			( trim(form.Fax3.value) != "" && (trim(form.Fax1.value) == "" ||
			  trim(form.Fax2.value) == "" )) )
		{
			alert( "Fax Number is Invalid." );
			form.Fax1.select();
			form.Fax1.focus();
			return false;	
		}		
	}
	if( ( trim(form.CCNumber.value) != "" || trim(form.CCType.value) != "" ||
			trim(form.CCMonth.value) != "" || trim(form.CCYear.value) != "" )
			&& trim(form.PreAuthNumber.value) != "" )
	{
		alert( "Both Credit Card and Pre-Authorization Cannot be Selected." );
		form.CCNumber.select();
		form.PreAuthNumber.value = "";
		form.CCNumber.focus();
		return false;	
	}
	if( trim(form.CCNumber.value) == "" && trim(form.PreAuthNumber.value) == "" ) 
	{
		alert( "Credit Card or Pre-Authorization Number Required." );
		form.CCNumber.select();
		form.CCNumber.focus();
		return false;	
	}
	if( trim(form.CCNumber.value) != "" && trim(form.CCType.value) == "" ) 
	{
		alert( "Credit Card Type Required." );
		return false;	
	}
	if( trim(form.CCNumber.value) != "" && ( trim(form.CCMonth.value) == "" ||
		trim(form.CCYear.value) == "" ))
	{ 
		alert( "Credit Card Expiration Month and Year Required." );
		return false;	
	}
	
	if( form.CCNumber && 
		!validCCNumber( trim( form.CCNumber.value), trim(form.CCType.value ) ) )
	{
		alert( "Credit Card Length is not valid for Credit Card Type." );
		form.CCNumber.select();
		form.CCNumber.focus();
		return false;	
	}
	if( ( trim(form.ParcelNumber1.value) != "" ||
		  trim(form.ParcelNumber2.value) != "" ||
		  trim(form.ParcelNumber3.value) != "" ) && 
	    ( trim(form.StreetNumber.value) != "" || 
	      trim(form.StreetName.value) != "" ) )
	{
		alert( "Fill in either Parcel Number or Street Information, not both." );
		form.ParcelNumber1.select();
		form.ParcelNumber1.focus();
		return false;	
	}
	if( trim(form.ParcelNumber1.value) == "" && 
		trim(form.ParcelNumber2.value) == "" &&
		trim(form.ParcelNumber3.value) == "" &&
		trim(form.StreetNumber.value) == "" )
	{
		alert( "Parcel Number or Street Information is Required." );
		form.ParcelNumber1.select();
		form.ParcelNumber1.focus();
		return false;	
	}
	if (trim(form.ParcelNumber1.value) != "" && ( trim(form.ParcelNumber2.value) == "" ||
		trim(form.ParcelNumber3.value) == "" ) )
	{		
		alert( "Parcel Number Invalid." );
		form.ParcelNumber1.select();
		form.ParcelNumber1.focus();
		return false;	
	}
	if( trim(form.ParcelNumber2.value) != "" && ( trim(form.ParcelNumber1.value) == "" ||
		trim(form.ParcelNumber3.value) == "" ) )
	{
		alert( "Parcel Number Invalid." );
		form.ParcelNumber1.select();
		form.ParcelNumber1.focus();
		return false;	
	}


	if( trim(form.ParcelNumber3.value) != "" && ( trim(form.ParcelNumber1.value) == "" ||
		trim(form.ParcelNumber2.value) == "" ) )
	{
		alert( "Parcel Number Invalid." );
		form.ParcelNumber1.select();
		form.ParcelNumber1.focus();
		return false;	
	}

	if( trim(form.ParcelNumber1.value) != "" )
	{
		form.StreetNumber.value = "";
		form.StreetName.value = "";
		form.StreetDirection.value = "";
		form.StreetExtension.value = "";
	}
	if( trim(form.StreetName.value) != "" && trim(form.StreetNumber.value) != "" )
	{
		form.ParcelNumber1.value = "";
		form.ParcelNumber2.value = "";
		form.ParcelNumber3.value = "";
	}

	if( trim(form.StreetNumber.value) != "" && trim(form.StreetName.value) == "" ||
		trim(form.StreetNumber.value) == "" && trim(form.StreetName.value) != "" )
	{
		alert( "Street Number and Street Name are Required." );
		form.StreetName.select();
		form.StreetName.focus();
		return false;	
	}
	
	if (form.IsDuplex[1].checked == true && trim(form.StreetAdditional.value) == "")
	{
		alert("Must provide additional address information when the property is a duplex.");
		form.StreetAdditional.select();
		form.StreetAdditional.focus();
		return false;
	}
			
	return true;

}


function validCCNumber( strCCNumber, strCCType )
{
	switch( strCCType )
	{
		case "Discover":
		case "Master Card":
			if( strCCNumber.length != 16 )
				return false;
			break;

		case "Visa":
			if( strCCNumber.length != 16 && strCCNumber.length != 13 )
				return false;		
			break;
	}

	return true;
}