/* AP - 30/11/2006 - code adapted from login.js */

/* Error Messages */
var allFieldsEmpty				= "A full name and e-mail address are required to sign in.",
	emptyForename				= "Your first name is required to sign in.",
	emptySurname				= "Your last name is required to sign in.",
	emptyEmailAddress			= "A valid e-mail address is required to sign in.",
	invalidEmailAddress			= "A valid e-mail address is required to sign in.",
	emptyConfirmEmailAddress	= "Please re-enter the e-mail address to confirm.",
	invalidConfirmEmailAddress	= "The e-mail addresses entered do not match. Please check and try again",
	invalidForename				= "Forename contains invalid characters. Only letters and hyphens are allowed.",
	invalidSurname				= "Surname contains invalid characters. Only letters and hyphens are allowed.";

function setFocus(fieldName)
{
	if (fieldName == "forename")
	{
		document.FormIndex.forename.select();
		document.FormIndex.forename.focus();
	}
	else if (fieldName == "surname")
	{
		document.FormIndex.surname.select();
		document.FormIndex.surname.focus();
	}
	else if (fieldName == "emailaddress")
	{
		document.FormIndex.emailaddress.select();
		document.FormIndex.emailaddress.focus();
	}
	else
	{
		document.FormIndex.confirmemailaddress.select();
		document.FormIndex.confirmemailaddress.focus();
	}
}

function validateInput()
{
	document.getElementById('btnSignIn').disabled = true;

	document.FormIndex.forename.value = document.FormIndex.forename.value.trim();
	document.FormIndex.surname.value = document.FormIndex.surname.value.trim();
	document.FormIndex.emailaddress.value = document.FormIndex.emailaddress.value.trim();
	document.FormIndex.confirmemailaddress.value = document.FormIndex.confirmemailaddress.value.trim();
	
	var forename = document.FormIndex.forename;
	var surname = document.FormIndex.surname;
	var emailaddress = document.FormIndex.emailaddress;
	var confirmemailaddress = document.FormIndex.confirmemailaddress;
	
	if(forename.value == "" && surname.value == "" && emailaddress.value == "")
	{
		alert(allFieldsEmpty);
		setFocus("forename");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (forename.value == null || forename.value == "")
	{
		alert(emptyForename);
		setFocus("forename");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (checkForRegExp(forename.value)){
		alert(invalidForename);
		setFocus("forename");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (surname.value == null || surname.value == "")
	{
		alert(emptySurname);
		setFocus("surname");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
		
	if (checkForRegExp(surname.value)){
		alert(invalidSurname);
		setFocus("surname")
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (emailaddress.value == null || emailaddress.value == "")
	{
		alert(emptyEmailAddress);
		setFocus("emailaddress");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (!validate_email(emailaddress))
	{
		alert(invalidEmailAddress);
		setFocus("emailaddress");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (confirmemailaddress.value == null || confirmemailaddress.value == "")
	{
		alert(emptyConfirmEmailAddress);
		setFocus("confirmemailaddress");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	if (emailaddress.value != confirmemailaddress.value)
	{
		alert(invalidConfirmEmailAddress);
		setFocus("confirmemailaddress");
		document.getElementById('btnSignIn').disabled = false;
		return false;
	}
	
	document.FormIndex.submit();
}

/* E-mail validation code adapted from W3Schools.com
http://www.w3schools.com/js/js_form_validation.asp */
function validate_email(field)
{
	with (field)
	{
		apos=value.indexOf("@")
		dotpos=value.lastIndexOf(".")
		if (apos < 1||dotpos-apos < 2) 
		{
			return false;
		}
		else
		{
			return true;
		}
	}
}

// A trim function for 
String.prototype.trim = function()
{
	// skip leading and trailing whitespace
	// and return everything in between
	var x=this;
//		x=x.replace(/^\s*(.*)/, "$1");
//		x=x.replace(/(.*?)\s*$/, "$1");
//		return x;

	var SPACE = 32;
	var trimedString = "";	
	var exactVal = this;
	var start = 0;
	var end = 0;

	// index of first character other than space
	for (i=0; i<exactVal.length; i++)
	if(!(exactVal.charCodeAt(i) == SPACE))
	{
		start = i;
		break;
	}

	// index of last character other than space
	for (i=exactVal.length-1; i>0; i--)
		if (!(exactVal.charCodeAt(i) == SPACE))
		{
			end = i;
			break;
		}

	// Extract The string free from starting spaces and ending spaces but not space in between.
	for (i=start; i<=end; i++)
		trimedString = trimedString+ exactVal.charAt(i);

	// now exact value becomes the trimed string
	exactVal  = trimedString;
	return exactVal;
}

function checkForRegExp(fieldValue)
{
	var myRegExp = /[^a-z-]/i;
	
	if(myRegExp.test(fieldValue))
	{
		return true;
	}
	return false;
}
