// check the entire form
function validate(theForm) {
   var valid = true;
   if ( !validateEmail(theForm.email.value)) valid = false;
   if ( !validateFirst(theForm.firstName.value)) valid = false;
   if ( !validateSur(theForm.surName.value)) valid = false;
   if ( !validateWhere(theForm.whereHeard.value)) valid = false;
   if ( !validateDay(theForm.day.value,theForm.month.value,theForm.year.value)) valid = false;
   if ( valid ) return true;
   else return false;
}
function validateFirst(first) {
   var valid = true;
   if (first=='') {
      feedback('frMess','First Name',7);
      valid = false;
   } else feedback('frMess','First name*:',1);
   if ( valid ) return true;
   else return false;
}function validateSur(sur) {
   var valid = true;
   if (sur=='') {
      feedback('srMess','Surname',7);
      valid = false;
   } else feedback('srMess','Surname*:',1);
   if ( valid ) return true;
   else return false;
}function validateWhere(where) {
   var valid = true;
   if (where=='') {
      feedback('wrMess','Required Field',7);
      valid = false;
   } else feedback('wrMess','*Required fields',1);
   if ( valid ) return true;
   else return false;
}
// test for a valid email entry
function validateEmail(emailString) {
   var valid = true;

   if ( emailString == "" ) {
      feedback('erMess','Enter your email!',7);
      valid = false;
   } else if ( !validEmailString(emailString) ) {
      feedback('erMess','Not valid!',7);
      valid = false;
   } else feedback('erMess','Email*:',1);

   if ( valid ) return true;
   else return false;
}

// test for a valid password entry
function validateDay(dayString,monthString,yearString) {
   var valid = true;
     if ( (dayString == "")||(dayString == "dd")||(monthString=="")||(monthString=="mm")||(yearString="")||(yearString=="yyyy")) {
      feedback('nrMess','DOB!',7);
      valid = false;
   } else feedback('nrMess','DOB*:',1);
   if ( valid ) return true;
   else return false;
}
function validEmailString(emailString) {
   // regular expression works for most email strings
   var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
   if (filter.test(emailString)) return true;
   else return false;
}
function feedback(item,mess,count) {
   // set the message text
   document.getElementById(item).innerHTML = mess;

   // set it's colour
   if ( count%2 == 1 ) {
      document.getElementById(item).style.color = 'white';
   } else {
      document.getElementById(item).style.color = '#581040';
   }

   // set a timer to call this function again in 300ms
   count--;
   var foo = 'feedback(\'' + item + '\',\'' + mess + '\',' + count + ')';
   if ( count > 0 ) setTimeout(foo,300);
}