function check_form ()
{
  valid = true; // assume valid

  if (document.ipmc.fname.value.length == 0)
     { valid = false; alert('(Registrant 1) First Name Must be Filled In!');
      document.ipmc.fname.focus();return false; }
  if (document.ipmc.lname.value.length == 0)
     { valid = false; alert('(Registrant 1) Last Name Must be Filled In!');
      document.ipmc.lname.focus();return false; }
	if (!document.ipmc.gender1[0].checked && 
	    !document.ipmc.gender1[1].checked)
     { valid = false; alert('(Registrant 1) Gender Must be Checked!');
      document.ipmc.gender1[0].focus();return false; }

	if (document.ipmc.price[1].checked ||
		  document.ipmc.price[4].checked ){
			if (document.ipmc.sfname.value.length == 0)
				 { valid = false; alert('(Registrant 2) First Name Must be Filled In!');
					document.ipmc.sfname.focus();return false; }
			if (document.ipmc.slname.value.length == 0)
				 { valid = false; alert('(Registrant 2) Last Name Must be Filled In!');
					document.ipmc.slname.focus();return false; }
			if (!document.ipmc.gender2[0].checked && 
					!document.ipmc.gender2[1].checked)
				 { valid = false; alert('(Registrant 2) Gender Must be Checked!');
					document.ipmc.gender2[0].focus();return false; }
	}

	if (document.ipmc.address.value.length == 0)
	  { valid = false; alert('Address Must be Filled In!');
		document.ipmc.address.focus();return false; }
	if (document.ipmc.city.value.length == 0)
	 { valid = false; alert('City Must be Filled In!');
		document.ipmc.city.focus();return false; }
//	if (document.ipmc.state.selectedIndex == false )
	if (document.ipmc.state.value.length == 0)
	 { valid = false; alert('State Must be Filled In!');
		document.ipmc.state.focus();return false; }
	if (document.ipmc.zip.value.length == 0)
	 { valid = false; alert('Zip Code Must be Filled In!');
		document.ipmc.zip.focus();return false; }
	if (document.ipmc.country.value.length == 0)
	 { valid = false; alert('Country Must be Filled In!');
		document.ipmc.country.focus();return false; }

	if (document.ipmc.phone_number1.value.length == 0)
	 { valid = false; alert('Home Phone Number Must be Filled In!');
		document.ipmc.phone_number1.focus();return false; }
	if (document.ipmc.phone_number2.value.length == 0)
	 { valid = false; alert('Work Phone Number Must be Filled In!');
		document.ipmc.phone_number2.focus();return false; }
	
	if (document.ipmc.email.value.length == 0)
	 { valid = false; alert('E-mail address Must be Filled In!');
		document.ipmc.email.focus();return false; }

  if (document.ipmc.email.value.length > 0)
	 { valid = VerifyEmailAddress();
	    if (valid==false)
	    {document.ipmc.email.focus(); return false;}
	 }

/*
	if (document.ipmc.mname.value.length == 0)
	  { valid = false; alert('Ministry Name Must be Filled In!');
		document.ipmc.mname.focus();return false; }
	if (document.ipmc.maddress.value.length == 0)
	  { valid = false; alert('Ministry Address Must be Filled In!');
		document.ipmc.maddress.focus();return false; }
	if (document.ipmc.mcity.value.length == 0)
	 { valid = false; alert('Ministry City Must be Filled In!');
		document.ipmc.mcity.focus();return false; }
//	if (document.ipmc.mstate.selectedIndex == false )
	if (document.ipmc.mstate.value.length == 0)
	 { valid = false; alert('Ministry State Must be Filled In!');
		document.ipmc.mstate.focus();return false; }
	if (document.ipmc.mzip.value.length == 0)
	 { valid = false; alert('Ministry Zip Code Must be Filled In!');
		document.ipmc.mzip.focus();return false; }
	if (document.ipmc.mcountry.value.length == 0)
	 { valid = false; alert('Ministry Country Must be Filled In!');
		document.ipmc.mcountry.focus();return false; }
	if (document.ipmc.phone_number3.value.length == 0)
	 { valid = false; alert('Ministry Phone Number Must be Filled In!');
		document.ipmc.phone_number3.focus();return false; }
*/

//ADULTS
if ((document.ipmc.price[0].checked ||
     document.ipmc.price[1].checked ||
     document.ipmc.price[2].checked ) &&
	   !document.ipmc.dayM.checked &&
				!document.ipmc.dayT.checked  &&
				!document.ipmc.dayW.checked &&
				!document.ipmc.dayTh.checked )
			{ valid = false; alert('ADULT Days Attending: at least one must be checked!');
						document.ipmc.dayM.focus();return false; }

	if ((document.ipmc.qtyFC1.value > 0  ||
						document.ipmc.qtyFC2.value > 0 ||
						document.ipmc.qtyFC3.value > 0 ||
						document.ipmc.qtyDC1.value > 0 ||
						document.ipmc.qtyDC2.value > 0 ||
						document.ipmc.qtyDC3.value > 0 ) &&
						document.ipmc.childrennames.value.length == 0)
			{ valid = false; alert('Appears that you are registering CHILDREN, you must list ' +
																																				'\ntheir name(s) in the "All youth & children names and ages attending:" box');
						document.ipmc.childrennames.focus();return false; }

//YOUTH
if (document.ipmc.priceY[0].checked &&
	   !document.ipmc.dayMY.checked &&
				!document.ipmc.dayTY.checked  &&
				!document.ipmc.dayWY.checked &&
				!document.ipmc.dayThY.checked )
			{ valid = false; alert('YOUTH Days Attending: at least one must be checked!');
						document.ipmc.dayMY.focus();return false; }

if ((document.ipmc.priceY[0].checked ||
	   document.ipmc.priceY[1].checked) &&
	   !document.ipmc.disclaimer.checked )
			{ valid = false; alert('YOUTH Disclaimer checkbox must be checked!');
						document.ipmc.disclaimer.focus();return false; }

	if ((document.ipmc.qtyFY.value > 0 ||
						document.ipmc.qtyDY.value > 0 ) &&
						document.ipmc.childrennames.value.length == 0)
			{ valid = false; alert('Appears that you are registering YOUTH, you must list ' +
																																				'\ntheir name(s) in the "All youth & children names and ages attending:" box');
						document.ipmc.childrennames.focus();return false; }


//TOTALS

	if (document.ipmc.total.value == 0)
		{ valid = false; alert('TOTAL REGISTRATION IS ZERO (0), You must finish your registration!');
	    document.ipmc.total.focus();return false; }

 //To eliminate form spam and hijacking by automated bots we use Human Intelligence Identification Test 
	if (document.ipmc.total.value != document.ipmc.hii.value)
		{ valid = false; alert('Provide the Required ANSWER to the IDENTIFICATION QUESTION!');
	    document.ipmc.hii.value="";
	    document.ipmc.hii.focus();return false; }
	
	if (valid)
        {

			document.ipmc.gender1_m.value = "";
			document.ipmc.gender1_f.value = "";
			document.ipmc.gender2_m.value = "";
			document.ipmc.gender2_f.value = "";
			document.ipmc.mon.value = "";
			document.ipmc.tue.value = "";
			document.ipmc.wed.value = "";
			document.ipmc.thu.value = "";
			document.ipmc.price0.value = "";
			document.ipmc.price1.value = "";
			document.ipmc.price2.value = "";
			document.ipmc.price3.value = "";
			document.ipmc.price4.value = "";
			document.ipmc.price5.value = "";
			document.ipmc.member0.value = "";
			document.ipmc.member1.value = "";
			
			if (document.ipmc.gender1[0].checked == true){document.ipmc.gender1_m.value = "checked";}
			if (document.ipmc.gender1[1].checked == true){document.ipmc.gender1_f.value = "checked";}
			if (document.ipmc.gender2[0].checked == true){document.ipmc.gender2_m.value = "checked";}
			if (document.ipmc.gender2[1].checked == true){document.ipmc.gender2_f.value = "checked";}

			if (document.ipmc.dayM.checked == true){document.ipmc.mon.value = "checked";}
			if (document.ipmc.dayT.checked == true){document.ipmc.tue.value = "checked";}
			if (document.ipmc.dayW.checked == true){document.ipmc.wed.value = "checked";}
			if (document.ipmc.dayTh.checked == true){document.ipmc.thu.value = "checked";}

			if (document.ipmc.price[0].checked == true){document.ipmc.price0.value = "checked";}
			if (document.ipmc.price[1].checked == true){document.ipmc.price1.value = "checked";}
			if (document.ipmc.price[2].checked == true){document.ipmc.price2.value = "checked";}
			if (document.ipmc.price[3].checked == true){document.ipmc.price3.value = "checked";}
			if (document.ipmc.price[4].checked == true){document.ipmc.price4.value = "checked";}
			if (document.ipmc.price[5].checked == true){document.ipmc.price5.value = "checked";}

			if (document.ipmc.priceY[0].checked == true){document.ipmc.price0Y.value = "checked";}
			if (document.ipmc.priceY[1].checked == true){document.ipmc.price1Y.value = "checked";}

			if (document.ipmc.dayMY.checked == true){document.ipmc.monY.value = "checked";}
			if (document.ipmc.dayTY.checked == true){document.ipmc.tueY.value = "checked";}
			if (document.ipmc.dayWY.checked == true){document.ipmc.wedY.value = "checked";}
			if (document.ipmc.dayThY.checked == true){document.ipmc.thuY.value = "checked";}
			if (document.ipmc.disclaimer.checked == true){document.ipmc.disclaimY.value = "checked";}

			if (document.ipmc.member.checked == true){document.ipmc.member.value = "checked";}
//			if (document.ipmc.member[0].checked == true){document.ipmc.member0.value = "checked";}
//			if (document.ipmc.member[1].checked == true){document.ipmc.member1.value = "checked";}

	
			// Building paypal form data 
			//==================================================================
      document.paypal.item_number.value= document.ipmc.item_number.value;
      document.paypal.amount.value= document.ipmc.total.value;
      document.paypal.first_name.value= document.ipmc.fname.value;
      document.paypal.last_name.value= document.ipmc.lname.value;
      document.paypal.address1.value= document.ipmc.address.value;
      document.paypal.address2.value= document.ipmc.unit.value;
      document.paypal.city.value= document.ipmc.city.value;
      document.paypal.state.value= document.ipmc.state.value;
      document.paypal.zip.value= document.ipmc.zip.value;
   
			document.ipmc.submit();
			document.paypal.submit();

			return true;

        }

	 document.ipmc.email.focus();
   return false;
}


function VerifyEmailAddress()
{
  var Reason  = "Your Email Address appears incorrect.  \n\nPlease check. \n\nREASON:"
  var Success = "Email Address entered Correctly!"
  var checkStr = document.ipmc.email.value;
  checkStr = checkStr.toLowerCase();

  var ix = (checkStr.length - 4)
  var RC = true;
  var x = AtSignValid = DoublePeriod = PeriodValid = SpaceValid = ExtValid = RL = 0;

  for (i = 0;  i < checkStr.length;  i++)
  {
    if (checkStr.charAt(i) == '@')
      AtSignValid++;
    else if (checkStr.charAt(i) == '.')
    {
      if (x == (i-1))
        DoublePeriod++;
      else
      {
        x = i;
        PeriodValid++;
      }
    }
    else if (checkStr.charAt(i) == ' ')
      SpaceValid ++;
  }
  if (checkStr.indexOf(".com", ix) > -1) ExtValid++;
  else if (checkStr.indexOf(".edu", ix) > -1) ExtValid++;
  else if (checkStr.indexOf(".net", ix) > -1)  ExtValid++;
  else if (checkStr.indexOf(".biz", ix) > -1)  ExtValid++;
  else if (checkStr.indexOf(".org", ix) > -1) ExtValid++;
  else if (checkStr.indexOf(".gov", ix) > -1) ExtValid++;
  else if (checkStr.indexOf(".mil", ix) > -1) ExtValid++;
  else if (checkStr.indexOf(".cc", ix) > -1) ExtValid++;
 
	RL = Reason.length;
  if (AtSignValid != 1)    Reason += "\nOnly one '@' allowed, " + AtSignValid + " found.";
  if (PeriodValid == 0)   Reason += "\nAddress must contain at least one period.";
  if (SpaceValid > 0)     Reason += "\nNo Spaces allowed. Address contains " + SpaceValid + " space";
  if (SpaceValid > 1)     Reason += "s.";
  if (ExtValid == 0)       Reason += "\nAddress must contain at least one valid extension like: ";
  if (ExtValid == 0)       Reason += "\n\t.com\n\t.edu\n\t.net\n\t.biz\n\t.org\n\t.gov\n\t.mil\n\t.cc ";
  if (checkStr.length > 120) Reason += "\nPlease limit the Email Address to 120 characters.";

  if (RL != Reason.length)
  {
 alert(Reason);
 return false;
  }
  return true;
}
