function validateUsername(username)
{
	if(!username.match(/^[a-zA-Z0-9\_\-]{4,25}$/))
	{
		document.getElementById('username_error').innerHTML = 'Required (letters, numbers, underscores and hyphens, between 4 and 25 characters)';
		return false;
	}
	else
	{
		document.getElementById('username_error').innerHTML = '';
		return true;
	}
}

function validatePassword(password)
{
	if(!password.match(/[a-zA-Z]/) || !password.match(/[^a-zA-Z]/) || password.length < 6 || password.length > 25)
	{
		document.getElementById('password_error').innerHTML = 'Required (at least one letter and one non-letter; between 6 and 25 characters)';
		return false;
	}
	else
	{
		document.getElementById('password_error').innerHTML = '';
		return true;
	}
}

function validatePassword2(password, password2)
{
	if(password2 != password || password2 == '')
	{
		document.getElementById('password2_error').innerHTML = 'Required (must match the first password)';
		return false;
	}
	else
	{
		document.getElementById('password2_error').innerHTML = '';
		return true;
	}
}

function validateSubject(subject)
{
	if(!subject.match(/^.{1,100}$/))
	{
		document.getElementById('subject_error').innerHTML = 'Required (less than 100 characters)';
		return false;
	}
	else
	{
		document.getElementById('subject_error').innerHTML = '';
		return true;
	}
}

function validateMessage(message)
{
	//if(!message.match(/^.{1,1000}$/))
	if(message == "" || message.length > 1000)
	{
		document.getElementById('message_error').innerHTML = 'Required (less than 1000 characters)';
		return false;
	}
	else
	{
		document.getElementById('message_error').innerHTML = '';
		return true;
	}
}

function validateMessageOptional(message)
{
	if(message == "")
	{
		document.getElementById('message_error').innerHTML = '';
		return true;
	}
	else
	{
		if(message.length > 1000)
		{
			document.getElementById('message_error').innerHTML = 'Message too long (1000 characters or less please)';
			return false;
		}
		else
		{
			document.getElementById('message_error').innerHTML = '';
			return true;
		}
	}
}

function validateEmail(email)
{
	if(email == "")
	{
		document.getElementById('email_error').innerHTML = '';
		return true;
	}
	else
	{
		if(!email.match(/^.+\@..+\..+$/))
		{
			document.getElementById('email_error').innerHTML = 'Please enter a valid email address';
			return false;
		}
		else
		{
			document.getElementById('email_error').innerHTML = '';
			return true;
		}
	}
}

function validateFriendEmail(email)
{
	if(!email.match(/^.+\@..+\..+$/))
	{
		document.getElementById('femail_error').innerHTML = 'Please enter a valid email address';
		return false;
	}
	else
	{
		document.getElementById('femail_error').innerHTML = '';
		return true;
	}
}

function validateEmail2(email2, email)
{
	if(email2 == '' || email2 != email)
	{
		document.getElementById('email2_error').innerHTML = 'Required (must match first email address)';
		return false;
	}
	else
	{
		document.getElementById('email2_error').innerHTML = '';
		return true;
	}
}

function validateEmailRequired(email)
{
	if(!email.match(/^.+\@..+\..+$/))
	{
		document.getElementById('email_error').innerHTML = 'Please enter a valid email address';
		return false;
	}
	else
	{
		document.getElementById('email_error').innerHTML = '';
		return true;
	}
}

function validateCaptcha(captcha)
{
	if(captcha == "")
	{
		document.getElementById('captcha_error').innerHTML = 'Required';
		return false;
	}
	else
	{
		document.getElementById('captcha_error').innerHTML = '';
		return true;
	}
}

function validateName(isRequired, name)
{
	if(isRequired)
	{
		if(name == "")
		{
			document.getElementById('name_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('name_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('name_error').innerHTML = '';
		return true;
	}
}

function validateData(isRequired, data)
{
	if(isRequired)
	{
		if(data == "")
		{
			document.getElementById('data_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('data_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('data_error').innerHTML = '';
		return true;
	}
}

function validateDName(isRequired, dname)
{
	if(isRequired)
	{
		if(dname == "")
		{
			document.getElementById('dname_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('dname_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('dname_error').innerHTML = '';
		return true;
	}
}

function validateLastName(isRequired, lname)
{
	if(isRequired)
	{
		if(lname == "")
		{
			document.getElementById('lname_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('lname_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('lname_error').innerHTML = '';
		return true;
	}
}

function validateAddressOne(isRequired, addr1)
{
	if(isRequired)
	{
		if(addr1 == "")
		{
			document.getElementById('address1_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('address1_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('address1_error').innerHTML = '';
		return true;
	}
}

function validateAddressTwo(isRequired, addr2)
{
	if(isRequired)
	{
		if(addr2 == "")
		{
			document.getElementById('address2_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('address2_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('address2_error').innerHTML = '';
		return true;
	}
}

function validateCity(isRequired, city)
{
	if(isRequired)
	{
		if(city == "")
		{
			document.getElementById('city_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('city_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('city_error').innerHTML = '';
		return true;
	}
}

function validateProvince(isRequired, province)
{
	if(isRequired)
	{
		if(province == "")
		{
			document.getElementById('province_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('province_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('province_error').innerHTML = '';
		return true;
	}
}

function validatePostalCode(isRequired, postal_code)
{
	if(isRequired)
	{
		if(!postal_code.match(/^[A-Z][0-9][A-Z]\ [0-9][A-Z][0-9]$/) && !postal_code.match(/^[0-9][0-9][0-9][0-9][0-9]$/))
		{
			document.getElementById('postal_code_error').innerHTML = 'Required (V7H 2A6 or 12345)';
			return false;
		}
		else
		{
			document.getElementById('postal_code_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		if(postal_code != "")
		{
			if(!postal_code.match(/^[A-Z][0-9][A-Z]\ [0-9][A-Z][0-9]$/) && !postal_code.match(/^[0-9][0-9][0-9][0-9][0-9]$/))
			{
				document.getElementById('postal_code_error').innerHTML = 'Format: V7H 2A6 or 12345';
				return false;
			}
			else
			{
				document.getElementById('postal_code_error').innerHTML = '';
				return true;
			}
		}
		else
		{
			document.getElementById('postal_code_error').innerHTML = '';
			return true;
		}
	}
}

function validateCountry(isRequired, country)
{
	if(isRequired)
	{
		if(country == "")
		{
			document.getElementById('country_error').innerHTML = 'Required';
			return false;
		}
		else
		{
			document.getElementById('country_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		document.getElementById('country_error').innerHTML = '';
		return true;
	}
}

function validatePhone(isRequired, phone)
{
	if(isRequired)
	{
		if(!phone.match(/^[0-9][0-9][0-9]\-[0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]$/))
		{
			document.getElementById('phone_error').innerHTML = 'Required (250-555-1234)';
			return false;
		}
		else
		{
			document.getElementById('phone_error').innerHTML = '';
			return true;
		}
	}
	else
	{
		if(phone != "")
		{
			if(!phone.match(/^[0-9][0-9][0-9]\-[0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]$/))
			{
				document.getElementById('phone_error').innerHTML = 'Format: 250-555-1234';
				return false;
			}
			else
			{
				document.getElementById('phone_error').innerHTML = '';
				return true;
			}
		}
		else
		{
			document.getElementById('phone_error').innerHTML = '';
			return true;
		}
	}
}

function validateContact()
{
	var subject = document.contactForm.subject.value;
	var message = document.contactForm.message.value;
	var email = document.contactForm.email.value;
	var captcha = document.contactForm.captcha.value;
	
	var subjectResponse = validateSubject(subject);
	var messageResponse = validateMessage(message);
	var emailResponse = validateEmail(email);
	var captchaResponse = validateCaptcha(captcha);
	
	if(subjectResponse && messageResponse && emailResponse && captchaResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}

function validateSignup()
{
	var username = document.signupForm.username.value;
	var email = document.signupForm.email.value;
	var email2 = document.signupForm.email2.value;
	var captcha = document.signupForm.captcha.value;
	var name = document.signupForm.name.value;
	var lname = document.signupForm.lname.value;
	//var addr1 = document.signupForm.address1.value;
	//var addr2 = document.signupForm.address2.value;
	var city = document.signupForm.city.value;
	var province = document.signupForm.province.options[document.signupForm.province.selectedIndex].value;
	//var postal_code = document.signupForm.postal_code.value;
	var country = document.signupForm.country.options[document.signupForm.country.selectedIndex].value;
	//var phone = document.signupForm.phone.value;
	
	var usernameResponse = validateUsername(username);
	var emailResponse = validateEmailRequired(email);
	var email2Response = validateEmail2(email2, email);
	var captchaResponse = validateCaptcha(captcha);
	var nameResponse = validateName(true, name);
	var lnameResponse = validateLastName(false, lname);
	//var addr1Response = validateAddressOne(false, addr1);
	//var addr2Response = validateAddressTwo(false, addr2);
	var cityResponse = validateCity(false, city);
	var provinceResponse = validateProvince(true, province);
	//var postal_codeResponse = validatePostalCode(false, postal_code);
	var countryResponse = validateCountry(true, country);
	//var phoneResponse = validatePhone(false, phone);
	
	if(usernameResponse && emailResponse && email2Response && captchaResponse && nameResponse && lnameResponse && cityResponse && provinceResponse && countryResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}

function validateDealer()
{
	var name = document.dealerForm.name.value;
	var email = document.dealerForm.email.value;
	var captcha = document.dealerForm.captcha.value;
	var dname = document.dealerForm.dname.value;
	var addr1 = document.dealerForm.address1.value;
	var addr2 = document.dealerForm.address2.value;
	var city = document.dealerForm.city.value;
	var province = document.dealerForm.province.options[document.dealerForm.province.selectedIndex].value;
	var postal_code = document.dealerForm.postal_code.value;
	var country = document.dealerForm.country.options[document.dealerForm.country.selectedIndex].value;
	var phone = document.dealerForm.phone.value;
	
	var nameResponse = validateName(true, name);
	var emailResponse = validateEmailRequired(email);
	var captchaResponse = validateCaptcha(captcha);
	var dnameResponse = validateDName(true, dname);
	var addr1Response = validateAddressOne(true, addr1);
	var addr2Response = validateAddressTwo(false, addr2);
	var cityResponse = validateCity(true, city);
	var provinceResponse = validateProvince(true, province);
	var postal_codeResponse = validatePostalCode(true, postal_code);
	var countryResponse = validateCountry(true, country);
	var phoneResponse = validatePhone(true, phone);
	
	if(nameResponse && emailResponse && captchaResponse && dnameResponse && addr1Response && addr2Response && cityResponse && provinceResponse && postal_codeResponse && countryResponse && phoneResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}

function validatePrivate()
{
	var name = document.privateForm.name.value;
	var lname = document.privateForm.lname.value;
	var email = document.privateForm.email.value;
	var captcha = document.privateForm.captcha.value;
	var addr1 = document.privateForm.address1.value;
	var addr2 = document.privateForm.address2.value;
	var city = document.privateForm.city.value;
	var province = document.privateForm.province.options[document.privateForm.province.selectedIndex].value;
	var postal_code = document.privateForm.postal_code.value;
	var country = document.privateForm.country.options[document.privateForm.country.selectedIndex].value;
	var phone = document.privateForm.phone.value;
	
	var nameResponse = validateName(true, name);
	var lnameResponse = validateLastName(true, lname);
	var emailResponse = validateEmailRequired(email);
	var captchaResponse = validateCaptcha(captcha);
	var addr1Response = validateAddressOne(false, addr1);
	var addr2Response = validateAddressTwo(false, addr2);
	var cityResponse = validateCity(true, city);
	var provinceResponse = validateProvince(true, province);
	var postal_codeResponse = validatePostalCode(false, postal_code);
	var countryResponse = validateCountry(true, country);
	var phoneResponse = validatePhone(true, phone);
	
	if(nameResponse && lnameResponse && emailResponse && captchaResponse && addr1Response && addr2Response && cityResponse && provinceResponse && postal_codeResponse && countryResponse && phoneResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}
function validateBuyGroup()
{
	var vehicleData = document.buygroupForm.vehicledata.value;
	var firstName = document.buygroupForm.firstname.value;
	var lastName = document.buygroupForm.lastname.value;
	var phoneNumber = document.buygroupForm.phonenumber.value;
	var emailAddress = document.buygroupForm.emailaddress.value;
	var userComments = document.buygroupForm.comments.value;
	var captchaString = document.buygroupForm.captcha.value;
	
	var vehicleDataResponse = validateData(true, vehicleData);
	var firstNameResponse = validateName(true, firstName);
	var lastNameResponse = validateLastName(true, lastName);
	var phoneNumberResponse = validatePhone(true, phoneNumber);
	var emailAddressResponse = validateEmail(emailAddress);
	var userCommentsResponse = validateMessageOptional(userComments);
	var captchaStringResponse = validateCaptcha(captchaString);
	
	if(vehicleDataResponse && firstNameResponse && lastNameResponse && phoneNumberResponse && emailAddressResponse && userCommentsResponse && captchaStringResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}
function validateMoreInfo()
{
	var vehicleData = document.buygroupForm.vehicledata.value;
	var firstName = document.buygroupForm.firstname.value;
	var lastName = document.buygroupForm.lastname.value;
	var phoneNumber = document.buygroupForm.phonenumber.value;
	var emailAddress = document.buygroupForm.emailaddress.value;
	var userComments = document.buygroupForm.comments.value;
	var captchaString = document.buygroupForm.captcha.value;
	
	var vehicleDataResponse = validateData(true, vehicleData);
	var firstNameResponse = validateName(true, firstName);
	var lastNameResponse = validateLastName(true, lastName);
	var phoneNumberResponse = validatePhone(true, phoneNumber);
	var emailAddressResponse = validateEmail(emailAddress);
	var userCommentsResponse = validateMessageOptional(userComments);
	var captchaStringResponse = validateCaptcha(captchaString);
	
	if(vehicleDataResponse && firstNameResponse && lastNameResponse && phoneNumberResponse && emailAddressResponse && userCommentsResponse && captchaStringResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}
function validateEmailFriend()
{
	var vehicleData = document.buygroupForm.vehicledata.value;
	var firstName = document.buygroupForm.name.value;
	var emailAddress = document.buygroupForm.emailaddress.value;
	var femailAddress = document.buygroupForm.friendemailaddress.value;
	var captchaString = document.buygroupForm.captcha.value;
	
	var vehicleDataResponse = validateData(true, vehicleData);
	var firstNameResponse = validateName(true, firstName);
	var emailAddressResponse = validateEmailRequired(emailAddress);
	var femailAddressResponse = validateFriendEmail(femailAddress);
	var captchaStringResponse = validateCaptcha(captchaString);
	
	if(vehicleDataResponse && firstNameResponse && emailAddressResponse && femailAddressResponse && captchaStringResponse)
	{
		return true;
	}
	else
	{
		alert('One or more fields were invalid. Please correct the fields that have errors.');
		return false;
	}
}