function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function YY_checkform() { //v4.71
//copyright (c)1998,2002 Yaromat.com
  var a=YY_checkform.arguments,oo=true,v='',s='',err=false,r,o,at,o1,t,i,j,ma,rx,cd,cm,cy,dte,at;
  for (i=1; i<a.length;i=i+4){
    if (a[i+1].charAt(0)=='#'){r=true; a[i+1]=a[i+1].substring(1);}else{r=false}
    o=MM_findObj(a[i].replace(/\[\d+\]/ig,""));
    o1=MM_findObj(a[i+1].replace(/\[\d+\]/ig,""));
    v=o.value;t=a[i+2];
    if (o.type=='text'||o.type=='password'||o.type=='hidden'){
      if (r&&v.length==0){err=true}
      if (v.length>0)
      if (t==1){ //fromto
        ma=a[i+1].split('_');if(isNaN(v)||v<ma[0]/1||v > ma[1]/1){err=true}
      } else if (t==2){
        rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-zA-Z]{2,4}$");if(!rx.test(v))err=true;
      } else if (t==3){ // date
        ma=a[i+1].split("#");at=v.match(ma[0]);
        if(at){
          cd=(at[ma[1]])?at[ma[1]]:1;cm=at[ma[2]]-1;cy=at[ma[3]];
          dte=new Date(cy,cm,cd);
          if(dte.getFullYear()!=cy||dte.getDate()!=cd||dte.getMonth()!=cm){err=true};
        }else{err=true}
      } else if (t==4){ // time
        ma=a[i+1].split("#");at=v.match(ma[0]);if(!at){err=true}
      } else if (t==5){ // check this 2
            if(o1.length)o1=o1[a[i+1].replace(/(.*\[)|(\].*)/ig,"")];
            if(!o1.checked){err=true}
      } else if (t==6){ // the same
            if(v!=MM_findObj(a[i+1]).value){err=true}
      }
    } else
    if (!o.type&&o.length>0&&o[0].type=='radio'){
          at = a[i].match(/(.*)\[(\d+)\].*/i);
          o2=(o.length>1)?o[at[2]]:o;
      if (t==1&&o2&&o2.checked&&o1&&o1.value.length/1==0){err=true}
      if (t==2){
        oo=false;
        for(j=0;j<o.length;j++){oo=oo||o[j].checked}
        if(!oo){s+='* '+a[i+3]+'\n'}
      }
    } else if (o.type=='checkbox'){
      if((t==1&&o.checked==false)||(t==2&&o.checked&&o1&&o1.value.length/1==0)){err=true}
    } else if (o.type=='select-one'||o.type=='select-multiple'){
      if(t==1&&o.selectedIndex/1==0){err=true}
    }else if (o.type=='textarea'){
      if(v.length<a[i+1]){err=true}
    }
    if (err){s+='* '+a[i+3]+'\n'; err=false}
  }
  if (s!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+s)}
  document.MM_returnValue = (s=='');
}

var message = "Please ensure you complete the mandatory fields in red.\nThen click 'Submit'.";
var req_fields = new Array(
    'emailAddress'
);

function checkField(form, fieldName) {
    var field = form.elements[fieldName];
    var label = document.getElementById(fieldName + '_label');
    if (field.value == "") {
        label.style.color="#fce400";
        return false;
    } else {
        label.style.color="#703134";
        return true;
    }
}

function isValidEmail(str) {
    email_syntax = "^([\\w\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
    return str.match(email_syntax);
}

function isValidPhone(str) {
    phone_syntax = "^[ ().+-]*\\d[\\d ().+-]*$";
    return str.match(phone_syntax);
}

function isValidNumber(str) {
    return !isNaN(parseInt(str));
}

function checkGroup(elems) {
    var ok = false;
    for (var i = 0; i < elems.length; i++) {
        ok = ok || ((elems[i].type == 'checkbox') ? elems[i].checked : (elems[i].value != ''));
    }
    return ok;
}

function submitForm() {
var form = document.forms['registrationxyz'];
var valid = true;
correct_syntax = true;
errors = "\nErrors:";
    
try {
	for (i = 0; i < req_fields.length; i++) {
		valid = checkField(form, req_fields[i]) && valid;
	}
        
/////////////// For each group of checkboxes there will be the following three lines of code
    chckd = (document.getElementById('id_field_1').checked 
                 || document.getElementById('id_field_2').checked
                 || document.getElementById('id_field_3').checked);
        
    document.getElementById('id_field_label').style.color = (!chckd) ? "red" : "black";
    valid = chckd && valid;

if ((form.c_homephone.value != "") && !isValidPhone(form.c_homephone.value)) {
    document.getElementById('c_homephone_label').style.color = "#fce400";
    correct_syntax = false;
    errors += "\n    - Incorrect HOMEPHONE format"
}
if ((form.c_workphone.value != "") && !isValidPhone(form.c_workphone.value)) {
    document.getElementById('c_workphone_label').style.color = "#fce400";
    correct_syntax = false;
    errors += "\n    - Incorrect WORKPHONE format"
}
if ((form.c_email.value != "") && !isValidEmail(form.c_email.value)) {
    document.getElementById('c_email_label').style.color = "#fce400";
    correct_syntax = false;
    errors += "\n    - Incorrect EMAIL format"
}

} catch (e) {
  alert('An error occured. Please reload the page and try again.');
  return false;
}
    
msg = (!valid) ? message : "";
valid = valid && correct_syntax;
if (!valid) {
    alert((correct_syntax) ? msg : msg + errors);
}
return valid;
}