// Check if browser if W3C DOM compliant
var W3CDOM = (document.getElementsByTagName && document.createElement);
firstError = true;

// Validate Online Booking Form
function validate()
{
	formValid = true;	
	
	if(document.booking_form.mailformFromName.value == ""){
		
		writeError(document.booking_form.mailformFromName,"Please enter your name");
		formValid = false;
	}
	
	if(document.booking_form.Address.value == ""){
	
		writeError(document.booking_form.Address,"Please enter your postal address");
		formValid = false;
	}
	
	if(document.booking_form.Telephone.value == ""){
	
		writeError(document.booking_form.Telephone,"Please enter a contact telephone number");
		formValid = false;

	}

	if(document.booking_form.mailformFromEmail.value == ""){
	
		writeError(document.booking_form.mailformFromEmail,"Please enter your e-mail address");
		formValid = false;

	}
	
	if(!document.booking_form.Cottage[0].checked && !document.booking_form.Cottage[1].checked){
	
		writeError(document.booking_form.Cottage[0],"Please select a cottage");
		formValid = false;

	}
	
	if(document.booking_form.Date_From.value == ""){
	
		writeError(document.booking_form.Date_From,"Please enter the date you wish to book from");
		formValid = false;
	}	
	
	if(document.booking_form.Date_To.value == ""){
	
		writeError(document.booking_form.Date_To,"Please enter the date you wish to book to");
		formValid = false;
	}	
	
	if(!document.booking_form.Payment_Status[0].checked && !document.booking_form.Payment_Status[1].checked){
	
		writeError(document.booking_form.Payment_Status[0],"Please select payment status - have you paid or are you going to pay?");
		formValid = false;

	}	
	
	if(!document.booking_form.Payment_Type[0].checked && !document.booking_form.Payment_Type[1].checked){
	
		writeError(document.booking_form.Payment_Type[0],"Please select payment type - a deposit or the full amount?");
		formValid = false;

	}
	
	if(document.booking_form.Paid_Amount.value == ""){
	
		writeError(document.booking_form.Paid_Amount,"Please the amount you have/are going to pay");
		formValid = false;
	}	
	
	if(!document.booking_form.Payment_Method[0].checked && !document.booking_form.Payment_Method[1].checked
	&& !document.booking_form.Payment_Method[2].checked && !document.booking_form.Payment_Method[3].checked){
	
		writeError(document.booking_form.Payment_Method[3],"Please select how you have/will pay");
		formValid = false;

	}	

	if(document.booking_form.Payment_Method[3].checked && document.booking_form.other_method.value == ""){
	
		writeError(document.booking_form.other_method,"Please enter the other method you used to pay");
		formValid = false;
	}	
	
	if(document.booking_form.Cars.value == ""){
	
		writeError(document.booking_form.Cars,"Please specify the number of cars");
		formValid = false;
	}
	
	if(document.booking_form.Adults.value == ""){
	
		writeError(document.booking_form.Adults,"Please specify the number of adults");
		formValid = false;
	}

	if(document.booking_form.Youngest_Child.value!="" && document.booking_form.Children.value == ""){

		writeError(document.booking_form.Children,"Please specify the number of children");
		formValid = false;
	}

	if(document.booking_form.Youngest_Child.value=="" && (document.booking_form.Children.value != "" && document.booking_form.Children.value != "0")){

		writeError(document.booking_form.Youngest_Child,"Please specify the age of the youngest child");
		formValid = false;
	}

	if(!document.booking_form.Agrees_To_Terms.checked)
	{
		
		writeError(document.booking_form.Agrees_To_Terms,"Please check the box to agree to booking terms");
		formValid = false;
	}

	return formValid;

}//validate()

// Writes an error message into the form
function writeError(obj,message) {
	errorstring = '';
	
	if (obj.hasError) return;
	if (W3CDOM) {
		obj.className += ' error';
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = 'error';	
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}
	else {
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
		alert(errorstring);
	}
	if (firstError){
		firstError = obj;
		firstError.focus();
		firstError = false;}
}

// Removes an error message from the form
function removeError()
{
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}

// Clears all error messages on form reset
function clearErrors()
{
	var x = document.forms[0].elements;
	for (var i=0;i<x.length;i++) {
		if (x[i].hasError)
		{
			x[i].className = x[i].className.substring(0,x[i].className.lastIndexOf(' '));
			x[i].parentNode.removeChild(x[i].hasError);
			x[i].hasError = null;
			x[i].onchange = null;
		}
	}
	
}