	//This could be problematic depending on how I end up doing the processing of this form's results...
	var engineNum = 1;

	//add a click handler for the "add another engine" button
   	function removeEngine(theEngine){
   		//alert("remove engine: " + theEngine);
   		$("#"+theEngine).remove();
   	}

	//make the proper states/provinces show up
	function countrySelect(){
		if($("input[@type=radio][@checked]").val() == "Canada"){
			$(".slctCanada").css({display: "block"});
			$(".slctUSA").css({display: "none"});
		}else if($("input[@type=radio][@checked]").val() == "USA"){
			$(".slctCanada").css({display: "none"});
			$(".slctUSA").css({display: "block"});
		}
	}
	
	function checkPass1() {
		if($("#password1").val().length < 6){
			$("#password1").css({backgroundColor: "#F99" });
			$("#pwTooShort").css({display: "block"});
			$("#password1").val("");
			$("#password1")[0].focus();
			return 1;
		}else{
			$("#password1").css({backgroundColor: "#FFF" });
			$("#pwTooShort").css({display: "none"});
			return 0;
		}
	}

	function checkPass2(){
		if($("#password1").val() != "" && $("#password1").val() == $("#password2").val()){
			$("#password1").css({backgroundColor: "#FFF" });
			$("#password2").css({backgroundColor: "#FFF" });
			$("#pwNoMatch").css({display: "none"});
			return 0;
		}else{
			$("#password1").css({backgroundColor: "#F99" });
			$("#password2").css({backgroundColor: "#F99" });
			$("#pwNoMatch").css({display: "block"});
			$("#password1").val("");
			$("#password2").val("");
			$("#password1")[0].focus();
			return 1;
		}
	}

	function checkZip(){
		var numZip = $("#zip").val();
		var errNum = 0;
		var dynLength;
		
		if ($("input[@type=radio][@checked]").val() == "Canada"){
			dynLength = 6;
			var zipRe = /(\w\w\w)(\s?)(\w\w\w)/;
			var zipArray = zipRe.exec(numZip);
			
			if(zipArray){
				//alert(zipArray[1] + " " + zipArray[3]);
				$("#zip").val(zipArray[1] + "" + zipArray[3]);
			}else{
				errNum += 1;
			}
		}else{
			dynLength = 5;

			for(var i=0; i<numZip.length; i++){
				if(numZip.charAt(i)<"0"){
					errNum += 1;
				}
				if(numZip.charAt(i)>"9"){
					errNum += 1;
				}
			}
		}

		if(numZip.length < dynLength){
			errNum += 1;
		}

		if(errNum > 0){
			$("#zip").css({backgroundColor: "#F99" });
			$("#zipError").css({display: "block"});
			//$("#zip").val("");
			$("#zip")[0].focus();
			return 1;
		}else{
			$("#zip").css({backgroundColor: "#FFF" });
			$("#zipError").css({display: "none"});
			return 0;
		}
	}

	function checkPhone(){
		var numPhone = $("#phone").val();
		var errNum = 0;
		var re = /^\(?(\d{3})\)?[\.\-\/ ]?(\d{3})[\.\-\/ ]?(\d{4})$/;

		var phoneArray = re.exec(numPhone);

		if(phoneArray){
			$("#phone").css({backgroundColor: "#FFF" });
			$("#phone").val("(" + phoneArray[1] + ") " + phoneArray[2] + "-" + phoneArray[3]);
			$("#pnError").css({display: "none"});
			return 0;
		}else{
			$("#phone").css({backgroundColor: "#F99" });
			$("#pnError").css({display: "block"});
			$("#phone").val("");
			$("#phone")[0].focus();
			return 1;
		}
	}

	function checkEmail(){
		var strEmail = $("#email").val();
		var errNum = 0;
		var re = /^\w+([\.\+-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
		var emailArray = re.exec(strEmail);

		if(emailArray){
			$("#email").css({backgroundColor: "#FFF" });
			$("#emError").css({display: "none"});
			return 0;
		}else{
			$("#email").css({backgroundColor: "#F99" });
			$("#emError").css({display: "block"});
			$("#email").val("");
			$("#email")[0].focus();
			return 1;
		}
	}

	//checks to see if specified field is empty
	function emptyField(theField){
		if(theField.value == "" || theField.value == " " || theField.value == null){
			theField.style.backgroundColor = "#F99";
			return true;
		}else{
			theField.style.backgroundColor = "#FFF";
			return false;
		}
	}

 $(document).ready(function() {
   //Check to see if this username is already in the database
   $("#userName").change(function() {
     	//check to see if user exists in DB
     	//this utilizes checkDBForUserName.js and .jsp
     	var userExists = checkDBForUserName($("#userName").val());
   });

   //make sure the password is at least 6 characters long
   $("#password1").change(function(){
		checkPass1();
   });

   //make sure the entered passwords match eachother
   $("#password2").change(function() {
		checkPass2();
   });

	//validate zip
	$("#zip").blur(function() {
		checkZip();
	});

   //validate phone number
	$("#phone").change(function() {
		checkPhone();
	});

    //validate e-mail address
	$("#email").change(function() {
		checkEmail();
	});

    /**
   	 * Check to make sure required fields are filled out.  Through the magic of jQuery (I think), this
     * function seems to be called when the HTML form on the regist.jsp page is submitted.
     */
   	$("#frmRegister").submit(function() {

   		var errNum = 0;

		var allFormElements = $(".formRightReq");

		for ( var i=0; i < allFormElements.length; i++ ) {

			if(emptyField(allFormElements[i]) ) {
				errNum += 1;
			}
		}

   		errNum += checkPass1();
   		errNum += checkPass2();
   		errNum += checkZip();
   		errNum += checkPhone();
   		errNum += checkEmail();

   		if(errNum > 0){
   			alert("Please correctly fill in all required fields.");
   			return false;
   		}else{
   			return true;
   		}
   	});

   	//add a click handler for the "add another engine" button
   	$("#btnAddEngine").click(function() {
   		engineNum += 1;
   		//alert("add engine");
   		$("#engine").append("" +
   		"\n\t\t<div class=\"engineDiv\" id=\"" + engineNum + "\">\n" +
			"\t\t\t<label>* Engine Serial #:</label><input class=\"formRight\" type=\"text\" name=\"serial\" size=\"30\" id=\"engine" + engineNum + "\"/><br />\n" +
			"\t\t\t<label class=\"required\">* Vehicle Type:</label><input class=\"formRightReq\" type=\"radio\" name=\"type\" value=\"truck\" /> Truck\n" +
															"\t\t\t\t\t\t\t\t\t<input type=\"radio\" name=\"type\" value=\"rv\" /> RV <br />\n" +
			"\t\t\t<label class=\"required\">* Model:</label><input class=\"formRightReq\" type=\"text\" name=\"model\" size=\"30\" /><br />\n" +
			"\t\t\t<a class=\"btnEngineRemove\" id=\"btnRemoveEngine" + engineNum + "\"  href=\"javascript:removeEngine('" + engineNum + "');\">remove engine</a><br />\n" +
		"\t\t<br /></div>\n");
   	});
 });