// Javascript for OCARC Membership Form
// Written by Bob Eckweiler, AF6C
// Copyright 2006 to 2007

var fullDues = 20;
var teenDues = 10;
var badgePrice = 3;
var bMailPrice = 1;
var familyDues = 10;
var today, prorate, extended, theForm;

function doInit() {
   theForm = document.OCARC_MEMBERSHIP_FORM;
   today = new Date();
   prorate = 1 - (Math.floor(today.getMonth() / 3) / 4);
   if (today.getMonth() > 5) {
      theForm.Period[1].disabled = false;
      }
   else {
      theForm.Period[1].disabled = true;
       }
   theForm.Period[0].checked = true;
   extended = false;
   }   

function doExtended() {
   if (theForm.Period[0].checked == true) {
      extended = false;
      }
   else {
      extended = true;
      }
   for (var i = 0; i < theForm.DuesP.length; i++) {
      if (theForm.DuesTypeP[i].checked == true) {
         doPriDues(i);
         }
      }    
   if (theForm.Family1.checked == true) {
      if (theForm.DuesType1[0].checked == true) {
         doFamDues(0);
         }
      } 
   }

function openWindow(URL) {
aWindow=window.open(URL, "theWindow", "toolbar=no,width=400,height=400,status=no,scrollbar=yes,resizable=no,menubar=no");
}

function doPriDues(n) {
   var dues;
   for (var i = 0; i < theForm.DuesP.length; i++) {
      if (theForm.DuesP[i].disabled == false) {
         theForm.DuesP[i].value = "";
         theForm.DuesP[i].disabled = true;
         }
      }
   if (n < 4) {
      theForm.DuesP[n].disabled = false;
      }      
   switch (n) {
      case 0:
         if (extended) {
            dues = fullDues * (1 + prorate) - fullDues/4;
            }
         else {
            dues = fullDues * prorate;
            }
         break;
      case 1:
         if (extended) {
           dues = fullDues * 2;
           }
         else {
            dues = fullDues;
           }
         break;
      case 2:
         if (extended) {
            dues = teenDues * (1 + prorate) - teenDues/4;
            }
         else {
            dues = teenDues * prorate;
            }
         break;
      case 3:
         if (extended) {
           dues = teenDues * 2;
           }
         else {
            dues = teenDues;
           }
         break;
      case 4:
         break;
      }
   if (n < 4) {
      theForm.DuesP[n].value = dues.toFixed(2);
      }
   doTotalDues();
   }

function doFamDues(n) {
   var dues;
   for (var i = 0; i < theForm.Dues1.length; i++) {
      if (theForm.Dues1[i].disabled == false) {
         theForm.Dues1[i].value = "";
         theForm.Dues1[i].disabled = true;
         }
      }
   theForm.Dues1[n].disabled = false;
   switch (n) {
      case 0:
         if (extended) {
            dues = familyDues * (1 + prorate) - familyDues/4;
            }
         else {
            dues = familyDues * prorate;
            }
         break;
      case 1:
         dues = familyDues;
         break;
      }
   theForm.Dues1[n].value = dues.toFixed(2);
   doTotalDues();
   }

function doBadges() {
   var flag = false;
   for (var i = 0; i < theForm.OrderBadge.length; i++) {
      if (theForm.OrderBadge[i].checked == true) {
         theForm.BadgePay[i].disabled = false;
         theForm.BadgeName[i].disabled = false;
         theForm.BadgePay[i].value = badgePrice.toFixed(2);
         flag = true;
         }
      else {
         theForm.BadgePay[i].value = "";
         theForm.BadgePay[i].disabled = true;
         theForm.BadgeName[i].value = "";
         theForm.BadgeName[i].disabled = true;
         }
      }
   if (flag) {
      theForm.BadgeDelivery[0].disabled = false;
      theForm.BadgeDelivery[1].disabled = false;
      }
   else {
      theForm.BadgeDelivery[0].checked = false;
      theForm.BadgeDelivery[0].disabled = true;
      theForm.BadgeDelivery[1].checked = false;
      theForm.BadgeDelivery[1].disabled = true;
      theForm.BadgeMailCost.value = "";
      }
   doBadgeDelivery();
   }

function doBadgeDelivery() {
   var mailCost = 0;
   if (theForm.BadgeDelivery[1].checked == true) {
      for (var i = 0; i < theForm.OrderBadge.length; i++) {
         if (theForm.OrderBadge[i].checked == true) {
            mailCost++
            }
         }
      theForm.BadgeMailCost.value = mailCost.toFixed(2); 
      }
   else {
      theForm.BadgeMailCost.value = "";
      }
   doTotalDues();
   } 
        
function doFamily1() {
   if (theForm.Family1.checked == true) {
      theForm.DuesType1[0].disabled = false;
      theForm.DuesType1[1].disabled = false;
      theForm.OrderBadge[1].disabled = false;
      theForm.BadgePay[1].disabled = false;
      theForm.Family1LastName.disabled = false;
      theForm.Family1FirstName.disabled = false;
      theForm.Family1Call.disabled = false;
      theForm.Family1LastName.disabled = false;
      theForm.Family1Class.disabled = false;
      theForm.Family1ARRL[0].disabled = false;
      theForm.Family1ARRL[1].disabled = false;

      theForm.Family2.disabled = false;
      }
   else {
      theForm.DuesType1[0].checked = false;
      theForm.DuesType1[0].disabled = true;
      theForm.DuesType1[1].checked = false;
      theForm.DuesType1[1].disabled = true;
      theForm.Dues1[0].value = "";
      theForm.Dues1[1].value = "";
      theForm.OrderBadge[1].checked = false;
      theForm.OrderBadge[1].disabled = true;
      theForm.BadgePay[1].value = "";
      theForm.BadgePay[1].disabled = true;
      theForm.Family1LastName.value = "";
      theForm.Family1LastName.disabled = true;
      theForm.Family1FirstName.value = "";
      theForm.Family1FirstName.disabled = true;
      theForm.Family1Call.value = "";
      theForm.Family1Call.disabled = true;
      theForm.Family1Class.selectedIndex = 0;
      theForm.Family1Class.disabled = true;
      theForm.Family1ARRL[0].disabled = true;
      theForm.Family1ARRL[0].checked = false;
      theForm.Family1ARRL[1].disabled = true;
      theForm.Family1ARRL[1].checked = false;

      theForm.Family2.checked = false;
      theForm.Family2.disabled = true;

      }
   doFamily2();
   }

function doFamily2() {
  if (theForm.Family2.checked == true) {
      theForm.DuesType2[0].disabled = false;
      theForm.DuesType2[1].disabled = false;
      theForm.OrderBadge[2].disabled = false;
      theForm.BadgePay[2].disabled = false;
      theForm.Family2LastName.disabled = false;
      theForm.Family2FirstName.disabled = false;
      theForm.Family2Call.disabled = false;
      theForm.Family2Class.disabled = false;
      theForm.Family2ARRL[0].disabled = false;
      theForm.Family2ARRL[1].disabled = false;
      }
   else {
      theForm.DuesType2[0].checked = false;
      theForm.DuesType2[0].disabled = true;
      theForm.DuesType2[1].checked = false;
      theForm.DuesType2[1].disabled = true;
      theForm.OrderBadge[2].checked = false;
      theForm.OrderBadge[2].disabled = true;
      theForm.BadgePay[2].value = "";
      theForm.BadgePay[2].disabled = true;
      theForm.Family2LastName.value = "";
      theForm.Family2LastName.disabled = true;
      theForm.Family2FirstName.value = "";
      theForm.Family2FirstName.disabled = true;
      theForm.Family2Call.value = "";
      theForm.Family2Call.disabled = true;
      theForm.Family2Class.selectedIndex = 0;
      theForm.Family2Class.disabled = true;
      theForm.Family2ARRL[0].disabled = true;
      theForm.Family2ARRL[0].checked = false;
      theForm.Family2ARRL[1].disabled = true;
      theForm.Family2ARRL[1].checked = false;
   doBadges();
      }
   }

function doTotalDues() {
   var theTotal = 0;
   for (var i = 0; i < theForm.DuesP.length; i++) {
      if (theForm.DuesP[i].disabled == false) {
         theTotal += Number(theForm.DuesP[i].value);
         }
      }
   for (var i = 0; i < theForm.Dues1.length; i++) {
      if (theForm.Dues1[i].disabled == false) {
         theTotal += Number(theForm.Dues1[i].value);
         }
      }
   for (var i = 0; i < theForm.OrderBadge.length; i++) {
      if (theForm.OrderBadge[i].checked == true) {
         theTotal += Number(theForm.BadgePay[i].value);
         }
      }
   theTotal += Number(theForm.BadgeMailCost.value);
   theForm.TotalDue.value = theTotal.toFixed(2);
   }

function doSubmitCheck() {
   var NoErrFlag = true;
   var eText = "";
    
    // CHECK PRIMARY MEMBER FIELDS:
    
    // Has a Last Name been entered?
   if (badField(theForm.LastName.value)) {
      NoErrFlag = false;
      eText = eText + "Enter a Last Name.\n";
      }

    // Has a First Name been entered?
   if (badField(theForm.FirstName.value)) {
      NoErrFlag = false;
      eText = eText + "Enter a First Name.\n";
      }

    // Has a License Class been selected?
   if (theForm.PrimaryClass.value == 0) {
      NoErrFlag = false;
      eText = eText + 'Select your license class;\n  if you don\'t have a license, select "<none>".\n';
      }
   else {
      if ((theForm.PrimaryClass.value > 1) && (badField(theForm.PrimaryCall.value))) {
         NoErrFlag = false;
         eText = eText + 'Please enter your call or select "<none>"\n  for your License Class.\n';
         }
      }
   if ((theForm.PrimaryClass.value == "None") && !(badField(theForm.PrimaryCall.value))) {
      NoErrFlag = false;
      eText = eText + 'Correct your "Call" or "License Class."\n';
      }
   if (badField(theForm.Address.value)) {
      NoErrFlag = false;
      eText = eText + "Enter a street address.\n";
      }
   if (badField(theForm.City.value)) {
      NoErrFlag = false;
      eText = eText + "Enter your city.\n";
      }
   if (badField(theForm.State.value)) {
      NoErrFlag = false;
      eText = eText + "Enter a State (Two letter abbreviation perferred).\n";
      }
   if (theForm.ZIP.value.length != 5) {
      NoErrFlag = false;
      eText = eText + "Enter your 5 digit zip code.\n";
      }
   if (!badField(theForm.Phone.value) && !theForm.PublishTele[0].checked && !theForm.PublishTele[1].checked) {
      eText = eText + "You've entered a phone number. Please\n  select whether you'd like in published in our\n  private roster.\n";
      NoErrFlag = false;
      }      
   if (!(theForm.PrimaryARRL[0].checked || theForm.PrimaryARRL[1].checked)) {
      NoErrFlag = false;
      eText = eText + "Select yes or no to ARRL member question.\n";
      }
   if (!NoErrFlag) {
      alert("Please correct the following field(s) under Primary Member:\n\n" + eText);
      return NoErrFlag;
      }
      
   // Check Primary Dues and Badge Fields:
   eText = "";
   if (!(theForm.DuesTypeP[0].checked || theForm.DuesTypeP[1].checked || theForm.DuesTypeP[2].checked || theForm.DuesTypeP[3].checked || theForm.DuesTypeP[4].checked)) {
      NoErrFlag = false;
      eText = eText + 'Select dues type. To just order a badge or\n  leave a message select "Current Member."\n';
      }
   if (theForm.OrderBadge[0].checked) {
      if (badField(theForm.BadgeName[0].value)) {
         NoErrFlag = false;
         eText = eText + 'Please enter a name for your badge.\n';
         }
      if (!theForm.BadgeDelivery[0].checked && !theForm.BadgeDelivery[1].checked) {
          NoErrFlag = false;
         eText = eText + 'Please select how you want your badge delivered.\n';
         }
      }
   if (!NoErrFlag) {
      alert("Please correct the following field(s) under Primary Dues and Badge:\n\n" + eText);
      return NoErrFlag;
      }
   // Check Family Member One Fields;
   eText = "";
   if (theForm.Family1.checked) {
      if (!(theForm.DuesType1[0].checked || theForm.DuesType1[1].checked)) {
         NoErrFlag = false;
         eText = eText + 'Select either New or Renewal.\n';
         }
      if (badField(theForm.Family1LastName.value)) {
         NoErrFlag = false;
         eText = eText + "Enter a Last Name.\n";
         }
      if (badField(theForm.Family1FirstName.value)) {
         NoErrFlag = false;
         eText = eText + "Enter a First Name.\n";
         }
      if (theForm.Family1Class.value == 0) {
         NoErrFlag = false;
         eText = eText + 'Select the license class;\n  if they don\'t have a license, select "<none>".\n';
         }
      else {
         if ((theForm.Family1Class.value > 1) && (badField(theForm.Family1Call.value))) {
            NoErrFlag = false;
            eText = eText + 'Please enter a call or select "<none>"\n  for their License Class.\n';
            }
         }
      if ((theForm.Family1Class.value == "None") && !(badField(theForm.Family1Call.value))) {
         NoErrFlag = false;
         eText = eText + 'Correct the "Call" or "License Class."\n';
         }
      if (!(theForm.Family1ARRL[0].checked || theForm.Family1ARRL[1].checked)) {
         NoErrFlag = false;
         eText = eText + "Select yes or no to ARRL member question.\n";
         }
      }
      
   if (!NoErrFlag) {
      alert("Please correct the following field(s) under First Additional Family Member:\n\n" + eText);
      return NoErrFlag;
      }
      
   // Check Family Member Two Fields;
   eText = "";
   if (theForm.Family2.checked) {
      if (!(theForm.DuesType2[0].checked || theForm.DuesType2[1].checked)) {
         NoErrFlag = false;
         eText = eText + 'Select either New or Renewal.\n';
         }
      if (badField(theForm.Family2LastName.value)) {
         NoErrFlag = false;
         eText = eText + "Enter a Last Name.\n";
         }
      if (badField(theForm.Family2FirstName.value)) {
         NoErrFlag = false;
         eText = eText + "Enter a First Name.\n";
         }
      if (theForm.Family2Class.value == 0) {
         NoErrFlag = false;
         eText = eText + 'Select the license class;\n  if they don\'t have a license, select "<none>".\n';
         }
      else {
         if ((theForm.Family2Class.value > 1) && (badField(theForm.Family2Call.value))) {
            NoErrFlag = false;
            eText = eText + 'Please enter a call or select "<none>"\n  for their License Class.\n';
            }
         }
      if ((theForm.Family2Class.value == "None") && !(badField(theForm.Family2Call.value))) {
         NoErrFlag = false;
         eText = eText + 'Correct the "Call" or "License Class."\n';
         }
      if (!(theForm.Family2ARRL[0].checked || theForm.Family2ARRL[1].checked)) {
         NoErrFlag = false;
         eText = eText + "Select yes or no to ARRL member question.\n";
         }
      }
   if (!NoErrFlag) {
      alert("Please correct the following field(s) under Second Additional Family Member:\n\n" + eText);
      return NoErrFlag;
      }
   return NoErrFlag;      
   }
   
// badField Simple string test:
//
function badField(theData) {
   if (theData == "") return true;
   while (theData.length > 0) {
      if (theData[0] == " ") { // Remove leading spaces
         theData = theData.substr(1, theData.length - 1);
         }
      else break;
      }
   if (theData == "") return true;
   while (theData.length > 0) {
      if (theData[theData.length - 1] == " ") { // Remove trailing spaces
         theData = theData.substr(0, theData.length - 1);
         }
      else break;
      }
// alert(">" + theData + "<");
   return false;   
   }
   