function disableTag(tag, disable) {
	if (tag.type) // Check to see if this is an input tag
		tag.disabled = disable;
	var i;
	for (i=0; i<tag.childNodes.length; i++)
		disableTag(tag.childNodes.item(i), disable);
}

function isValidDate(day, month, year) {
  var d = new Date();
  d.setFullYear(year, month-1, day);
  return (year == d.getFullYear() && month-1 == d.getMonth() && d.getDate() == day);
}

function isRadioSet(radio) {
	if (!radio.length) // Only 1 radio in group
		return radio.checked;
	var i;
	for (i=0; i<radio.length; i++)
		if (radio[i].checked)
			return true;
	return false;
}

function getRadioValue(radio) {
	if (!radio.length)
		if (radio.checked)
			return radio.value;
		else
			return '';

	var i;
	for (i=0; i<radio.length; i++)
		if (radio[i].checked)
			return radio[i].value;
	return '';
}

var autoValidate = false;

function revalidate(form) {
	if (!autoValidate) return;
	clearErrors();
	validate(form);
}

function formSubmit(form) {
	clearErrors();
	autoValidate = true;
	return validate(form);
}

function formReset(form) {
	form.reset();
	autoValidate = false;
	clearErrors();
	updateVisibility(form);
}