	function set_focus() {
		//document.AppForm.FirstName.focus();
	}
	
	// return the value of the radio button that is checked
	// return an empty string if none are checked, or
	// there are no radio buttons
	function getCheckedValue(radioObj) {
		if(!radioObj)
			return "";
		var radioLength = radioObj.length;
		if(radioLength == undefined)
			if(radioObj.checked)
				return radioObj.value;
			else
				return "";
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
				return radioObj[i].value;
			}
		}
		return "";
	}
	
	//function to check valid email address
	function isValidEmail( strEmail ){
		var isValid = true;
		var invalidChars = "\\ /\"\':;+\!#$^&*()=,\|?";
		
  		validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;

   		// search email text for regular exp matches
    	if (strEmail.search(validRegExp) == -1){
      		isValid = false;
    	} 
    	
    	// search email for invalid characters
		for ( i = 0; i < strEmail.length && isValid == true; i++ ) {
			
			Char = strEmail.charAt(i);
			if ( invalidChars.indexOf( Char ) >= 0 ) {
				isValid = false;
			}
		}
    	return isValid; 
	}

	function IsNumeric( sText ) {
		var ValidChars = "1234567890.-$,";
		var IsNumber = true;
		var Char;
		
		for ( i = 0; i < sText.length && IsNumber == true; i++ ) {
			
			Char = sText.charAt(i);
			if ( ValidChars.indexOf( Char ) == -1 ) {
				IsNumber = false;
			}
		}
		
		return IsNumber;
	} 
	
	function IsDate( sDate, sType ) {
		
		var validDate = true;
		var currentDate = new Date();
		var aDays = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
		var aDate = sDate.value.split( '/' );
		
		if( aDate.length == 3 ) {
			
			if ( ( aDate[0] > 0 ) && ( aDate[0] < 13 ) ) { // Month is between 1 and 12 inclusive
				if ( ( aDate[1] > 0 ) && ( aDate[1] <= aDays[ aDate[0] - 1 ] ) ) { // Days is greater than zero and less than or
																					// equal to the number of days in the month. This
																					// is determined by the month stored in the aDate(0)
																					// element minus one because arrays start at zero
					if( ( aDate[2] >= 1880 ) && ( aDate[2] <= currentDate.getFullYear() ) ) {
						validDate = true;
					} else {
						validDate = false;
					}
				} else {
					validDate = false;
				}
			} else {
				validDate = false;
			}
		} else {
			validDate = false;
		}
		
		if( validDate == false ) {
			// If the date came from an INPUT tag then we want to display a message and go back to that field.
			if ( sType.toUpperCase() == "FIELD" ) {
				alert( "The date you have entered is either invalid or not in the proper format!\nPlease enter a valid date using the format \'mm\\dd\\yyyy\'" );
				setTimeout(function(){sDate.focus();},10);
				sDate.select();
			}
		}
		
		return validDate;
	}
	
	function formatSSN( ssn ) {
		
		var objForm = document.AppForm;
		
		if ( ssn.value.toUpperCase() != "CALL" ) {
			// call the isValidSSN function to make sure the SSN is good
			if ( isValidSSN( ssn.value ) ) {
				if( ssn.value.length == 9 ) {
					ssn.value = ssn.value.substr( 0, 3 ) + "-" + ssn.value.substr( 3, 2 ) + "-" + ssn.value.substr( 5, 4 );
				}
				return true;
			} else {
				alert( "This is not a valid Social Security Number\nPlease enter a valid Social Security Number or the word \'Call\' if you\nwould like us to call you for this information." );
				setTimeout(function(){ssn.focus();},10);
				ssn.select();
				return false;
			}
		}
		return true;
			
	}
	
	function isValidSSN(ssn) {
		var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
		var numDashes = ssn.split('-').length - 1;
		var isValid = true;
		
		if (matchArr == null || numDashes == 1) {
			isValid = false;
		} else {
			if (parseInt(matchArr[1],10)==0) {
				isValid = false;
			}
		}
		
		return isValid;
	}	
	
	function trim(sString) {
		while (sString.substring(0,1) == ' ') {
			sString = sString.substring(1, sString.length);
		}
		
		while (sString.substring(sString.length-1, sString.length) == ' ') {
			sString = sString.substring(0,sString.length-1);
		}
		
		return sString;
	}
	
	function formatPhone( sPhone ) {
		
		var validChars = '0123456789';
		var formattedPhone = '';
		var Char;
		var i;
		
		for( i=0; i < sPhone.value.length; i++ ) {
			Char = sPhone.value.charAt(i);
			if( validChars.indexOf( Char ) != -1 ) {
				formattedPhone += sPhone.value.charAt(i);
			}
		}
		
		if( formattedPhone.length > 7 ) {
			sPhone.value = "(" + formattedPhone.substr( 0, 3 ) + ") " + formattedPhone.substr( 3, 3 ) + "-" + formattedPhone.substr( 6 );
		} else {
			sPhone.value = formattedPhone.substr( 0, 3 ) + "-" + formattedPhone.substr( 3 );
		}
		
	}
	
	function formatCurrency(val) {

		num = val.value.toString().replace(/\$|\,/g,'');

		if(isNaN(num)) num = "0";
		
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();

		if(cents<10) cents = "0" + cents;

		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));

		val.value = (((sign)?'':'-') + '$' + num + '.' + cents);
	}
	
	function validate_form() {
		var isError = false;
		var newClassName = "app-form-error"
		var objForm = document.AppForm;
		var i;
		
		// Reset fields in error
		for( i=0; i<objForm.elements.length; i++ ) {
			if( document.AppForm.elements[i].type == "text" ) {
				document.AppForm.elements[i].className = "app-form";
			}
		}
		
		// Last Name
		if( objForm.LastName.value.length == 0 || objForm.LastName.value == null ) {
			isError = true;
			document.getElementById('LastName').className = newClassName;
		}
		
		// First Name
		if( objForm.FirstName.value.length == 0 || objForm.FirstName.value == null ) {
			isError = true;
			document.getElementById('FirstName').className = newClassName;
		}
		
		// SSN
		if( trim( objForm.SSN.value.toUpperCase() ) != "CALL" ) {
			if( objForm.SSN.value.length < 9 || objForm.SSN.value.length > 11 ) {
				isError = true;
				document.getElementById('SSN').className = newClassName;
			} else {
				if( !IsNumeric( objForm.SSN.value ) ) { 
					isError = true;
					document.getElementById('SSN').className = newClassName;
				}
			}
		}
		
		// Email Address
		if( objForm.email.value.length > 0 ) {
			if( !isValidEmail( objForm.email.value ) ) { 
				isError = true;
				document.getElementById('email').className = newClassName;
			}
		}
	
		// Date of Birth
		if ( IsDate( objForm.DOB, "Form" ) == false ) {
			isError = true;
			document.getElementById('DOB').className = newClassName;
		}
		
		// Current Address
		if ( objForm.CurrentAddress1.value.length == 0 || objForm.CurrentAddress1.value == null ) {
			isError = true;
			document.getElementById('CurrentAddress1').className = newClassName;
		}
		
		if ( objForm.CurrentCity.value.length == 0 || objForm.CurrentCity.value == null ) {
			isError = true;
			document.getElementById('CurrentCity').className = newClassName;
		}
		
		if ( objForm.CurrentState.value.length == 0 || objForm.CurrentState.value == null ) {
			isError = true;
			document.getElementById('CurrentState').className = newClassName;
		}
		
		if ( objForm.CurrentZip.value.length == 0 || objForm.CurrentZip.value == null ) {
			isError = true;
			document.getElementById('CurrentZip').className = newClassName;
		}
		
		if ( objForm.HomePhone.value.length == 0 || objForm.HomePhone.value == null ) {
			isError = true;
			document.getElementById('HomePhone').className = newClassName;
		}
		
		if ( objForm.TimeAtAddress.value.length == 0 || objForm.TimeAtAddress.value == null ) {
			isError = true;
			document.getElementById('TimeAtAddress').className = newClassName;
		}
		
		// Previous Address
		if ( objForm.PreviousAddress1.value.length == 0 || objForm.PreviousAddress1.value == null ) {
			isError = true;
			document.getElementById('PreviousAddress1').className = newClassName;
		}
		
		if ( objForm.PreviousCity.value.length == 0 || objForm.PreviousCity.value == null ) {
			isError = true;
			document.getElementById('PreviousCity').className = newClassName;
		}
		
		if ( objForm.PreviousState.value.length == 0 || objForm.PreviousState.value == null ) {
			isError = true;
			document.getElementById('PreviousState').className = newClassName;
		}
		
		if ( objForm.PreviousZip.value.length == 0 || objForm.PreviousZip.value == null ) {
			isError = true;
			document.getElementById('PreviousZip').className = newClassName;
		}
		
		// Employer Address
		if ( objForm.Employer.value.length == 0 || objForm.Employer.value == null ) {
			isError = true;
			document.getElementById('Employer').className = newClassName;
		}
		
		if ( objForm.Occupation.value.length == 0 || objForm.Occupation.value == null ) {
			isError = true;
			document.getElementById('Occupation').className = newClassName;
		}
		
		if ( objForm.EmployerAddress1.value.length == 0 || objForm.EmployerAddress1.value == null ) {
			isError = true;
			document.getElementById('EmployerAddress1').className = newClassName;
		}
		
		if ( objForm.EmployerCity.value.length == 0 || objForm.EmployerCity.value == null ) {
			isError = true;
			document.getElementById('EmployerCity').className = newClassName;
		}
		
		if ( objForm.EmployerState.value.length == 0 || objForm.EmployerState.value == null ) {
			isError = true;
			document.getElementById('EmployerState').className = newClassName;
		}
		
		if ( objForm.EmployerZip.value.length == 0 || objForm.EmployerZip.value == null ) {
			isError = true;
			document.getElementById('EmployerZip').className = newClassName;
		}
		
		if ( objForm.TimeAtJob.value.length == 0 || objForm.TimeAtJob.value == null ) {
			isError = true;
			document.getElementById('TimeAtJob').className = newClassName;
		}
		
		if ( objForm.EmployerPhone.value.length == 0 || objForm.EmployerPhone.value == null ) {
			isError = true;
			document.getElementById('EmployerPhone').className = newClassName;
		}
		
		if ( objForm.Income.value.length == 0 || objForm.Income.value == null || objForm.Income.value == "$0.00" ) {
			isError = true;
			document.getElementById('Income').className = newClassName;
		} else {
			if ( !IsNumeric( objForm.Income.value ) ) {
			isError = true;
			document.getElementById('Income').className = newClassName;
			}
		}
		
		// Spouse information
		// Only check spouse information if a name is entered
		if ( objForm.SpouseFirstName.value.length > 0 || objForm.SpouseLastName.value.length > 0 || getCheckedValue( objForm.MaritalStatus ) == "Married" ) {
			
			// Spouse Name (only required if marital status is "Married"
			if ( getCheckedValue( objForm.MaritalStatus ) == "Married" ) {
			
				if( objForm.SpouseLastName.value.length == 0 || objForm.SpouseLastName.value == null ) {
					isError = true;
					document.getElementById('SpouseLastName').className = newClassName;
				}
				
				if( objForm.SpouseFirstName.value.length == 0 || objForm.SpouseFirstName.value == null ) {
					isError = true;
					document.getElementById('SpouseFirstName').className = newClassName;
				}
			}
			
			// Spouse SSN
			if( trim( objForm.SpouseSSN.value.toUpperCase() ) != "CALL" ) {
				if( objForm.SpouseSSN.value.length < 9 || objForm.SpouseSSN.value.length > 11 ) {
					isError = true;
					document.getElementById('SpouseSSN').className = newClassName;
				} else {
					if( !IsNumeric( objForm.SpouseSSN.value ) ) { 
						isError = true;
						document.getElementById('SpouseSSN').className = newClassName;
					}
				}
			}
			
			// Date of Birth
			if( IsDate( objForm.SpouseDOB, "Form" ) == false ) {
				isError = true;
				document.getElementById('SpouseDOB').className = newClassName;
			}
		}
		
		// Pet Information
		// Only required if something other than 'None' is selected
		if( getCheckedValue( objForm.Pet ) != "None" ) {
			
			if( objForm.PetBreed.value.length == 0 || objForm.PetBreed.value == null ) {
				isError = true;
				document.getElementById('PetBreed').className = newClassName;
			}
			
			if( objForm.PetSize.value.length == 0 || objForm.PetSize.value == null ) {
				isError = true;
				document.getElementById('PetSize').className = newClassName;
			}
			if( objForm.PetWeight.value.length == 0 || objForm.PetWeight.value == null ) {
				isError = true;
				document.getElementById('PetWeight').className = newClassName;
			}
			
			if( objForm.PetAge.value.length == 0 || objForm.PetAge.value == null ) {
			isError = true;
			document.getElementById('PetAge').className = newClassName;
			}

		}
		
		// Bank Information	
		if ( objForm.BankName.value.length == 0 || objForm.BankName.value == null ) {
			isError = true;
			document.getElementById('BankName').className = newClassName;
		}
		
		if ( objForm.BankCity.value.length == 0 || objForm.BankCity.value == null ) {
			isError = true;
			document.getElementById('BankCity').className = newClassName;
		}
		
		if ( objForm.BankState.value.length == 0 || objForm.EmployerState.value == null ) {
			isError = true;
			document.getElementById('BankState').className = newClassName;
		}
		
		// Signature Information
		// At least one person must have signed the form.
		// Because this is using a PHP array for the text field, we must use the
		// JavaScript elements collection to assign the SignatureName array to 
		// a JavaScript array.
		var signatureName = objForm.elements['SignatureName[]'];
		if ( signatureName[0].value.length == 0 || signatureName[0].value == null ) {
			isError = true;
			document.getElementById('SignatureName[]').className = newClassName;
		}
		var signatureDate = objForm.elements['SignatureDate[]'];
		if ( signatureDate[0].value.length == 0 || signatureDate[0].value == null ) {
			isError = true;
			document.getElementById('SignatureDate[]').className = newClassName;
		} else {
			if ( IsDate( signatureDate[0], "Form" ) == false ) {
				isError = true;
				document.getElementById('SignatureDate[]').className = newClassName;
			}
		}
		
		// Check to see if ErrorMsg contains a value.  If not all is okay and submit the form
		if( isError ) {
			alert( 'Please correct the errors in the highlighted fields and submit the form again.' );
		} else {
			// This is to keep hackers from submitting the form from a remote computer
			// and submitting junk.  The form has a hidden field called FormStatus with
			// the default value of "SendApp".  When the submit button is clicked, the
			// code below will change that value to the actual value that effects the
			// case statement in the php code.  Since the hacker can't see this JavaScript
			// file he can't determine the correct value.
			
			objForm.FormStatus.value = "MailForm";
		
			// Submit the form
			objForm.submit();
		}
	}
	

