function showChildren(el)
{
	//son_of_q6_a1
	var re = new RegExp('son_of_' + el.id);
	var divs = document.getElementsByTagName('div');
	for ( i = 0; i < divs.length; i++ )
	{
		if ( divs[i].className.match(re) )
		{
			var rere = new RegExp('son_of_' + el.id + '_a' + el.value + '$');
			if ( divs[i].className.match(rere) ) 
			{
				divs[i].style.display = 'inline';
			}
			else
			{
				emptyValues(divs[i]);
				divs[i].style.display = 'none';
			}
		}			
	}
}

function emptyValues(el)
{
	var formTags = new Array('input', 'textarea', 'select');
	for ( t = 0; t < formTags.length; t++ )
	{
		var els = el.getElementsByTagName(formTags[t]);
		for ( e = 0; e < els.length; e++ )
		{
			els[e].value = '';
		}
	}
}

function getFieldName(fieldId)
{
	if ( document.getElementById(fieldId + '_label') )
	{
		return document.getElementById(fieldId + '_label').innerHTML;
	}
	else
	{
		return fieldId.replace(/_/g, " ");
	}
}		

function validateForm(thisForm)
{
	var reqTags = new Array('input', 'textarea', 'select');
	for ( t = 0; t < reqTags.length; t++ )
	{
		var els = thisForm.getElementsByTagName(reqTags[t]);
		for ( e = 0; e < els.length; e++ )
		{ 
			if ( els[e].className == 'validate_req' || ( els[e].className.match(/validate_req\s/) && els[e].value == '' ) )
			{
				if ( !validateReq(els[e]) )
				{
					alert('Please fill in the "' + getFieldName(els[e].id) + '" field.');
					return false;
				}
			}
			else if ( els[e].value != '' && els[e].className.match(/validate_phone/) )
			{
				if ( !validatePhone(els[e]) )
				{
					alert('Please enter a valid 10 digit phone number in the "' +  getFieldName(els[e].id) + '" field.');
					return false;
				}
			}
			else if ( els[e].value != '' && els[e].className.match(/validate_email/) )
			{
				if ( !validateEmail(els[e]) )
				{
					alert('Please enter a valid email address in the "' +  getFieldName(els[e].id) + '" field.');
					return false;
				}
			}
		}
	}
	return true;
}

function validateReq(req)
{
	if ( req.value == "" // value is empty
	     && ( !req.parentNode.className.match(/^child/)  // is not a child
			    || req.parentNode.style.display == 'inline' // is a visible child
			  )
		)
	{
		return false;
	}
	return true;
}

function validatePhone(phone)
{
	var myPhone = phone.value.replace(/\D/g, '');
	if ( myPhone.length == 10 )
	{
		phone.value = myPhone.substring(0,3) + '-' + myPhone.substring(3,6) + '-' + myPhone.substring(6,10);
		return true;	
	}
	else if ( myPhone.length == 11 )
	{
		phone.value = myPhone.substring(0, 1) + '-' + myPhone.substring(1,4) + '-' + myPhone.substring(4,7) + '-' + myPhone.substring(7,11);
		return true;
	}
	return false;
}

function validateEmail(email)
{
	if ( !email.value.match(/(.*)@(.*)\.(.*)/) )
	{
		return false;
	}
	return true;
}			