function newslettersignup() {

  // simple ajax - nothing special required.
  
  var newsletterhttp;
  
  try {
    // Firefox, Opera 8.0+, Safari
    newsletterhttp = new XMLHttpRequest();
  } catch (e) {
    // Internet Explorer
    try {
      newsletterhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        newsletterhttp=new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        alert("Your browser does not support AJAX!");
      }
    }
  }
  
  newsletterhttp.onreadystatechange = function() {
    if (newsletterhttp.readyState == 4) {
      var received = newsletterhttp.responseText;
      var form = document.getElementById('signup');      
  
      switch (received) {
        case '1':
          alert("Thank you for subscribing!\n\nYour email address '" + form.email.value + "' has been subscribed!");
          form.email.disabled = true;
          form.name.disabled = true;
          form.number.disabled = true;
          form.company.disabled = true;
          form.submit.disabled = true;
  
          break;
        case '2':
          alert("The email address '" + form.email.value + "' is invalid. Please check it and retry.");
          form.email.focus();
          
          break;
  
        case '32':
          alert("There was an error subscribing you.\n\nPlease notify the webmaster of this site.");
          
          break;
  
      }
      
    }
  }

  // validate fields first
  
  form = document.getElementById('signup');

  msg = '';

  if (! form.email.value) {
    msg += "Please enter an email address.\n";
  } else {
		with (form.email) {
			apos = value.indexOf("@"); 
			dotpos = value.lastIndexOf(".");
			lastpos = value.length - 1;
			if (apos < 1 || dotpos - apos < 2 || lastpos - dotpos > 4 || lastpos - dotpos < 2) {
				msg += "Please enter a valid email address.\n";
			}
		}

  }
  
  if (! form.name.value) {
    msg += "Please enter your name.\n";
  }
  
  if (! form.number.value) {
    msg += "Please enter your phone number\n";
  }
  
  if (msg) {
    // errors detected. notify user and abort script.
    
    alert(msg);
    return false;
    
  } else {
    // no errors. send off signup request.
    
    var form = document.getElementById('signup');
    var send = "/signup.php?email=" + form.email.value +'&name=' + form.name.value + '&number=' + form.number.vale;
    newsletterhttp.open("GET",send, true);
    newsletterhttp.send(null);
  }
}
