function checkEntryType()
{
	if(document.MM_returnValue)
	{
		if(!(document.listing_request.type_vo.checked||document.listing_request.type_studio.checked
			||document.listing_request.type_pubradio.checked||document.listing_request.type_manufact.checked
			||document.listing_request.type_commradio.checked||document.listing_request.type_distrib.checked
			||document.listing_request.type_sales.checked))
		{
			document.MM_returnValue = false;
			alert('At least one entry type must be selected');
		}
		else
			document.MM_returnValue = true;
	}
}

function checkRegion()
{
	if(document.listing_request.country.value == 'USA') /* USA */
	{
		document.listing_request.nonUS_region.value = '';
		document.listing_request.nonUS_region.disabled = true;
		document.listing_request.state.disabled = false;
	}
	else
	{
		document.listing_request.state.selectedIndex = 0;
		document.listing_request.nonUS_region.disabled = false;
		document.listing_request.state.disabled = true;
	}
}

function codecSelect(n)
{
	var sroot = 'document.listing_request.codec' + n.toString(),
		other = sroot + '_other.disabled=',
		otherval = sroot + '_other.value=""',
		l1 = sroot + '_1.disabled=',
		l1val = sroot + '_1.value=""',
		l2 = sroot + '_2.disabled=',
		l2val = sroot + '_2.value=""',
		value = sroot + '.value';
	if(eval(value) == 'Other')
	{
		eval(other+'false;');
		eval(l1+'false;');
		eval(l2+'false;');
	}
	else if(eval(value) == 'None')
	{
		eval(otherval);
		eval(other+'true;');
		eval(l1val);
		eval(l1+'true;');
		eval(l2val);
		eval(l2+'true;');
	}
	else
	{
		eval(otherval);
		eval(other+'true;');
		eval(l1+'false;');
		eval(l2+'false;');
	}
}

function ftpSite()
{
	if(document.listing_request.ftp[0].checked) document.listing_request.ftp_upload.disabled = false;
	else 
	{
		document.listing_request.ftp_upload.selectedIndex = 0;
		document.listing_request.ftp_upload.disabled = true;
	}
}
	
function vo_change()
{
	if(document.listing_request.type_vo.checked)
		document.listing_request.vo_language.disabled = false;
	else
	{
		document.listing_request.vo_language.value = '';
		document.listing_request.vo_language.disabled = true;
	}
}

function disableFields()
{
	ftpSite();
	vo_change();
	checkRegion();
	for(var i = 1; i<7 ; ++i)
		codecSelect(i);
}

function resetFields()
{
	document.listing_request.reset();	
	disableFields();
}

function isBlank(s)
{
	if(s == null || s == "") return true;
	for(var i=0; i<s.length; ++i)
	{
		var c = s.charAt(i);
		if( c!= ' ' && c!='\n' && c!= '') return false;
	}
	return true;
}

function setFields(f)
{
	f.name.required=true;
	f.contact_email.required=true;
	f.contact_phone.required=true;
	f.city.required=true;
	f.country.required=true;
	f.postcode.required=true;
	f.studios.required=true;
	f.studios.min = 1; f.studios.max = 100;
	f.lines.required=true;
	f.lines.min = 1; f.lines.max = 100;
}

function validateForm(f)
{
  var msg, empty_fields = "", errors = "";
  
  setFields(f);
  for(var i=0; i<f.length; ++i)
  {
  	var e = f.elements[i];
	if((e.type == "text" || e.type == "textarea") && e.required)
	{
		if(isBlank(e.value))
		{
			empty_fields += "\n           "+e.name;
			continue;
		}
		if(e.numeric || e.min != null || e.max != null)
		{
			var v = parseFloat(e.value);
			if(isNaN(v) || e.min != null && v<e.min || e.max != null && v > e.max)
			{
				errors += "- The field " + e.name + " must be a number";
				if(e.min != null)
					errors += " that is greater than "+e.min;
				if(e.max != null && e.min != null)
					errors += " and less than "+e.max;
				else if(e.max!=null)
					errors += " that is less than "+e.max;
				errors += ".\n";
			}
		}
	}
  }
  
  // now check the less easy to check fields
  // entry type - one of these must be set
  if(!(f.type_studio.checked || f.type_pubradio.checked || f.type_manufact.checked || f.type_vo.checked || f.type_commradio.checked || f.type_distrib.checked || f.type_sales.checked))
  	errors += "- One of the entry type boxes must be checked\n";
  if(f.country.value != 'USA' && isBlank(f.nonUS_region.value))
  	errors += "- A state or region must be entered\n";
  if(f.ftp[0].checked && f.ftp_upload.selectedIndex == 0)
  	errors += "- If you have an ftp site, an ftp upload speed must be selected\n";
  if(!empty_fields && !errors) return true;
  msg  = "_____________________________________________________________\n\n";
  msg += "The form was not submitted because of the following error(s).\n";
  msg += "Please correct these error(s) and re-submit.\n";
  msg += "_____________________________________________________________\n\n";
  if(empty_fields)
  {
  	msg += "- The following required field(s) are empty:" + empty_fields + "\n";
	if(errors) msg += "\n";
  }
  msg += errors;
  alert(msg);
  return false;
}
