/*
 * removeAmpersands
 *
 * removes ampersand characters from the specified input field
 * value. Replaces the ampersand with 'and'.
 */
function removeAmpersands (inField) 
{

	// replace '&' character with 'and'
	var pairs = inField.value.split("&");
	var newValue = '';
	newValue = pairs[0];
	for (var i=1; i < pairs.length; i++) newValue += 'and' + pairs[i];
	inField.value = newValue;
}


/*
 * passwordConfirm()
 * version 1.0
 *
 * ensures password contains only letters, number & '_' character. Also ensures 
 * duplicate password is in fact a duplicate. clears password if non-valid.
 * accepts password field
 */
function passwordConfirm (inPW, inPWduplicate) 
{
	// ensure password and duplicate are equal
    if ((inPWduplicate.value != inPW.value)) 
	{
		alert('ensure email and retyped email are the same');
		inPWduplicate.value = '';
	}
}

/*
 * validEmail()
 *
 * ensures email contains no invalid characters, only one @ symbol and a valid fullstop
 */

function validEmail(emailField)
{
	var invalidChars = "/:,;";
	var returnValue = true;
	var emailToCheck = emailField.value;

	if(emailToCheck == '')
	{
		returnValue = false;
	}
	else
	{
		// check for illegal characters
		for (i=0; i<invalidChars.length;i++)
		{
			var badChar = invalidChars.charAt(i);
			if (emailToCheck.indexOf(badChar)>-1)
			{
				returnValue = false;
			}
		}

		// find the first @ symbol (starting at the second character)
		var atPos = emailToCheck.indexOf("@",1);
		if(atPos == -1)
		{
			returnValue = false;
		}

		// ensure there is only one @ symbol
		if(emailField.value.indexOf("@",atPos+1) > -1)
		{
			returnValue = false;
		}

		// find the next full-stop after the @
		periodPos = emailToCheck.indexOf(".",atPos);

		// email is invalid if no . after the @
		if(periodPos == -1)
		{
			returnValue = false;
		}

		// ensure there are at least two characters after the first . after the @
		if(periodPos+3 > emailToCheck.length)
		{
			returnValue = false;
		}
	}

	return returnValue;
}





var re= "^\w+([\,-]?\w+([\,-]?\w+)*(\.\w{2,3})+$"; 
 
 
function emailValid(formEmailAddress)
{
	if (re.test(formEmailAddress.Email.value))
	{
		alert('email is valid');
		return true;
	}

	alert("Invalid email address");
	formEmailAddress.Email.focus();
	formEmailAddress.Email.select();
	return false;
}

var re= "^\w+([\,-]?\w+([\,-]?\w+)*(\.\w{2,3})+$";

function submitIt(formEmailAddress)
{
	if (re.test(formEmailAddress.Email.value)) return true;
	if(!validEmail(form1.Email,value))
	{
		alert("Invalid email address")
		formEmailAddress.Email.focus()
		formEmailAddress.Email.select()
		return false;
	}

	return true;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }



// when called, this function will change the behaviour of the specified form (by changing the form's
// action attribute). The form will then be submitted.
// Note: use of this technique is not recommended as it is reliant on javascript and is generally not
// 'the web way' (i.e. use hyperlinks).
function ChangeFormActionAndSubmit(formID, url)
{
	document.getElementById(formID).action = url;
	document.getElementById(formID).submit();
}



function ValidateNewsletterSignup ()
{
	var newsletterEmailMessage = document.getElementById('newsletterEmailError');
	var newsletterEmailField = document.getElementById('templateNewsletterEmail');
	var emailIsValid = validEmail(newsletterEmailField);
	if (newsletterEmailMessage)
	{ 
		newsletterEmailMessage.style.display = (emailIsValid == false) ? 'inline' : 'none'; 
	}
	return emailIsValid;
}
