// ---------------------------------------------------------------------------------
// Javascript form validation routines for CIT web site
//
//   validateEmailAddress(emailaddr):
//     validates an email address - called from within other functions 
//
//   validateGuestbookForm():
//     validates the guestbook form
//
//   validateQuickSearchForm():
//     validates quick search form that appears at the top of the right side bar
//
//   validateNewsletterForm():
//     validates the newsletter subscription form on the side bar
//
//	 validateSearchForm():
//     validates the main form on search.cfm
//
//   validateEmailForm(): 
//     validates the main e-mail form (composemail.cfm)
//
//   selectProj() & selectRes():
//     on email form (email.cfm), when a project/research area is selected from a 
//     pull-down list, automatically select the relvant radio button
// ---------------------------------------------------------------------------------
function validateEmailAddress(emailaddr) {
	var emailFilter=/^.+@.+\..{2,4}$/;
	var illegalChars= /[\ \(\)\<\>\,\;\:\\\/\"\[\]]/;

	if (emailaddr.length > 0) {
		if (!(emailFilter.test(emailaddr))) { 
			return (false);
		}
		else if (emailaddr.match(illegalChars)) {
			return (false);
		}
		else {
			return (true);
		}
	}
	else { 
		return (true);
	} 
}

function validateQuickSearchForm() {
	var f = document.quicksearchform;
	var words = f.searchwords.value;
	var submitOK = true;

	if (words == 'Enter search word(s)' || words.length == 0) {
		alert("Please enter at least one search word.");
		f.searchwords.focus();
		submitOK = false;
	}
	else {
		submitOK = true;
	}
	
	if (!submitOK) {
		return false; 
	}
}

function validateEmailForm() {
	var f = document.emailform;
	var type = f.type.value;
	var sid = f.sid.value;
	var sender = f.sendername.value;
	var from = f.fromemail.value;
	var subj = f.subject.value;
	var mess = f.message.value;
	var captcha = f.captchaText.value;
	var checks = false;
	var submitOK = true;
	
	if (type == 'staff' && sid == '0') {
		// if we are here the form includes a list of checkboxes (one per 
		// member of staff) - we need to check that at least one of the 
		// boxes has been ticked
		for (var i = 0; i < f.tostaff.length; i++) {
			if (f.tostaff[i].checked == true) {
				checks = true;
				break;
			}
		}
	}
	
	if (type == 'staff' && sid == '0' && checks == false) {
		alert("Please choose the members of staff you would like to e-mail.");
		f.tostaff[0].focus();
		submitOK = false;
	}
	else if (sender == 'Enter your name' || sender.length == 0) {
		alert("Please enter your name.");
		f.sendername.focus();
		submitOK = false;
	}
	else if (from == 'Enter your e-mail address' || from.length == 0) {
		alert("Please enter your e-mail address.");
		f.fromemail.focus();
		submitOK = false;
	}
	else if (validateEmailAddress(from) == false) {
		alert("Please enter a valid e-mail address.");
		f.fromemail.focus();
		submitOK = false;
	}
	else if (subj == 'Enter your message subject' || subj.length == 0) {
		alert("Please enter the subject of your message.");
		f.subject.focus();
		submitOK = false;
	}
	else if (mess == 'Enter your message' || mess.length == 0) {
		alert("Please enter your message.");
		f.message.focus();
		submitOK = false;
	}
	else if (captcha == 'Enter verification code' || captcha.length == 0) {
		alert("Please enter verification code.");
		f.captchaText.focus();
		submitOK = false;
	}
	else {
		submitOK = true;
	}
	
	if (!submitOK) {
		return false; 
	}
}

function validateGuestbookForm() {
	var f = document.guestbookform;
	var sender = f.sendername.value;
	var from = f.fromemail.value;
	var co = f.company.value;
	var mess = f.message.value;
	var captcha = f.captchaText.value;
	var submitOK = true;
	var validateEmail = true;

	if (from == 'Enter your e-mail address' || from.length == 0) {
		validateEmail = false;
	}
	
	if (sender == 'Enter your name' || sender.length == 0) {
		alert("Please enter your name.");
		f.sendername.focus();
		submitOK = false;
	}
	else if (validateEmail == true && validateEmailAddress(from) == false) {
		alert("Please enter a valid e-mail address.");
		f.fromemail.focus();
		submitOK = false;
	}
	else if (mess == 'Enter your message' || mess.length == 0) {
		alert("Please enter your message.");
		f.message.focus();
		submitOK = false;
	}
	else if (captcha == 'Enter verification code' || captcha.length == 0) {
		alert("Please enter verification code.");
		f.captchaText.focus();
		submitOK = false;
	}
	else {
		submitOK = true;
	}
	
	if (!submitOK) {
		return false; 
	}
}

function validateNewsletterForm() {
	var f = document.newsletter;
	var email = f.emailaddress.value;
	var captcha = f.captchaText.value;
	var submitOK = true;
	
	if (email == 'Enter your e-mail address' || email.length == 0) {
		alert("Please enter your e-mail address.");
		f.emailaddress.focus();
		submitOK = false;
	}
	else if (validateEmailAddress(email) == false) {
		alert("Please enter a valid e-mail address.");
		f.emailaddress.focus();
		submitOK = false;
	}
	else if (captcha == 'Enter verification code' || captcha.length == 0) {
		alert("Please enter verification code.");
		f.captchaText.focus();
		submitOK = false;
	}
	else {
		submitOK = true;
	}
	
	if (!submitOK) {
		return false; 
	}
}

function validateSearchForm() {
	var f = document.sitesearch;
	var keywords = f.searchString.value;
	var checks = false;
	var submitOK = true;

	for (var i = 0; i < f.searchSections.length; i++) {
		if (f.searchSections[i].checked == true) {
			checks = true;
			break;
		}
	}
	if (keywords == 'Enter search word(s)' || keywords.length == 0) {
		alert("Please enter at least one search word.");
		f.searchString.focus();
		submitOK = false;
	}
	else if (checks == false) {
		alert("Please choose at least one area to search within.");
		f.searchSections[0].focus();
		submitOK = false;
	}
	else {
		submitOK = true;
	}
	
	if (!submitOK) {
		return false; 
	}
}

function selectProj() {
	var f = document.emailtypeform.type;
	f[0].checked = false;
	f[1].checked = false;
	f[2].checked = true;
	f[3].checked = false;
	f[4].checked = false;
}

function selectRes() {
	var f = document.emailtypeform.type;
	f[0].checked = false;
	f[1].checked = false;
	f[2].checked = false;
	f[3].checked = true;
	f[4].checked = false;
}

