// JavaScript Document


function checkValidPostcode(postcode){
	postcode = postcode.replace(" ", "");
	
	var characters = postcode.split("");
	var length = characters.length;
	
	if(!characters[0].match(/[a-zA-Z]/)){ return false; }
			
	switch(length){
		case 7:
			var chars = characters[1] + characters[2] + characters[3];
			if(!chars.match(/[a-zA-Z][0-9][a-zA-Z0-9]/)){ return false; }
			break;
		case 6:
			var chars = characters[1] + characters[2];
			if(!chars.match(/([a-zA-Z][0-9])|([0-9][a-zA-Z0-9])/)){ return false; }
			break;
		case 5:
			var chars = characters[1];
			if(!chars.match(/[0-9]/)){ return false; }
			break;
		case 4:
			var chars = characters[1] + characters[2] + characters[3];
			if(!chars.match(/[a-zA-Z][0-9][a-zA-Z0-9]/)){ return false; }
			break;
		case 3:
			var chars = characters[1] + characters[2];
			if(!chars.match(/([0-9][a-zA-Z0-9])|([a-zA-Z][0-9])/)){ return false; }
			break;
		case 2:
			var chars = characters[1];
			if(!chars.match(/[0-9]/)){ return false; }
			break;
		default:
			return false;
	}
		
	if(length >4){
		var chars = $characters[length-3] . $characters[length-2] . $characters[length-1]
		if(!chars.match(/\d[a-zA-Z]{2}/)){ return false;}
	}
	return true;
}

function validateAddress(address, required, optin){
	var message = "";
	if(address == ""){
		if(required){
			if(optin){
				message += "To opt-in to e-mail or mobile messages, please enter your address.<br />";
			} else {
				message += "Please enter your address.<br />";
			}
		}
	} else {
		message += validateField(address, "text", "address", "", 255);
	}
	return message;
}


function validateDOB(day, month, year, minAge){
	var message = "";
	dob = new Date();
	dob.setFullYear(year, month-1, day);
	
	minAgeDate = new Date();
	minAgeDate.setFullYear(minAgeDate.getFullYear()-minAge);
		
	if(dob>minAgeDate){
		message += "You must be over 18 to submit this form.<br />";
	}
	return message;
}


function validateField(value, type, name, defaultOption, maxLength){
	errorMessage = "";
	if(type == "text"){
		if(value == ""){
			errorMessage = "Please enter some text for the " + name + " field.<br />";
		} else if(value.indexOf("\\") != -1){
			errorMessage = "Please remove invalid characters, such as backslashes, from the " + name + " field.<br />";
		}
		if(value.length > maxLength){
			errorMessage = "The text you entered for the " + name + " field is too long. Maximum is " + maxLength + " characters.<br />";
		}
		
	} else if(type == "email"){
		var emailRegex = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
		if(!value.match(emailRegex)){
			errorMessage = "Please enter a valid email address in the " + name + " field. <br />";
		}
		if(value.length > maxLength){
			errorMessage = "The text you entered for the " + name + " field is too long. Maximum is " + maxLength + " characters.<br />";
		}
	} else if(type == "select"){
		if(value.toUpperCase() == defaultoption.toUpperCase()){
			errorMessage = "Please select an option from the " + name + " drop-down box.<br>";
		}
	} else {
		errorMessage = "The " + name + " field could not be validated.<br />";
	}
	return errorMessage;
}
		
		
function validateGender(gender){
	message = "";
	if(gender != "male" && gender != "female"){
		message += "Please select your Gender.<br />";
	}
	return message;
}


function validateMobile(number, required){
	message = "";
	if(number == ""){
		if(required){
			message += "To opt-in to mobile messages, you must enter your Mobile Number.<br />";
		}
	} else {
		number = number.replace(" ", "");
		number = number.replace("+", "");
		if(isNaN(number)){
			message += "The Mobile Number you entered does not appear to be valid.<br />";
		}
				}
	return message;
}

function validatePhone(number){
	message = "";
	number = number.replace(" ", "");
	if(is_NaN(number)){
		message += "The Phone Number you entered does not appear to be valid.<br />";
	}
	return message;
}

function validatePostcode(postcode, required, optin){
	message = "";
	if(postcode == ""){
		if(required){
			if(optin){
				message += "To opt-in to e-mail or mobile messages, you must enter your Postcode.<br />";	
			} else {
				message += "Please enter your Postcode.<br />";
			}
		}
	} else {
		if(!checkValidPostcode(postcode)){
			message += "The Postcode you entered does not appear to be a valid UK Postcode. <br />";	
		}
	}
	return message;
}

function validateVisitedBefore(answer){
	message = "";
	if(answer != "yes" && answer != "no"){
		message += "Please select whether you&#39;ve visisted us before.";
	}
	return message;
}
