function validateRequireField(id, require)
{
  ById(id).setAttribute('validate', require ? 'required' : '');
}


//New validate() - the old legacy Validate() is below

function validate(id) {
  var f=document.getElementById(id);
  var Errors=new Array();
  var ValidEmail = /\w+@[0-9a-zA-Z-_]+?\.[0-9a-zA-Z-_]/;
  for (var i=0; i<f.length; i++) {
    if ((f.elements[i].nodeName == 'INPUT' ||
         f.elements[i].nodeName == 'SELECT' ||
         f.elements[i].nodeName == 'TEXTAREA')
    &&  (f.elements[i].type != 'hidden' &&
         f.elements[i].type != 'submit'
        )
    ) {
      var Name=f.elements[i].name;
      var Value=f.elements[i].value;
      var Label=f.elements[i].title;
      var Req=Name.substr(0,Name.indexOf('_'));
      if (Req=='r') {
        if (Value.length==0)
          Errors[Errors.length]="Please fill in the "+Label+" field.";
      }
      else if (Req=='re') {
        if (!ValidEmail.test(Value))
          Errors[Errors.length]="Please enter a valid email address for the "+Label+" field.";
      }
    }
  }
  
  if (Errors.length > 0) {
    var Msg='';
    for (var i=0; i<Errors.length; i++)
      Msg+=Errors[i]+'\n';
    alert(Msg);
    return false;
  }
  else {
    return true;
  }
}

//Old legacy Validate() - the function above is validate():

function Validate(id,confirmemail) {
  var f=document.getElementById(id); 
  var Errors=new Array();
  for (var i=0; i<f.length; i++) {
    if(f.elements[i].getAttribute('hint')) {
      if(f.elements[i].value==f.elements[i].title) {
        f.elements[i].value='';
      }
    }
    if (f.elements[i].getAttribute('validate')) {
      var Name=f.elements[i].name;
      var Value=f.elements[i].value;
      var Title=f.elements[i].title;
      var Req=f.elements[i].getAttribute('validate');
      if (Req=='required') {
        if (Value.length==0)
          Errors[Errors.length]="Please fill in the "+Title+".";
        else if ((Name=='contact_firstname' && Value=='First Name') || (Name=='contact_surname' && Value=='Surname'))
          Errors[Errors.length]="Please fill in the "+Title+".";
      }
      else if (Req=='email') {
        if (Value.indexOf('@')<1)
          Errors[Errors.length]="Please enter a valid email address for the "+Title+".";
      }
      else if (Req=='required-checked') {
        if (!f.elements[i].checked)
          Errors[Errors.length]="The "+Title+" checkbox must be checked before proceeding.";
      } else if (Req.substr(0,11) == 'javascript:') {
        
        error = 0; // if this is set to a string in the javascript, we'll display it to the user.
        eval(Req.substr(11));
        
        if (error != 0)
          Errors[Errors.length] = error;
      }
    }
    if(f.elements[i].getAttribute('hint')) {
      if(f.elements[i].value=='') {
        f.elements[i].value=f.elements[i].title;
      }
    }
  }
  if(confirmemail && (document.getElementById('email').value != document.getElementById('email_confirm').value)) {
    Errors[Errors.length]="Please ensure both email address fields match";
  }
  if (Errors.length > 0) {
    var Intro='The following errors occurred while trying to submit the form. Please correct them and try again.';
    var Msg='';
    var FE=document.getElementById('FormErrors');
    if (FE) {
      Msg+='<p><strong>'+Intro+'</strong></p>\n<ul>\n';
      for (var i=0; i<Errors.length; i++)
        Msg+='<li>'+Errors[i]+'</li>\n';
      Msg+='</ul>\n';
      document.getElementById('FormErrors').style.display='block';
      document.getElementById('FormErrors').innerHTML=Msg;
      document.location.href="#FormErrors";
    }
    else {
      Msg+=Intro+'\n\n';
      for (var i=0; i<Errors.length; i++)
        Msg+=Errors[i]+'\n';
      alert(Msg);    
    }
    //showHints();
    if(typeof(window.event)!='undefined')
      window.event.returnValue = false;
    return false;
  }
  else
    return true;
}
