// Checks for valid input on the quote request form.
function validateQuoteForm(){
	var isValid = true;
	var startDate = null;
	var finishDate = null;
	var startDateParts = document.getElementById("start_date").value.split('/');
	var finishDateParts = document.getElementById("finish_date").value.split('/');
	var alertMsg = "";

	if(!validateTextField(document.getElementById("name"))){
		isValid = false;
		document.getElementById("name").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter your name.\n";
	}
	else{
		document.getElementById("name").style.border = "1px solid #999";
	}
	if(!validateEmail(document.getElementById("email"))){
		isValid = false;
		document.getElementById("email").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid email.\n";
	}
	else{
		document.getElementById("email").style.border = "1px solid #999";
	}
	if(!validateLocation(document.getElementById("pick_up"))){
		document.getElementById("pick_up").style.border = "1px solid #FF0000";
		alertMsg += "- Please select a pick up location.\n";
	}
	else {
		document.getElementById("pick_up").style.border = "1px solid #999";
	}
	if(!validateLocation(document.getElementById("return_to"))){
		document.getElementById("return_to").style.border = "1px solid #FF0000";
		alertMsg += "- Please select a return to location.\n";
	}
	else {
		document.getElementById("return_to").style.border = "1px solid #999";
	}
	if (startDateParts.length == 3){
		startDate = validateDate(startDateParts[0],startDateParts[1]-1,startDateParts[2]);
	}
	if(finishDateParts.length == 3){
		finishDate = validateDate(finishDateParts[0],finishDateParts[1]-1,finishDateParts[2]);
	}
	if (startDate == null) {
		isValid = false;
		document.getElementById("start_date").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid start date.\n";
	}
	else{
		document.getElementById("start_date").style.border = "1px solid #999";
	}
	if (finishDate == null) {
		isValid = false;
		document.getElementById("finish_date").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid finish date.\n";
	}
	else if(startDate >= finishDate) {
		isValid = false;
		document.getElementById("start_date").style.border = "border: 1px solid #FF0000";
		document.getElementById("finish_date").style.border = "border: 1px solid #FF0000";
		alertMsg += "- Start date must come before finish date.\n";
	}
	else{
		document.getElementById("finish_date").style.border = "1px solid #999";
	}
	if(!isValid) {
		alert('Please correct the following errors and resubmit: \n' + alertMsg);
	}
	return isValid;	
}

// Checks for valid input on the booking form on the booking page.
function validateBookingForm() {
	var isValid = true;
	var startDate = null;
	var finishDate = null;
	var startDateParts = document.getElementById("booking_start_date").value.split('/');
	var finishDateParts = document.getElementById("booking_finish_date").value.split('/');
	var alertMsg = "";
	
	if(!validateTextField(document.getElementById("booking_name"))){
		isValid = false;
		document.getElementById("booking_name").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter your name.\n";
	}
	else{
		document.getElementById("booking_name").style.border = "1px solid #999";
	}
	
	if(!validateEmail(document.getElementById("booking_email"))){
		isValid = false;
		document.getElementById("booking_email").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid email.\n";
	}
	else{
		document.getElementById("booking_email").style.border = "1px solid #999";
	}
	
	if(!validateTextField(document.getElementById("booking_address"))){
		isValid = false;
		document.getElementById("booking_address").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid address.\n";
	}
	else{
		document.getElementById("booking_address").style.border = "1px solid #999";
	}
	
	if(!validateTextField(document.getElementById("booking_country"))){
		isValid = false;
		document.getElementById("booking_country").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid country.\n";
	}
	else{
		document.getElementById("booking_country").style.border = "1px solid #999";
	}
	
	if(!validateNumericField(document.getElementById("booking_phone"))){
		isValid = false;
		document.getElementById("booking_phone").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid phone number.\n";
	}
	else{
		document.getElementById("booking_phone").style.border = "1px solid #999";
	}
	
	if(!validateLocation(document.getElementById("booking_pick_up"))){
		document.getElementById("booking_pick_up").style.border = "1px solid #FF0000";
		alertMsg += "- Please select a pick up location.\n";
	}
	else {
		document.getElementById("booking_pick_up").style.border = "1px solid #999";
	}
	
	if(!validateLocation(document.getElementById("booking_return_to"))){
		document.getElementById("booking_return_to").style.border = "1px solid #FF0000";
		alertMsg += "- Please select a return to location.\n";
	}
	else {
		document.getElementById("booking_return_to").style.border = "1px solid #999";
	}
	
	if (startDateParts.length == 3){
		startDate = validateDate(startDateParts[0],startDateParts[1]-1,startDateParts[2]);
	}
	if(finishDateParts.length == 3){
		finishDate = validateDate(finishDateParts[0],finishDateParts[1]-1,finishDateParts[2]);
	}
	if (startDate == null) {
		isValid = false;
		document.getElementById("booking_start_date").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid start date.\n";
	}
	else{
		document.getElementById("booking_start_date").style.border = "1px solid #999";
	}
	if (finishDate == null) {
		isValid = false;
		document.getElementById("booking_finish_date").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid finish date.\n";
	}
	else if(startDate >= finishDate) {
		isValid = false;
		document.getElementById("booking_start_date").style.border = "border: 1px solid #FF0000";
		document.getElementById("booking_finish_date").style.border = "border: 1px solid #FF0000";
		alertMsg += "- Start date must come before finish date.\n";
	}
	else{
		document.getElementById("booking_finish_date").style.border = "1px solid #999";
	}
	if(!isValid) {
		alert('Please correct the following errors and resubmit: \n' + alertMsg);
	}
	return isValid;
}
// Checks for valid input on the contact form.
function validateContactForm() {
	var isValid = true;
	var alertMsg = "";
	if(!validateTextField(document.getElementById("contact_name"))){
		isValid = false;
		document.getElementById("contact_name").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter your name.\n";
	}
	else{
		document.getElementById("contact_name").style.border = "1px solid #999";
	}
	if(!validateEmail(document.getElementById("contact_email"))){
		isValid = false;
		document.getElementById("contact_email").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a valid email.\n";
	}
	else{
		document.getElementById("contact_email").style.border = "1px solid #999";
	}
	if(!validateTextField(document.getElementById("contact_message"))){
		isValid = false;
		document.getElementById("contact_message").style.border = "1px solid #FF0000";
		alertMsg += "- Please enter a message.\n";
	}
	else{
		document.getElementById("contact_message").style.border = "1px solid #999";
	}
	
	if(!isValid) {
		alert('Please correct the following errors and resubmit: \n' + alertMsg);
	}
	return isValid;
}

//Validates text field. Returns false if nothing in field.
function validateTextField(field) {
	var isValid = true;
	if(field.value.length == 0) {
		isValid = false;
	}
	return isValid;
}

//Validates email field. Returns false if email address doesn't contain a valid email address(must consist of letters,@ and a . in specific order)
function validateEmail(field) {
	var isValid = true;
	if(field.value.length == 0) {
		isValid = false;
	}
	else {
		regexy = /^[\w\.]+@[a-zA-Z_]+?\.[a-zA-Z\.]{2,6}$/;
		if(!regexy.test(field.value)) {
			isValid = false;
		}
	}
	return isValid;
}

//Validates phone number field. Returns false if nothing in field or field contains characters that aren't numbers.
function validateNumericField(field){
	var isValid = true;
	if(field.value.length == 0){
		isValid = false;
	}
	else if(isNaN(field.value)){
		isValid = false;
	}
	return isValid;
}

//Validates that a location has been selected. If the user has not selected a location it will remain the default value of 0.
function validateLocation(field) {
	var isValid = true;
	if(field.value == 0) {
		isValid = false;	
	}
	return isValid;
}

function validateDate(day,month,year) {
	var curDate = new Date();
	var givenDate = null;
	if(year < (curDate.getFullYear() + 2)){
		if(month >= 0 && month < 12) {
			var numDaysInMonth = daysInMonth(month,year);
			if(day > 0 && day <= numDaysInMonth) {
				givenDate = new Date(year, month, day);
				if(givenDate < curDate){
					givenDate = null;
				}
			}
		}
	}
	return givenDate;
}

function validateLicenceDate(day,month,year) {
	var isValid = true;
	var numDaysInMonth = daysInMonth(month, year);
	if(day > numDaysInMonth) {
		isValid = false;
	}
	return isValid;
}

function daysInMonth(mnth, yr)
{
	return 32 - new Date(yr, mnth, 32).getDate();
}
