
			// ------------------------------------------------------------------------------------
			// remove single quote marks (') from all strings -- it's a SQL thing:
			// ------------------------------------------------------------------------------------
			function tickHandler(sString) 
			{
				var s = new String(sString) ;
				var sReturn = new String() ;
				var ar = s.split("'") ; // use the String.Split() method to cut out the "'" characters
				for(var i = 0; i < ar.length; i++) 
				{
					sReturn += ar[i] ;
				}
				return(sReturn) ;
			}
			
			// ------------------------------------------------------------------------------------
			// validate Phone Numbers as ALL numeric digits:
			// ------------------------------------------------------------------------------------
			function validatePhoneNumber(sValue)
			{
				var oRegExp = new RegExp("\\d{10}") ; // I need all 10 digits of the phone number (area code, prefix, number)
				return( oRegExp.test(sValue) )
			}

			// ------------------------------------------------------------------------------------
			// validate Zip Code as ALL numeric value:
			// ------------------------------------------------------------------------------------
			function validateZipCode(sValue)
			{
				var s = new String(sValue) ;
				var oRegExp = new RegExp("\\d{5}(\d\d\d\d)?") ; // I'm trying for a zip code with no dashes or anything like that
				return( oRegExp.test(s) )
			}

			// ------------------------------------------------------------------------------------
			// validate the format of the submitted email address:
			// ------------------------------------------------------------------------------------
			function validateEmailAddressFormat(sEmailAddress) 
			{
				var oRegExp = new RegExp ("^[\\w-_\\.]*[\\w-_\\.]\\@[\\w.-]+\\.\\w{2,3}$")
				// OR...
				// var oRegExp = /^[\w-_\.]*[\w-_\.]\@[\w.-]+\.\w{2,3}$/
				// But you can only use this in JavaScript because of the way JavaScript regards "/" characters.
				// The previous method is far easier to transport to another platform.
				return( oRegExp.test(sEmailAddress) ) 
			}
			
			// ------------------------------------------------------------------------------------
			// validate the submitted value for all numeric characters:
			// ------------------------------------------------------------------------------------
			function validateNumericField(nValue, nMaxLength)
			{
				var ar = new Array() ;
				var s = new String(nValue) ;
				for( var i = 0; i < s.length; i++)
				{
					ar[ar.length] = s.charAt(i) ;
				}
				if( (ar.length) > nMaxLength )
				{
					alert("You have entered too many digits for this number field. Please try again.") ;
					return ;
				}
				for( i = 0; i < ar.length; i++ )
				{
					n = parseInt(ar[i])
					if( isNaN(n) )
					{
						alert("You have entered an invalid value in a number field. Please try again.") ;
						return ;
					}
				}
			}
			
			// minimal error checking
			function validateFormData(f) 
			{
				var bSchedulePick = false ;
				var i = 0 ;
				// check the values submitted by the user.
				// put up warnings and information for the user so s/he can correct his blunders.
				with( f )
				{
					if( firstname.value == '' ) 
					{
						alert("Please enter your First Name.") ;
						return ; 
					}
					firstname.value = tickHandler(firstname.value) ;
					
					if( lastname.value == '' ) 
					{
						alert("Please enter your Last Name.") ;
						return ; 
					}
					lastname.value = tickHandler(lastname.value) ;
					
					if( address.value == '' ) 
					{
						alert("Please enter your Address.") ;
						return ; 
					}
					address.value = tickHandler(address.value) ;
					
					if( city.value == '' ) 
					{
						alert("Please enter your City.") ;
						return ; 
					}
					city.value = tickHandler(city.value) ;
					
					for( i = 0 ; i < selState.options.length ; i++ ) 
					{
						if( selState.options[i].selected ) 
						{
							state.value = selState.options[i].value ;
							break ; 
						}
					}
					
					if( zip.value == '' ) 
					{
						alert("Please enter your Zip Code.") ;
						return ; 
					}
/*					else
					{
						if( validateZipCode(Zip.value) == false )
						{
							alert("Please enter the numbers only of your Zip Code.") ;
							return ;
						}
					}
*/	
					if( email.value == '' ) 
					{
						alert("Please enter your Email Address.") ;
						return ; 
					}
/*					else
					{
						if( validateEmailAddressFormat(Email.value) == false )
						{
							alert("Invalid email address. Please correct the format of your email address and try again.") ;
							return ;
						}
					}
*/	
					email.value = tickHandler(email.value) ;
	
					if( dayphone.value == '' ) 
					{
						alert("Please enter your Day Phone.") ;
						return ; 
					}
/*					else
					{
						if( validatePhoneNumber(Phone1.value) == false )
						{
							alert("Please enter numbers only for your Day phone number.") ;
							return ;
						}
					}
*/					
					// this field is optional. test for a value before validating:
					if( evephone.value )
					{
	/*					// if value exists, must have correct format (numbers only):
						if( validatePhoneNumber(Phone2.value) == false )
						{
							alert("Please enter numbers only for your Evening phone number.") ;
							return ;
						}
	*/				}
					else
					{
						evephone.value = dayphone.value ; //' just give the day phone number
					}
	
					if( dogname.value == '' ) 
					{
						alert("Please enter your Dog's Name.") ;
						return ; 
					}
					dogname.value = tickHandler(dogname.value) ;
	
					if( dogbreed.value == '' ) 
					{
						alert("Please enter your Dog's Breed.") ;
						return ; 
					}
					dogbreed.value = tickHandler(dogbreed.value) ;
	
	
					if( dogage.value == '' ) 
					{
						alert("Please enter your Dog's Age.") ;
						return ; 
					}
					dogage.value = tickHandler(dogage.value) ;

					
					for( i = 0 ; i < rdoDogAltered.length ; i++ ) 
					{
						if( rdoDogAltered[i].checked ) 
						{
							dogaltered.value = rdoDogAltered[i].value ; //' returns a 'Yes' or a 'No' value
							break ; 
						}
					}

					for( i = 0 ; i < rdoDogSex.length ; i++ ) 
					{
						if( rdoDogSex[i].checked ) 
						{
							dogsex.value = rdoDogSex[i].value ; //' returns a 'M' or a 'F' value
							break ; 
						}
					}
	
					if( dogageobtained.value == '' ) 
					{
						alert("Please enter the age of your dog when you first got him/her.") ;
						return ; 
					}
					dogageobtained.value = tickHandler(dogageobtained.value) ;
	
					if( dogwherepurchased.value == '' ) 
					{
						alert("Please tell me where you got your dog.") ;
						return ; 
					}
					dogwherepurchased.value = tickHandler(dogwherepurchased.value) ;
/*	
					if( dogsbreeder.value == '' ) 
					{
						alert("Please tell me your dog's breeder, if you know.") ;
						return ; 
					}
					dogsbreeder.value = tickHandler(dogsbreeder.value) ;
*/	
					if( vetsname.value == '' ) 
					{
						alert("Please enter your Veterinarian's (or Clinic's) name.") ;
						return ; 
					}
					vetsname.value = tickHandler(vetsname.value) ;
	
					if( vetsphone.value == '' ) 
					{
						alert("Please enter your Veterinarian's (or Clinic's) phone number.") ;
						return ; 
					}
					vetsphone.value = tickHandler(vetsphone.value) ;

					if( lastshots.value == '' ) 
					{
						alert("Please enter the date of your pup's last round of shots.") ;
						return ; 
					}
					lastshots.value = tickHandler(lastshots.value) ;

					for( i = 0 ; i < rdoBordatella.length ; i++ ) 
					{
						if( rdoBordatella[i].checked ) 
						{
							bordatella.value = rdoBordatella[i].value ; //' returns a 'Yes' or a 'No' value
							break ; 
						}
					}
	
					for( i = 0 ; i < rdoBiteTry.length ; i++ ) 
					{
						if( rdoBiteTry[i].checked ) 
						{
							bitetry.value = rdoBiteTry[i].value ; //' returns a 'Yes' or a 'No' value
							break ; 
						}
					}
	
					for( i = 0 ; i < rdoBiteDo.length ; i++ ) 
					{
						if( rdoBiteDo[i].checked ) 
						{
							bitedo.value = rdoBiteDo[i].value ; //' returns a 'Yes' or a 'No' value
							break ; 
						}
					}
						
					// the user must select one of the two waiver options.
					// if they haven't, inform them, give them a chance to pick.
					if( rdoWaiver[0].checked ) 
					{
						waiver.value = "1" ; 
					}
					else 
					{
						//' REJECT selected:
						if( rdoWaiver[1].checked ) 
						{
							waiver.value = "0" ;
							alert("You have rejected the waiver of liability statement at the bottom of the Registration form. If this is what you really want to do, please click the CANCEL button at the bottom of the page.") ;
							return ; 
						}
						//' neither 'ACCEPT' nor 'REJECT' selected -- this should never happen:
						else 
						{
							alert("Please confirm or reject the waiver of liability statement at the bottom of the Registration form.") ;
							return ; 
						}
					}
			
					// everything looks good -- go ahead and submit the form's content for processing:
					submit() ;
				}
			}

