function validateSearchForm( searchForm )
{
	if( searchForm.qRadius != null && searchForm.qCity != null
		&& searchFrom.qState != null && searchForm.qZip != null
		&& searchForm.qRadius.options[searchForm.qRadius.selectedIndex].value != ''
		&& searchForm.qCity.value == ''
		&& searchForm.qZip.value == '' )
	{
		alert('You must specify City/State or Zip when doing a radial search!');
		searchForm.qCity.focus();
		return false;
	}
	if (searchForm.qMinPrice != null && searchForm.qMinPrice.value != '' 
		&& !isValidMoney(searchForm.qMinPrice.value))
	{
		alert('Invalid money figure: ' + searchForm.qMinPrice.value);
		searchForm.qMinPrice.focus();
		return false;
	}
	if (searchForm.qMaxPrice != null && searchForm.qMaxPrice.value != ''
		&& !isValidMoney(searchForm.qMaxPrice.value))
	{
		alert('Invalid money figure: ' + searchForm.qMaxPrice.value);
		searchForm.qMaxPrice.focus();
		return false;
	}
	if (searchForm.qMinLotSize != null && searchForm.qMinLotSize.value != '')
	{
		if (!isValidNumber(searchForm.qMinLotSize.value))
		{
			alert('Invalid numeric figure: ' + searchForm.qMinLotSize.value);
			searchForm.qMinLotSize.focus();
			return false;
		}
		if (searchForm.qLotSizeUnits != null
			&& searchForm.qLotSizeUnits.options[searchForm.qLotSizeUnits.selectedIndex].value == '')
		{
			alert('You must specify the units for Minimum Lot Size');
			searchForm.qLotSizeUnits.focus();
			return false;
		}
	}
	if (searchForm.qSortBy != null && searchForm.qSortBy.options[searchForm.qSortBy.selectedIndex].value != '')
	{
		if (searchForm.qSortBy.options[searchForm.qSortBy.selectedIndex].value == 'Distance'
			&& searchForm.qRadius != null
			&& searchForm.qRadius.options[searchForm.qRadius.selectedIndex].value != '')
		{
			alert('You can only sort by distance when doing a radial search.');
			searchForm.qSortBy.focus();
			return false;
		}
	}
	return true;
}

function isValidNumber(number) {
	if (number.search(/^\s*(?:\d{1,3}(?:,?\s*\d{3})*(?:\.\d*)?|(?:\.\d+))\s*$/) != -1) {
		return true;
	} else {
		return false;
	}
}

// returns true if money is a valid money figure with the proper punctuation
// currency can optionally begin with a $, may contain commas separating triplets, may contain a decimal point and up to 2 decimal places
// may contain whitespace in certain places (between $ and money, before/after commas, etc.)
function isValidMoney(money) {
	if (money.search(/^\$?\s*(?:(?:\d[\d\s]+|\d{1,3}(\s*,\s*\d{3})*)(?:\.\s*\d{0,2})?|\.\s*\d{1,2})$/) != -1) {
		return true;
	} else {
		return false;
	}
}
