function validate()

{

  	if (document.getElementById('newsletter').name.value == "") 	{		

	   alert("Please fill in your given name.");

	   document.getElementById('newsletter').name.focus();

		return;

  	}
	
  	if (document.getElementById('newsletter').surname.value == "") 	{		

	   alert("Please fill in your family name.");

	   document.getElementById('newsletter').surname.focus();

		return;

  	}

  	if (document.getElementById('newsletter').email.value == "") 	{		

	   alert("Please fill in your email address.");

	   document.getElementById('newsletter').email.focus();

		return;

  	}
	
	var emailPat=/^(.+)@(.+)$/ ;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" ;
	var validChars="\[^\\s" + specialChars + "\]" ;
	var quotedUser="(\"[^\"]*\")" ;
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=document.getElementById('newsletter').email.value.match(emailPat);

	if (matchArray==null) {

	alert("You provided a wrong email address. Please check it.");

	document.getElementById('newsletter').email.focus();

	return;

	}
	
	var user=matchArray[1];

	if (user.match(userPat)==null) {

	alert("Please check your username (the charachters before the @ in your email address). It appears to be wrong.");

	document.getElementById('newsletter').email.focus();

	return;

	}
	
	var domain=matchArray[2];
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;

	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { 

	alert("Please check your domain (the characters after the @ in your email address). The extension should have three characters (as in .com) or two (as in .uk).");

	document.getElementById('newsletter').email.focus();

	return ;

	}
	
  	if ((document.getElementById('newsletter').economics.checked == false) && (document.getElementById('newsletter').geography.checked == false) && (document.getElementById('newsletter').psychology.checked == false) && (document.getElementById('newsletter').tok.checked == false)) 	{		

	   alert("Please select a subject to be subscribed to its newsletter.");

	   document.getElementById('newsletter').economics.focus();

		return;

  	}
	
  	if (document.getElementById('newsletter').agree.checked == false) 	{		

	   alert("You must check the agreement box if you want to proceed with the subscription.");

	   document.getElementById('newsletter').agree.focus();

		return;

  	}

	document.getElementById('newsletter').submit();

}