function validateRequired(field, label)
{
	with (field)
	{
		// if field is blank and is NOT a required field, this is OK.
		if (checkEmpty(value) && className != "required")
		{
			document.getElementById("error_"+label).style.display = "none";
			return true;
		}
		
		// if field is blank and IS a required field, this is NOT ok.
		if (checkEmpty(value) && className == "required")
		{ 
			displayError(label, "NOTE - please fill out this field");
			return false;
		}
		// if field has invalid characters (spam), this is NOT ok.
		else if (!validateChars(value))
		{
			displayError(label, "WARNING - illegal characters not allowed");
			return false;
		}
		else if (label == "email" && !validateEmail(value))
		{
		 	displayError(label, "ERROR - please enter a valid email address");
			return false;			
		}
		else if (label == "phone" && !validatePhone(value, maxLength))
		{
			displayError(label, "ERROR - phone must be 10 digits, with an area code");
			return false;						
		}
		else if (label == "fax" && !validatePhone(value, maxLength))
		{
			displayError(label, "ERROR - fax must be 10 digits, with an area code");
			return false;						
		}		
		else if ((label == "postalcode" || label == "ccpostalcode") && !validatePostalCode(value))
		{
			displayError(label, "ERROR - postal code must be in the format (T0T-0T0)");
			return false;						
		}	
		else if (label == "ccnumber" && !validateCreditCard(value))
		{
			displayError(label, "ERROR - must be numeric");
			return false;						
		}		
		else if (label == "ccsecurity" && !validateCSC(value))
		{
			displayError(label, "ERROR - must be 3 digits");
			return false;						
		}		
		else if (label == "ccexpire" && !validateCCExpire(value, maxLength))
		{
			displayError(label, "ERROR - please use this format (mm/yy)");
			return false;						
		}				
		else if (label == "message" && value.length > 300)
		{
			displayError(label, "ERROR - message cannot exceed 300 characters");			
			return false;									
		}
		else
		{
			document.getElementById("error_"+label).style.display = "none";
			return true;
		}
	}
}

function displayError(label, message)
{
	document.getElementById("error_"+label).style.display = "block";
	document.getElementById("error_"+label).innerHTML = message;				
}


function getElementsByClassName(type, class)
{
	var elems = document.getElementsByTagName(type);
	var classelems = new Array();
	var count = 0;
	var i = 0;
	
	for (i = 0; i < elems.length; i++)
	{
		if (elems[i].className == class)
		{
			classelems.push(elems[i]);
			count++;
		}
	}
	
	if (count > 0)
	{
		return classelems;
	}
	else
	{
		return false;
	}
}

function getFieldByTabIndex(index)
{
	var inputs = document.getElementsByTagName("input");
	var i = 0;
	
	for (i = 0; i < inputs.length; i++)
	{
		if (inputs[i].tabIndex == index)
		{
			return inputs[i];
		}
	}
	
	return false;
}

function nextField(object)
{
	if (object.value.length == object.maxLength)
	{
		var next = object.tabIndex + 1;		
		getFieldByTabIndex(next).focus();
	}
}


function setFocus(object)
{
	document.getElementById(object).focus();
}

/* used with the RESET form button */
function resetErrors()
{
	var elems = document.getElementsByTagName("p");
	var i = 0;
	
	for (i = 0; i < elems.length; i++)
	{
		if (elems[i].className == "error")
		{
			elems[i].style.display = "none";
		}
	}

	getFieldByTabIndex(1).focus();
}