function checkNewAccount(theForm){
// Pre-submission validation for new account details
	var doSubmit = false;
	var err = new Array;
	
	if(!validEmail(theForm['email'].value))
		err[err.length] = "Invalid email address";
		
	if(isBlank(theForm['contact'].value))
		err[err.length] = "Contact Name missing";
		
	if(isBlank(theForm['address1'].value))
		err[err.length] = "Address first line missing";
	
	if(isBlank(theForm['town'].value))
		err[err.length] = "Town missing";

	if(isBlank(theForm['postcode'].value))
		err[err.length] = "Postcode missing";
	
	if(!theForm['terms'].checked)
		err[err.length] = "You must agree to the Terms and Conditions to register";
		
	doSubmit = (err.length == 0);
	if(!doSubmit){
		var errMsg = "Please correct the following issues:\n\n";
		for(i=0;i<err.length;i++){
			errMsg = errMsg + err[i]+ "\n";
		}
		alert(errMsg);	
	}
	
	return doSubmit;

}

function checkAccountChange(theForm){
//Account editing checks
	var doSubmit = false;
	var err = new Array;
	
	if(!validEmail(theForm['email'].value))
		err[err.length] = "Invalid email address";
		
	if(!validPassword(theForm['password'].value, theForm['password1'].value))
		err[err.length] = "Passwords do not match or are too short";
		
	if(isBlank(theForm['contact'].value))
		err[err.length] = "Contact Name missing";
		
	if(isBlank(theForm['address1'].value))
		err[err.length] = "Address first line missing";
	
	if(isBlank(theForm['town'].value))
		err[err.length] = "Town missing";

	if(isBlank(theForm['postcode'].value))
		err[err.length] = "Postcode missing";
			
	doSubmit = (err.length == 0);
	if(!doSubmit){
		var errMsg = "Please correct the following issues:\n\n";
		for(i=0;i<err.length;i++){
			errMsg = errMsg + err[i]+ "\n";
		}
		alert(errMsg);	
	}
	
	return doSubmit;

}

function validEmail(emailAddress) {
/*
* Check for valid email address
* Not a totally comprehensive check, but covers
* most bases
*/
	var ret = false;

	ret = (emailAddress != null && emailAddress != '' && emailAddress.length >5);

	//Check contains @ and not as first character
	if(ret) {
		var atPos = emailAddress.indexOf("@");
		ret = (atPos > 0);
	}
	
	//Check only one @ symbol
	if(ret) {
		var rhs = emailAddress.substr((atPos+1));
		ret = (rhs.indexOf("@") == -1);
	}

	//Check at least one period after @
	if(ret) {
		var periodPos = rhs.indexOf(".");
		ret = ((periodPos > 0)
				&& (periodPos < (rhs.length -1)));
	}
	
	//Check for free/banned addresses
	if(ret) {
		var freeAddress=new Array();
		var failFreeAccount = false;
		var tmp = emailAddress.split("@");

		freeAddress[0]="hotmail";
		freeAddress[1]="rocketmail";
		freeAddress[2]="yahoo";
		freeAddress[3]="zdnetmail";

 		tmp = tmp[1].split(".");
 		for (i=0;i<freeAddress.length;i++){
 			if (tmp[0] == freeAddress[i])
 				failFreeAccount = true;
 		}
 		ret = !failFreeAccount;
	}

	return (ret);

}

function validPassword(pass1, pass2){
	
	return ((pass1 == pass2) &&	((pass1.length >= 6) || (pass1.length == 0)));

}

function isBlank(field) {
	return (field == '' || field == null);
}
