// handles form validation
// allow a maximum of 3 submissions (note: is reset when page reloads)
// do not post the form unless required text is found
// notify of successful submissions only

var nsubmit = 0;
var maxsubmit = 3;

function istext (s)
   {
   for (var i=0; i<s.length; i++)
      {
      var c = s.charAt (i);
      if (c != ' ' && c !='\n' && c != '\t') return true;
      }
   return false;
   }
   
function isinteger (s)
   {
   for (var i=0; i<s.length; i++)
      {
      var c = s.charAt (i);
      if (c < '0' || c > '9') return false;
      }
   return true;
   }

// simple test for a legal email address
// must be at least x@y.z

function isemail (s)
   {
   var i = s.indexOf('@');
   if (i < 1) return false;
   if (i > (s.length-4)) return false;
   s = s.substring(i+1);
   i = s.indexOf('.');
   if (i < 1) return false;
   if (i > (s.length-1)) return false;
   return true;
   }

function checkForm (culture_form)
   {
//   alert ("Submission number " + nsubmit);
//   alert (culture_form.elements[1].value);
//   alert (istext (culture_form.elements[1].value));

   if (nsubmit > maxsubmit) return false;
   if (!istext (culture_form.given_names.value) || !istext (culture_form.surname.value))
      {
      alert ('\n   A name must be provided');
      return false;
      }
   if (!istext (culture_form.address1.value))
      {
      alert ('\n   A postal address must be provided');
      return false;
      }
   if (!istext (culture_form.contact_email.value) && !istext (culture_form.contact_phone.value))
      {
      alert ('\n   Either an email address or a phone number must be provided');
      return false;
      }
   if (istext (culture_form.contact_email.value) && !isemail (culture_form.contact_email.value))
      {
      alert ('\n   Not a valid email address');
      return false;
      }
   if (!culture_form.interest_dance.checked &&
       !culture_form.interest_playing.checked &&
       !culture_form.interest_overview.checked &&
       !culture_form.interest_construction.checked)
      {
      alert ('\n   You should specify a workshop interest');
      return false;
      }
   if (!isinteger (culture_form.number_of_participants.value))
      {
      alert ('\n   The number of participants must be provided');
      return false;
      }
   if (culture_form.number_of_participants.value < 1 || culture_form.number_of_participants.value > 4)
      {
      alert ('\n   The number of participants must be realistic (maximum is 4)');
      return false;
      }
   if (!istext (culture_form.date_of_arrival.value))
      {
      alert ('\n   An approximate desired date of arrival must be provided');
      return false;
      }      
   nsubmit++;
   culture_form.date_sent.value = Date();
   return true;
   }
