function VaS_basic(formName)
{
	//alert(formName);

	missingFields = false;
	missingFieldNames = new Array();
	
	reqdFields = document.forms[formName].elements['required'].value;
	
	if (document.getElementById("ReqCCFields") != null) {
		reqdFields += GetRequiredCCFieldsIfPaymentTypeIsCC(formName);
	}

	if (document.getElementById("ReqBillingFields") != null) {
		reqdFields += GetRequiredBillingFieldsIfBillingTypeIsDifferent(formName);
	}
	
	if ( reqdFields != 'none' && reqdFields != '' )
	{
	
		reqd = reqdFields.split(",");
	
		for ( ii = 0 ; ii < reqd.length ; ii++ )
		{
			//alert(reqd[ii]);
			rFName = document.getElementById(reqd[ii]);
			//rFName = reqd[ii];//.replace(" ","");
			reqdType = rFName.type;
			
			//alert(reqdType);
			
			if ( reqdType == "select-one" ) 
			{ 
				reqdType = "select"; 
			}
			
			if ( reqdType == null ) 
			{ 
				if ( rFName.length > 1 )
				{
					reqdType = "radio"; 
				}
			}
			
			switch(reqdType)
			{
				case "text":
					if ( rFName.value == "" )
					{
						missingFieldNames[missingFieldNames.length] = rFName.getAttribute("name");
					}
					break;
					
				case "textarea":
					if ( rFName.value == "" )
					{
						missingFieldNames[missingFieldNames.length] = rFName.getAttribute("name");
					}
					break;
					
				case "checkbox":
					if ( !rFName.checked )
					{
						missingFieldNames[missingFieldNames.length] = rFName.getAttribute("name");
					}
					break;
					
				case "select":
					selectedValue = rFName.options[rFName.selectedIndex].value;
					if ( selectedValue == "none" || selectedValue == "" || selectedValue == " " || selectedValue == null )
					{
						missingFieldNames[missingFieldNames.length] = rFName.getAttribute("name");
					}
					break;
					
				case "radio":
					buttonChecked = false;
					for ( rb = 0 ; rb < document.forms[formName].elements[reqd[ii]].length ; rb++ )
					{
						radioButtonRef = document.forms[formName].elements[reqd[ii]];
						if ( radioButtonRef[rb].checked )
						{
							buttonChecked = true;
						}
					}
					
					if ( !buttonChecked )
					{
							missingFieldNames[missingFieldNames.length] = document.forms[formName].elements[reqd[ii]][0].getAttribute("name");
					}
					
					
					break;
					
					
			}
			
		}
		
		totalMissing = missingFieldNames.length;
	}
	else
	{
		document.forms[0].elements['required'].value = '';
		totalMissing = 0;
	}
		
	if ( totalMissing > 0 )
	{
		msg = "The following fields are required:\n\n";
		for ( mf = 0 ; mf < totalMissing ; mf++ )
		{
			fieldName = missingFieldNames[mf];
			fieldNameParts = fieldName.split("_");
			converted = "";
			for ( pc = 0 ; pc < fieldNameParts.length ; pc++ )
			{
				piece = fieldNameParts[pc];
				UCbit = piece.substring(0,1);
				lcbit = piece.substring(1,piece.length);
				UC = UCbit.toUpperCase();
				lc = lcbit.toLowerCase();
				piece = UC + lc;
				converted = converted + " " + piece;
			}
			msg = msg + converted + "\n";
		}
		alert(msg);
	}
	else
	{
		if ( document.forms[0].elements['email-address'] )
		{
			if ( document.forms[0].elements['email-address'].value != "" ) 
			{ 
				document.forms[0].elements['email'].value = document.forms[0].elements['email-address'].value;
			} 
		}
		document.forms[formName].submit();
	}
}

function GetRequiredCCFieldsIfPaymentTypeIsCC(formName) {
	if (get_radio_value("PaymentType", formName) == "CreditCard") {
		return "," + document.forms[formName].elements['ReqCCFields'].value; 
	} else {
		return "";
	}
}

function GetRequiredBillingFieldsIfBillingTypeIsDifferent(formName) {
	if (get_radio_value("PaymentType", formName) == "CreditCard") {
		if (get_radio_value("BillingType", formName) == "BillingAddressIsDifferentThanMailing") {
			return "," + document.forms[formName].elements['ReqBillingFields'].value; 
		} else {
			return "";
		}
	} else {
		return "";
	}
}

function get_radio_value(radioName, formName)
{
	var retval = "";
	var radioButtonRef = "";
	
	for ( rb = 0 ; rb < document.forms[formName].elements[radioName].length ; rb++ )
	{
		radioButtonRef = document.forms[formName].elements[radioName];
		
		if ( radioButtonRef[rb].checked )
		{
			retval = radioButtonRef[rb].value;
		}
	}
	return retval;
}

