function submitcontact() {
	var overall = true;
	var fname = document.getElementById("fname").value;
	if (empty(fname)) {
		overall=false;
		errorMessage("fnamev","Please enter a name. contactform2");
	} else errorMessage("fnamev","");

	var femail = document.getElementById("femail").value;
	if (empty(femail) || !email(femail)) {
		overall=false;
		errorMessage("femailv","Please enter a valid email address. For example fred@domain.com .");
	} else errorMessage("femailv","");

	var fconfirm = document.getElementById("fconfirm").value;
	if (fconfirm!=femail) {
		overall=false;
		errorMessage("fconfirmv","Your confirmation email does not match your first email, please try again.");
	} else errorMessage("fconfirmv","");

	var fsubjectselect = document.getElementById("fsubject");
	var fsubject = fsubjectselect.options[fsubjectselect.selectedIndex].value;
	if (fsubject=="") {
		overall=false;
		errorMessage("fsubjectv","Please enter a subject.");
	} else errorMessage("fsubjectv","");

	var showref = fsubject!="Routes/Bus stops/Timetables" && fsubject!="Requesting a route" && fsubject!="Fares" && fsubject!="Internet Banking";
	if (showref) {
		var frefn1 = document.getElementById("freferencen1").value;
		var frefn2 = document.getElementById("freferencen2").value;
		var frefn3 = document.getElementById("freferencen3").value;
                var oldrefv = false;
		var newrefv = frefn1.length==7 && frefn2.length==4 && frefn3.length==6;
		var oldrefentered = false;
		var newrefentered = !empty(frefn1) || !empty(frefn2) || !empty(frefn3);

		var both = oldrefentered && newrefentered;
		var neith = !oldrefentered && !newrefentered;
		if (both) {
			overall=false;
			errorMessage("freferencev","Please only enter one booking reference.");
		} else if (((fsubject=='Cancel Booking' || fsubject=="Luggage/Oversized items" || fsubject=="Complaint" || fsubject=="Lost property") && neith)||(!neith && !oldrefv && !newrefv)) {
			overall=false;
			errorMessage("freferencev","Please ensure you have filled in the booking reference correctly.");
		} else errorMessage("freferencev","");
	}
	
	if (fsubject=="Lost property") {
		var fphone = document.getElementById("fphone").value;
		if (empty(fphone)) {
			overall=false;
			errorMessage("fphonev","Please enter a contact phone number.");
		} else {
			errorMessage("fphonev","");
		}
	}
	if (fsubject=="Requesting a route") {
		var rrnfrom = document.getElementById("rrnfrom").value;
		var rrnto = document.getElementById("rrnto").value;
		var rrsfrom = document.getElementById("rrsfrom").value;		
		var rrsto = document.getElementById("rrsto").value;
		var both = (!empty(rrnfrom) || !empty(rrnto)) && (!empty(rrsfrom) || !empty(rrsto));
		var neith = (empty(rrnfrom) || empty(rrnto)) && (empty(rrsfrom) || empty(rrsto));
		if (both || neith) {
			overall=false;
			errorMessage("rrv","Please fill in a from and to destination for one island.");
		} else errorMessage("rrv","");
		
		var form = document.getElementById("contactform");
		var rrtravel = getradio(form.rrtravel);
		if (rrtravel=="") {
			overall=false;
			errorMessage("rrtravelv","Please choose a time of travel.");
		} else errorMessage("rrtravelv","");
		var rrreturn = getradio(form.rrreturn);
		if (rrreturn=="") {
			overall=false;
			errorMessage("rrreturnv","Please choose a return time of travel.");
		} else errorMessage("rrreturnv","");
		var rrpurpose = getradio(form.rrpurpose);
		var other = document.getElementById("rrother").value;
		if (rrpurpose=="" || (rrpurpose=="other" && empty(other))) {
			overall=false;
			errorMessage("rrpurposev","Please enter the purpose for the journey.");
		} else errorMessage("rrpurposev","");
	}
	return overall;
}
function getradio(element) {
	for (var i=0; i<element.length; i++) {
		if (element[i].checked) return element[i].value;
	}
	return "";
}
function empty(element) {
	return element==null || element.length==0;
}
function errorMessage(element, message) {
	element = document.getElementById(element);
	if (element) {
		element.innerHTML=message;
	}
}
function email(element) {
	var result = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(element);
	return result;
}

function swap(id,yes,span) {
	var theEl = document.getElementById(id);
	if (theEl) {
	if (yes) theEl.style.display=(span?'inline':'block');
	else theEl.style.display='none';
	}
}

function enquiry(id) {
	swap("mainfields",id!="");
	if (id=="Luggage/Oversized items") {
		document.getElementById("fmessagelabel").innerHTML="Description of item(s)";
	} else if (id=="Lost property") {
		document.getElementById("fmessagelabel").innerHTML="Description of items<br/>(please provide as much<br/>detail as possible)";
	} else {
		document.getElementById("fmessagelabel").innerHTML="Message";
	}
	swap("fmessagedesc",id=="Luggage/Oversized items");
	swap("canweuse",id=="Commendation/Thank you/Thumbs up",false);
	swap("showref",id!="Internet Banking" && id!="Routes/Bus stops/Timetables" && id!="Requesting a route" && id!="Fares",false);
	swap("showoptional",id!="Luggage/Oversized items" && id!="Complaint" && id!="Lost property" && id!="Cancel Booking",true);
	swap("netsection",id=="Internet Banking");
	swap("cancelsection1",id=="Cancel Booking");
	swap("cancelsection2",id=="Cancel Booking");
	swap("messagesection",id!="Cancel Booking" && id!="Requesting a route");
	swap("lostpropsection",id=="Lost property");
	swap("phonesection",id=="Lost property");
	swap("changebooksection",id=="Change booking");
	swap("routessection",id=="Routes/Bus stops/Timetables");
	swap("reqroutesection",id=="Requesting a route");
	swap("reqroutesection2",id=="Requesting a route");
	swap("faressection",id=="Fares");
	swap("luggagesection",id=="Luggage/Oversized items");
	swap("othersection",id=="Other");
}
