function validateForm(form) {
	if (isNotEmpty(form.realname)) {
		if (isEmailAddr(form.email)) {
			if (isPhone(form.work_phone)) {
					if (isState(form.state)) {
					   if (isHearAbout(form.source)) {
						unval = getCheckedValue(form.new_or_used);
						if (unval == "Used") {
							if (isNotEmpty(form.series)) {
								if (isNotEmpty(form.year)) {
									if (isBodyType(form.body_type)){
										if (isNotEmpty(form.transmission)) {
											if (isNotEmpty(form.colour)) {
												if (isNotEmpty(form.engine)) {
													if (isNotEmpty(form.budget)) {
														form.submit();
														return true;
													}
												}
											}
										}
									}
								}
							}
						}
						else {
							form.submit();
							return true;
						}
				  	  }
					}
			}
		}
	}
	return false;
}


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 "";
}

// validates fields are not empty
function isNotEmpty(elem) {
	var str = elem.value;
	if (str == null || str.length ==0) {
		alert("Please fill in the required " + elem.name + " field.");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	} else {
		return true;
	}
}

// validates as positive or negative number
function isNumber(elem) {
	var str = elem.value;
	var oneDecimal = false;
	var oneChar = 0;
	// make sure value hasn't cast to number
	str = str.toString();
	for (var i = 0; i < str.length; i++) {
		oneChar = str.charAt(i).charCodeAt(0);
		// OK for minus as first character
		if (oneChar == 45) {
			if (i==0) {
				//continue;
			} else {
				alert("Only the first character may be a minus sign");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
		}
		
		// OK for one decimal point
		if (oneChar == 46) {
			if (!oneDecimal) {
				oneDecimal = true;
				//continue;
			} else {
				alert("Only one decimal is allowed in a number.");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
		}
		
		// characters outside 0-9 not OK
		if (oneChar < 48 || oneChar > 57) {
			alert("Enter only numbers into the field");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
		}
    }
    return true;
}

function isPhone(elem) {
	var str = elem.value.replace(/ /g,"");
	//var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var newstr;
	var re;
	
	if (str.length < 8) {
		alert("Please enter a valid work phone number of at least 8 digits.");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	}
	else {
		return true;
	}
	
/*	
	// strip all but 0-9 space, hyphen
		for (var i = 0; i < str.length; i++) {
			oneChar = str.charAt(i).charCodeAt(0);
			// acceptable characters (- . _ 0-9 a-z)
			if (oneChar > 47 && oneChar < 58) {
				newstr = newstr + str.charAt(i);
			}
		}
		str = newstr.substring(9, newstr.length);
	// if length is 11/12
	switch (str.length) {
		case 11:
			re = /^61[23478][0-9]{8}$/
			if (!str.match(re)) {
				alert("Please enter a valid telephone number");
				return false;
			} else {
				return true;
			}
			break;
		case 10:
			re = /^0[23478][0-9]{8}$/
			if (!str.match(re)) {
				re = /^1[38]00[0-9]{6}$/
				
				if (!str.match(re)) {
					alert("Please enter a valid telephone number");
					return false;
				} else {
					return true;
				}
			} else {
				return true;
			}
			break;
		case 9:
			re = /^[23478][0-9]{8}$/
			if (!str.match(re)) {
					alert("Please enter a valid telephone number");
				return false;
			} else {
				return true;
			}
			break;
		case 8:
			re = /^[23478][0-9]{8}$/
			re = /[0-9]{8}/
			if (!str.match(re)) {
				//alert("Please include the area code for your telephone number");
				alert("Please enter a valid telephone number");
				return false;
			} else {
				return true;
			}
			break;
		case 6:
			re = /^131[0-9]{3}$/
			if (!str.match(re)) {
				alert("Please enter a valid telephone number");
				return false;
			} else {
				return true;
			}
			break;
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 7:
		default:
			alert("Please enter a valid telephone number");
			return false;
	}
	
	
	// if 1 is +, 2,3 must be 61.
	
	// if length is 10, must have beginning 0 or 1300 or 1800
	// if length is 9 (reg number)
	// 1st must be 2,3,4,7,8
	
	// if length is 6, must be a 131xxx number. (allowed for business)

*/
}

function isHearAbout(elem) {
	var str = elem.options[elem.selectedIndex].value
	str = str.toLowerCase();
	if (str == 'please choose') {
		alert("Pleae tell us how you heard about us");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	}
	else {
		return true;
	}
}
function isState(elem) {
	var str = elem.options[elem.selectedIndex].value
	str = str.toLowerCase();
	switch (str) {
		case 'qld':
		case 'wa':
		case 'vic':
		case 'nsw':
		case 'nt':
		case 'tas':
		case 'sa':
		case 'act':
		case 'queensland':
		case 'western australia':
		case 'new south wales':
		case 'norther territory':
		case 'tasmania':
		case 'south australia':
		case 'australian capital territory':
			return true;
			break;
		default:
			alert("Pleae enter a valid Australian state");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
			break;
	}
}

function isBodyType(elem) {
	var str = elem.options[elem.selectedIndex].value
	str = str.toLowerCase();
	if (str == "choose") {
		alert("Pleae enter a body type");
		return false;
	}
	else {
		return true;
	}
}

function isPostcode(elem) {
	str = elem.value;
	if (str.length !=4) {
		alert("Postcode must contain 4 digits.");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	} else {
		if (isNumber(str)) {
			return true;
		} else {
			alert("Postcode must be a number only");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
		}
	}
}

// validates email address
function isEmailAddr(elem) {
	var str = elem.value;
	var oneChar;
	
	str = str.toLowerCase();
	if (str.indexOf("@") > 1) {
		var addr = str.substring(0, str.indexOf("@"));
		var domain = str.substring(str.indexOf("@")+ 1, str.length);
		
		// at least one TLD required
		if (domain.indexOf(".") == -1) {
			alert("Verify the domain portion of the email address");
			setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
			return false;
		}
		
		// parse address portion first, character by character
		for (var i = 0; i < addr.length; i++) {
			oneChar = addr.charAt(i).charCodeAt(0);
			// dot or hyphen not allowed in first position; dot in last
			if ((i == 0 && (oneChar == 45 || oneChar == 46)) ||
				(i == addr.length - 1 && oneChar == 46)) {
				alert("Verify the user name portion of the email address.");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
			// acceptable characters (- . _ 0-9 a-z)
			if (oneChar == 45 || oneChar == 46 || oneChar == 95 ||
				(oneChar > 47 && oneChar < 58) || (oneChar > 96 && oneChar < 123)) {
				continue;
			} else {
				alert("Verify the username portion of the email address");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
		}
		for (i = 0; i < domain.length; i++) {
			oneChar = domain.charAt(i).charCodeAt(0);
			if ((i == 0 && (oneChar == 45 || oneChar == 46)) ||
				((i == domain.length - 1 || i == domain.length - 2) && oneChar == 46)) {
				alert("Verify the domain portion of the email address");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
			if (oneChar == 45 || oneChar == 46 || oneChar == 95 ||
				(oneChar > 47 && oneChar < 58) || (oneChar > 96 && oneChar < 123)) {
				continue;
			} else {
				alert("Verify the domain portion of the email address");
				setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
				return false;
			}
		}
		return true;
	}
	alert("The email address may not be formatted correctly. Please verify.");
	setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
	return false;
}

function focusElement(formName, elemName) {
	var elem = document.forms[formName].elements[elemName];
	elem.focus();
	elem.select();
}

