//-- -------------------------------------------
//-- NAME: FORM VALIDATION SCRIPT
//-- AUTHOR: MALCOLM ELSWORTH [MALCOLM@ELECTRICPUTTY.CO.UK]
//-- DATE: MAY 05 2005
//-- -------------------------------------------


//-- -------------------------------------------
//-- BROWSER SNIFFER CODE
//-- -------------------------------------------
var brsr;
var plat;
var vers, minorVersion, majorVersion;
var userAgentString;
var works, onMouseOversEnabled;
var indexOfVersionStart, indexOfVersionEnd;

brsr = navigator.appName
vers = navigator.appVersion
plat = navigator.platform
userAgentString = navigator.userAgent

if (brsr=="Microsoft Internet Explorer"){
	if (vers<"4") {
		majorVersion="3"
		minorVersion="0"
		plat = "Unknown"
		}
	else {
	  indexOfVersionStart = vers.indexOf("MSIE ", 0)
	  if (indexOfVersionStart!=-1) {
			indexOfVersionEnd = vers.indexOf(";", indexOfVersionStart)
			if (indexOfVersionEnd == -1) {
				vers.indexOf(")", indexOfVersionStart);}
			if (indexOfVersionEnd != -1) {
				dotLocation = vers.indexOf(".", indexOfVersionStart);
				if (dotLocation!=-1) {
					majorVersion = vers.substring( indexOfVersionStart+5, dotLocation )
					minorVersion = vers.substring( dotLocation+1, indexOfVersionEnd)
					}
				}
			}
			if (plat.length>=3) {plat = plat.substring(0,3)}
		}
	if (minorVersion==null) {minorVersion=="0"}
	if (majorVersion==null) {minorVersion=="3"}
	}

if (brsr=="Netscape"){
	if (vers<"4") {
		majorVersion="3"
		minorVersion="0"
		plat = "Unknown"
		}
	else {
		if (userAgentString.indexOf( "Netscape6", 0 ) != -1) {
			majorVersion="6"
			minorVersion="0"
			}
		else {
			indexOfVersionStart = 0
			indexOfVersionEnd = vers.indexOf(" ", indexOfVersionStart)
			if (indexOfVersionEnd>0) {
				dotLocation = vers.indexOf(".", indexOfVersionStart);
				if (dotLocation!=-1) {
					majorVersion = vers.substring( indexOfVersionStart, dotLocation )
					minorVersion = vers.substring( dotLocation+1, indexOfVersionEnd)
					}
				}
			if (minorVersion==null) {minorVersion=="0"}
			if (majorVersion==null) {minorVersion=="3"}
			}
			if (plat.length>=3) {plat = plat.substring(0,3)}
		}
	}

onMouseOversEnabled = false;
if ((brsr=="Microsoft Internet Explorer")&&(majorVersion=="5")&&plat=="Win") {
		onMouseOversEnabled = true;
	}
works = onMouseOversEnabled;



function validateEventContactForm() {

	var lineBreaker = "\n";
	var no_error = true
	var error_counter = 1
	var error_msg = "There seems to be a problem with the form." + lineBreaker + "Could you go back and check that you've entered:" + lineBreaker + lineBreaker;

	if(document.FrmEventsFinder.message.value == "" || document.FrmEventsFinder.message.value == "Enter text here and click on 'Send Message' to email the contact.") {
		error_msg = error_msg + error_counter + ". Your message"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.FrmEventsFinder.emailAddress.value == "") {
		error_msg = error_msg + error_counter + ". Your email address"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}
	if(document.FrmEventsFinder.emailAddress.value != "") {
		var validEmail = validateEmail(document.FrmEventsFinder.emailAddress.value)
		if(validEmail == false) {
			error_msg = error_msg + error_counter + ". A valid email address"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	error_msg = error_msg + lineBreaker + "Thank you"


	if (no_error == true) {
		return true;
	}
	else {
		alert(error_msg);
		return false;
	}
}




//-- -------------------------------------------
//-- RAF4U COMPETITION FORM VALIDATION FUNCTION
//-- -------------------------------------------
function validateCompForm() {
	var dom = (document.getElementById)?true:false;

	//If we are using Netscape 6, disable Dom
	if ((brsr=="Netscape")&&(majorVersion=="6")){
		dom = false;
	}
	// If we are using IE on a mac disable Dom
	if ((plat=="Mac")&&(brsr=="Microsoft Internet Explorer")){
		dom = false;
	}

	if (dom) {
		lineBreaker="<br />";
		}
	else {
		lineBreaker = "\n";
		}

	var no_error = true
	var error_counter = 1
	var error_msg = "There seems to be a problem with the form." + lineBreaker + "Could you go back and check that you've:" + lineBreaker + lineBreaker;

	if(document.competitionForm.question1) {
		if(document.competitionForm.question1.value == "" || document.competitionForm.question1.value == "Choose your answer") {
			error_msg = error_msg + error_counter + ". Answered Question 1"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.question2) {
		if(document.competitionForm.question2.value == "" || document.competitionForm.question2.value == "Choose your answer") {
			error_msg = error_msg + error_counter + ". Answered Question 2"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.question3) {
		if(document.competitionForm.question3.value == "" || document.competitionForm.question3.value == "Choose your answer") {
			error_msg = error_msg + error_counter + ". Answered Question 3"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.question4) {
		if(document.competitionForm.question4.value == "" || document.competitionForm.question4.value == "Choose your answer") {
			error_msg = error_msg + error_counter + ". Answered Question 4"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.question5) {
		if(document.competitionForm.question5.value == "" || document.competitionForm.question5.value == "Choose your answer") {
			error_msg = error_msg + error_counter + ". Answered Question 5"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.firstName.value == "") {
		error_msg = error_msg + error_counter + ". Entered your first name"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.surname.value == "") {
		error_msg = error_msg + error_counter + ". Entered your surname"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.address.value == "") {
		error_msg = error_msg + error_counter + ". Entered your address"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.phone.value == "") {
		error_msg = error_msg + error_counter + ". Entered your phone number"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.phone.value != "") {
		var validPhone = validatePhone(document.competitionForm.phone.value)
		if(validPhone == false) {
			error_msg = error_msg + error_counter + ". Entered your phone number in the correct format"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}



	if(document.competitionForm.dob.value == "") {
		error_msg = error_msg + error_counter + ". Entered your date of birth"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.dob.value != "") {
		var validDate = validateDate(document.competitionForm.dob.value)
		if(validDate == false) {
			error_msg = error_msg + error_counter + ". Entered your date of birth in the correct format"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	if(document.competitionForm.email.value == "") {
		error_msg = error_msg + error_counter + ". Entered your email address"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.competitionForm.email.value != "") {
		var validEmail = validateEmail(document.competitionForm.email.value)
		if(validEmail == false) {
			error_msg = error_msg + error_counter + ". Entered a valid email address"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}


	error_msg = error_msg + lineBreaker + "Thank you"
	if (no_error == true) {
		return true;
	}
	else {
		if(dom) {
			writeMessage(error_msg);
			return false;
		}
		else {
			alert(error_msg);
			return false;
		}
	}
}



//-- -------------------------------------------
//-- RAF4U CONTACT FORM VALIDATION FUNCTION
//-- -------------------------------------------
function validateContactForm() {
	var dom = (document.getElementById)?true:false;

	//If we are using Netscape 6, disable Dom
	if ((brsr=="Netscape")&&(majorVersion=="6")){
		dom = false;
	}
	// If we are using IE on a mac disable Dom
	if ((plat=="Mac")&&(brsr=="Microsoft Internet Explorer")){
		dom = false;
	}

	if (dom) {
		lineBreaker="<br />";
		}
	else {
		lineBreaker = "\n";
		}

	var no_error = true
	var error_counter = 1
	var error_msg = "There seems to be a problem with the form." + lineBreaker + "Could you go back and check that you've entered:" + lineBreaker + lineBreaker;

	if(document.contactForm.fullname.value == "") {
		error_msg = error_msg + error_counter + ". Your name"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.contactForm.email.value == "") {
		error_msg = error_msg + error_counter + ". Your email address"  + lineBreaker;
		error_counter = error_counter + 1
		no_error = false;
	}

	if(document.contactForm.email.value != "") {
		var validEmail = validateEmail(document.contactForm.email.value)
		if(validEmail == false) {
			error_msg = error_msg + error_counter + ". A valid email address"  + lineBreaker;
			error_counter = error_counter + 1
			no_error = false;
		}
	}

	error_msg = error_msg + lineBreaker + "Thank you"

	if (no_error == true) {
		return true;
	}
	else {
		if(dom) {
			writeMessage(error_msg);
			return false;
		}
		else {
			alert(error_msg);
			return false;
		}
	}
}




//-- -------------------------------------------
//-- GENERIC DATE  VALIDATION FUNCTION
//-- -------------------------------------------
function validateDate(date) {
	var validChars = '0123456789/';

	for (i=0; i<date.length; i++) {
		if(validChars.indexOf(date.charAt(i),0) == -1) {
			return false;
		}
	}

	// CHECK THE LENGTH OF THE INPUT
	if (date.length > 10) {
		return false;
	}
	if (date.length < 10) {
		return false;
	}

	// CHECK THERE IS A DIVIDER AT POSITION 3
	if (date.charAt(2) != "/") {
		return false;
	}

	// CHECK THERE IS A DIVIDER AT POSITION 6
	if (date.charAt(5) != "/") {
		return false;
	}
}



//-- -------------------------------------------
//-- TELEPHONE NUMBER VALIDATION FUNCTION
//-- -------------------------------------------
function validatePhone(number) {
	var validChars = '0123456789 ';

	for (i=0; i<number.length; i++) {
		if(validChars.indexOf(number.charAt(i),0) == -1) {
			return false;
		}
	}
}



//-- -------------------------------------------
//-- GENERIC EMAIL ADDRESS VALIDATION FUNCTION
//-- -------------------------------------------
function validateEmail(addr) {
	var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++) {
		if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
			return false;
		}
	}

	for (i=0; i<addr.length; i++) {
		if (addr.charCodeAt(i)>127) {
		return false;
		}
	}

	var atPos = addr.indexOf('@',0);
	if (atPos == -1) {
		return false;
	}

	if (atPos == 0) {
		return false;
	}

	if (addr.indexOf('@', atPos + 1) > - 1) {
		return false;
	}

	if (addr.indexOf('.', atPos) == -1) {
		return false;
	}

	if (addr.indexOf('@.',0) != -1) {
		return false;
	}

	if (addr.indexOf('.@',0) != -1){
		return false;
	}

	if (addr.indexOf('..',0) != -1) {
		return false;
	}

	var suffix = addr.substring(addr.lastIndexOf('.')+1);
	if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
		return false;
	}
	return true;
}




//-- -------------------------------------------
//-- ERROR MESSAGE RENDERING FUNCTION
//-- -------------------------------------------
function writeMessage(error_msg){
	var messageContainer = document.getElementById("messageContainer");
	var messageContent = document.getElementById("messageContent");
	messageContent.innerHTML = error_msg;
	messageContainer.style.display = "block";
	document.location.href = '#errorMessage';
}

