function RemoteRequestObject(){
 	var A = false; 	
 	try	{
 		A = new ActiveXObject("Msxml2.XMLHTTP");
 	}
 	catch(e){
 		try	{
 			A = new ActiveXObject("Microsoft.XMLHTTP");
 		}
 		catch(err){
 			A = false;
 		}
 	}
 	
 	if(!A && typeof(XMLHttpRequest) != 'undefined')
 		A = new XMLHttpRequest();
 		
 	return A;
 }
 
 function validateUser(oForm)
 {
 	var x = RemoteRequestObject();
	var err = 0;
 	
 	oForm.onsubmit = function()
 	{
 		//validate email
 		var email=oForm.elements['sEmail'];
		if(!validateEmail(email.value)){
			email.className = 'error';
			err++;
		}else{ email.className = ''; }
		
		//validate name
		var name=oForm.elements['sName'];
		if(name.value == '' || name.value == 'Name'){
			name.className = 'error';
			err++;
		}else{ name.className = ''; }
		
		
		if(err > 0){
			return false;
		}
		
 		var url = "validate.php?email="+email.value;
 		x.open("GET",url,true);
 		x.onreadystatechange=function()
 		{
 			if(x.readyState == 4 && x.status == 200)
 			{
 				var r = x.responseText;
				
 				if(r == 3){
					document.getElementById('msg').innerHTML = '<p class="errors">The email address you entered has already been used</p>';
					return false;
				}else if(r == 2){
					document.getElementById('msg').innerHTML = '<p class="errors">Could not validate email</p>';	
					return false;
				}
				
				document.getElementById('msg').innerHTML = ''
				oForm.submit();
								
 			}
 		};
 		x.send(null);
 		return false;
 	}
 
 }

function validateEmail(email) {
	var str = email;
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid		
		return true;
	}
	return false;

}
