function validateRegistration()
{
	var errors = [];
	
	var d = document;
	
	var el = d.getElementById('fname');
	if(!el.value.length)
	{
		errors.push('First name');	
	}
	
	
	el = d.getElementById('lname');
	if(!el.value.length)
	{
		errors.push('Last name');	
	}
	
	
	
	el = d.getElementById('datechooser1');
	if(el.value == 'dd-mm-yyyy' || el.value.length < 10)
	{
		errors.push('Date of birth');	
	}
	
	
	el = document.registration.gender;
	if(el[0].checked || el[1].checked)
	{
		
	}else
	{
		errors.push("Gender");	
	}
	
	
	
	el = d.getElementById('mobileprefix');
	var el2 = d.getElementById('mobileNumber');
	if(el.options[el.selectedIndex].value == '' || !el.selectedIndex || el2.value.length < 6 && Number(el2.value))
	{
		errors.push('Mobile');	
	}
	
	
	
	
	el = d.getElementById('schoolselect');
	if(el.options[el.selectedIndex].value == '' || !el.selectedIndex)
	{
		errors.push('School');	
	}
	
	
	
	el = d.getElementById('promocode');
	if(el.value.length < 8)
	{
		errors.push('Unique Code is too short');	
	}
	
	
	
	var emailFilter= /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	el = d.getElementById('email');
	if(!el.value.length || !(emailFilter.test(el.value)))
	{
		errors.push('Email');
	}
	
	
	
	
	var eths = ['european', 'asian', 'middleeastern', 'african', 'maori', 'pacific', 'latinamerican', 'other'];
	var ethsOk = false;
	for(var i=0, l=eths.length; i<l; i++)
	{
		if(d.registration[eths[i]].checked)
		{
			ethsOk = true;
			break;
		}
	}
	if(!ethsOk)
	{
		errors.push('Ethnicity');
	}
	
	
	
	
	var el = d.getElementById('optinagreeprivacy');
	if(!el.checked)
	{
		errors.push('Agree to the Privacy Policy');	
	}
	
	
	
	if(!errors.length)
	{
		return true;	
	}
	else
	{
		var str = 'Your registration can not be processed.\nPlease complete the following fields: ';
		
		for(var i = 0, l = errors.length; i<l; i++)
		{
			str += '\n\t' + errors[i];
		}
		
		alert(str);
		return false;	
	}
}