function validate(form) {
// Get parameter values and check for required elements

	try {fname = form.fname.value;} catch(err){}
	try {lname = form.lname.value;} catch(err){}
	try {accountname = form.accountname.value;} catch(err){}
	try {body = form.alt_body.value;} catch(err){}
	try {address1 = form.address1.value;} catch(err){}
	try {address2 = form.address2.value;} catch(err){}
	try {sn = form.sn.value;} catch(err){}
	try {school = form.school.value;} catch(err){}
	try {app = form.app.value;} catch(err){}
	try {phone = form.phone.value;} catch(err){}
	try {city = form.city.value;} catch(err){}
	try {zipcode = form.zipcode.value;} catch(err){}
	try {purchasedate = form.purchasedate.value;} catch(err){}
	try {alt_body = form.alt_body.value;} catch(err){}
	try {state = form.state.options[form.state.selectedIndex].value;} catch(err){}
	
	subcategory = form.category.value;
	err_string = "Please provide info for all required fields!";
	
	// Check for required fields
	if (subcategory == 'Serial Number not Recognized') {
		if (
			!fname
			|| !lname
			|| !sn
			|| !address1
			|| !accountname
			|| !city
			|| !state
			|| !zipcode
			|| !alt_body
			) { 
				alert(err_string);
				return false;
			}
	}
	else if (subcategory == 'Incorrect DOP') {
		if (
			!fname
			|| !lname
			|| !sn
			|| !accountname
			|| !alt_body
			) { 
				alert(err_string);
				return false;
			}
	}
	else if (subcategory == 'APP is incorrect') {
		if (
			!fname
			|| !lname
			|| !sn
			|| !accountname
			|| !app
			|| !alt_body
			) { 
				alert(err_string);
				return false;
			}
	}
	else if (subcategory == 'Enroll Education Agreement') {
		if (
			!fname
			|| !lname
			|| !sn
			|| !accountname
			|| !school
			|| !alt_body
			) { 
				alert(err_string);
				return false;
			}
	}
	else {
		alert('Please report an error on a warranty check page!');
		return false;
	}

   if (!validateSerialNumber(form.sn)) {
      return false;
   }


	// Set body value for submittal and start appending the 'extra' information
	form.body.value = alt_body + '\n';
	form.body.value = body + '\n\n--------------------- Additional Info -------------------------';

	try {
		if (sn) {form.body.value = form.body.value + '\nSerial Number: ' + sn; }
		if (school) {form.body.value = form.body.value + '\nSchool Name: ' + school; }
		if (app) {form.body.value = form.body.value + '\nAppleCare Agreement Enrollment Number: ' + app; }
		if (phone) {form.body.value = form.body.value + '\nTelephone: ' + phone; }
		if (address1) {form.body.value = form.body.value + '\nAddress 1: ' + address1; }
		if (address2) {form.body.value = form.body.value + '\nAddress2: ' + address2; }
		if (city) {form.body.value = form.body.value + '\nCity: ' + city; }
		if (state) {form.body.value = form.body.value + '\nState: ' + state; }
		if (zipcode) {form.body.value = form.body.value + '\nTelephone: ' + zipcode; }
		if (purchasedate) {form.body.value = form.body.value + '\nDate of Purchase: ' + purchasedate; }
	}
	catch(err) {}
	
	// If everything checks out to here, we submit the form.
	form.submit();
}
