/*
** FORM validation
*/


/* REDIRECT NON HTTPS TRAFFIC TO HTTPS */
var prefix = window.parent.document.location.protocol;
var pathname = document.location.pathname;
if(prefix == "http:") {
	prefix = "https:";
	fullUrl = prefix+"//www.charitablegiving.co.uk"+pathname;
	//window.location = fullUrl;
}


/* PAGE: usersLogin.asp / userslogon.asp */
function frmUserLogin(form) {
	if(form.userselkath1.value=='') {
		alert('Your email address is required.');
		form.userselkath1.focus();
		return false;
	}
	if(form.userselkath2.value=='') {
		alert('Your password is required.');
		form.userselkath2.focus();
		return false;
	}
	return true;
}


/* PAGE: UserPassword.asp */
function frmUserPassword(form) {
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.address1.value=='') {
		alert('Your address line 1 is required.');
		form.address1.focus()
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required.');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required.');
		form.employer_name.focus();
		return false;
	}
	if(form.emailaddress.value=='') {
		alert('Your email address is required.');
		form.emailaddress.focus();
		return false;
	}
	if(!emailCheck(form.emailaddress.value)) {
		form.emailaddress.focus();
		return false;
	}
	if(form.emailaddress2.value=='') {
		alert('Please re-enter your email address');
		form.emailaddress2.focus();
		return false;
	}
	if(form.emailaddress.value != form.emailaddress2.value) {
		alert('The two email addresses do not match');
		form.emailaddress2.value='';
		form.emailaddress2.focus();
		return false;
	}
	return true;
}


/* PAGE: accountLogon.asp / logon.asp */
function frmAccountLogin(form) {
	if(form.selkath1.value=='') {
		alert('Your User ID is required.');
		form.selkath1.focus();
		return false;
	}
	if(form.selkath2.value=='') {
		alert('Your password is required.');
		form.selkath2.focus();
		return false;
	}
	return true;
}


/* PAGE: VoucherAccountPassword.asp */
function frmAccountPassword(form) {
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.userid.value=='') {
		alert('Your User ID is required.');
		form.userid.focus();
		return false;
	}
	if(form.userid.value.length > 6 || form.userid.value.length < 6) {
		alert('The User ID should be no more or no less than 6 numerical characters.');
		form.userid.focus();
		return false;
	}
	if(form.address1.value=='') {
		alert('Your address line 1 is required.');
		form.address1.focus()
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required.');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required.');
		form.employer_name.focus();
		return false;
	}
	return true;
}


/* PAGE: voucherAccountRegistration.asp */
function frmAccountRegistration(form) {
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.address1.value=='') {
		alert('Line 1 of your address is required.');
		form.address1.focus();
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required.');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required.');
		form.employer_name.focus();
		return false;
	}
	if(form.employer_address1.value=='') {
		alert('Line 1 of your employer\'s address is required.');
		form.employer_address1.focus();
		return false;
	}
	if(form.employer_postcode.value=='') {
		alert('Your employer\'s postcode is required.');
		form.employer_postcode.focus();
		return false;
	}
	if(form.emailaddress.value=='') {
		alert('Your email address is required.');
		form.emailaddress.focus();
		return false;
	}
	if(!emailCheck(form.emailaddress.value)) {
		form.emailaddress.focus();
		return false;
	}
	if(form.emailaddress2.value=='') {
		alert('Please re-enter your email address');
		form.emailaddress2.focus();
		return false;
	}
	if(form.emailaddress.value != form.emailaddress2.value) {
		alert('The two email addresses do not match');
		form.emailaddress2.value='';
		form.emailaddress2.focus();
		return false;
	}

	if(form.password.value=='') {
		alert('Please enter a password.');
		form.password.focus();
		return false;
	} else {
		if(form.password.value.length < 8) {
			alert('Password must be no less than 8 characters and contain both letters and numbers');
			form.password.focus();
			return false;
		}
		str = form.password.value;
		chars = 0; numbers = 0;
		for(x=0; x < str.length; x++) {
			char = str.charAt(x);
			if(ascii_value(char) >= 65 && ascii_value(char) <= 122) chars=chars+1;
			if(ascii_value(char) >= 48 && ascii_value(char) <= 57) numbers=numbers+1;
		}
		if(chars == 0 || numbers == 0) {
			alert('The password must contain at least 1 letter and 1 number');
			form.password.focus();
			return false;
		}
	}
	if(form.password.value != form.password2.value) {
		alert('The passwords do not match.');
		form.password2.value='';
		form.password2.focus();
		return false;
	}
	if(form.password2.value=='') {
		alert('Please re-enter your password.');
		form.password2.focus();
		return false;
	} else {
		if(form.password.value.length < 8) {
			alert('Password must be no less than 8 characters and contain both letters and numbers');
			form.password.focus();
			return false;
		}
		str = form.password2.value;
		chars = 0; numbers = 0;
		for(x=0; x < str.length; x++) {
			char = str.charAt(x);
			if(ascii_value(char) >= 65 && ascii_value(char) <= 122) chars=chars+1;
			if(ascii_value(char) >= 48 && ascii_value(char) <= 57) numbers=numbers+1;
		}
		if(chars == 0 || numbers == 0) {
			alert('The password must contain at least 1 letter and 1 number');
			form.password2.focus();
			return false;
		}
	}

	return true;
}


/* PAGE: UserRegistration.asp */
function frmUserRegistration(form) {
	//Validate the radio buttons
	theSelection = -1;
	for (var i = form.Company_Voucher_Account.length-1; i > -1; i--)
	{
		if (form.Company_Voucher_Account[i].checked)
		{
			theSelection = i;
			i = -1;
		}
	}
	if (theSelection == -1)
	{
		alert('You must state if this is a Company Voucher Account.');
		return false;
	}
	
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.address1.value=='') {
		alert('Line 1 of your address is required.');
		form.address1.focus();
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required.');
		form.postcode.focus();
		return false;
	}	
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required.');
		form.employer_name.focus();
		return false;
	}
	if(form.employer_address1.value=='') {
		alert('Line 1 of your employer\'s address is required.');
		form.employer_address1.focus();
		return false;
	}
	if(form.employer_postcode.value=='') {
		alert('Your employer\'s postcode is required.');
		form.employer_postcode.focus();
		return false;
	}
	if(form.emailaddress.value=='') {
		alert('Your email address is required.');
		form.emailaddress.focus();
		return false;
	}
	if(!emailCheck(form.emailaddress.value)) {
		form.emailaddress.focus();
		return false;
	}
	if(form.emailaddress2.value=='') {
		alert('Please re-enter your email address');
		form.emailaddress2.focus();
		return false;
	}
	if(form.emailaddress.value != form.emailaddress2.value) {
		alert('The two email addresses do not match');
		form.emailaddress2.value='';
		form.emailaddress2.focus();
		return false;
	}

	if(form.password.value=='') {
		alert('Please enter a password.');
		form.password.focus();
		return false;
	} else {
		if(form.password.value.length < 8) {
			alert('Password must be no less than 8 characters and contain both letters and numbers');
			form.password.focus();
			return false;
		}
		str = form.password.value;
		chars = 0; numbers = 0;
		for(x=0; x < str.length; x++) {
			char = str.charAt(x);
			if(ascii_value(char) >= 65 && ascii_value(char) <= 122) chars=chars+1;
			if(ascii_value(char) >= 48 && ascii_value(char) <= 57) numbers=numbers+1;
		}
		if(chars == 0 || numbers == 0) {
			alert('The password must contain at least 1 letter and 1 number');
			form.password.focus();
			return false;
		}
	}
	if(form.password.value != form.password2.value) {
		alert('The passwords do not match.');
		form.password2.value='';
		form.password2.focus();
		return false;
	}
	if(form.password2.value=='') {
		alert('Please re-enter your password.');
		form.password2.focus();
		return false;
	} else {
		if(form.password.value.length < 8) {
			alert('Password must be no less than 8 characters and contain both letters and numbers');
			form.password.focus();
			return false;
		}
		str = form.password2.value;
		chars = 0; numbers = 0;
		for(x=0; x < str.length; x++) {
			char = str.charAt(x);
			if(ascii_value(char) >= 65 && ascii_value(char) <= 122) chars=chars+1;
			if(ascii_value(char) >= 48 && ascii_value(char) <= 57) numbers=numbers+1;
		}
		if(chars == 0 || numbers == 0) {
			alert('The password must contain at least 1 letter and 1 number');
			form.password2.focus();
			return false;
		}
	}
	return true;
}


/* PAGE: eVoucher.asp */
function frmEvoucher(form) {
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.userid.value=='') {
		alert('Your User ID is required.');
		form.userid.focus();
		return false;
	}
	if(form.userid.value.length > 6 || form.userid.value.length < 6) {
		alert('The User ID should be no more or no less than 6 numerical characters.');
		form.userid.focus();
		return false;
	}
	if(form.address1.value=='') {
		alert('Your address line 1 is required.');
		form.address1.focus()
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required.');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.donation_name.value=='') {
		alert('A charity name is required.');
		form.donation_name.focus();
		return false;
	}
	if(form.donation_amount.value=='' || form.donation_amount.value == '0.00' || form.donation_amount.value == '0') {
		alert('A donation amount is required.');
		form.donation_amount.focus();
		return false;
	}
	if(form.donation_amount.value < 5) {
		alert('The donation amount must be 5.00 GBP or more');
		form.donation_amount.focus();
		return false;
	}
	if(!form.agreeToTerms.checked) {
		alert('Please tick the box agreeing to our terms');
		form.agreeToTerms.focus();
		return false;
	}
	return true;
}


/* PAGE: donationChoiceForm_start.asp */
function frmDonationChoiceStart(form) {
	if(form.charity1_name.value=='') {
		alert('Please enter a name for Charity 1');
		form.charity1_name.focus();
		return false;
	}
	if(form.charity1_amount.value=='') {
		alert('Please enter an amount for Charity 1');
		form.charity1_amount.focus();
		return false;
	}
	
	
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required');
		form.employer_name.focus();
		return false;
	}
	if(!form.tickGiftAid.checked) {
		alert('Please tick the required box.');
		form.tickGiftAid.focus();
		return false;
	}
	if(!form.tickTerms.checked) {
		alert('Please tick the box agreeing to our terms');
		form.tickTerms.focus();
		return false;
	}
	
	if(form.partb_title.value=='') {
		alert('Part B: Your title is required');
		form.partb_title.focus();
		return false;
	}
	if(form.partb_initials.value=='') {
		alert('Part B: Your initials are required');
		form.partb_initials.focus();
		return false;
	}
	if(form.partb_surname.value=='') {
		alert('Part B: Your surname is required');
		form.partb_surname.focus();
		return false;
	}
	if(form.partb_employer_name.value=='') {
		alert('Part B: Your employer\'s name is required');
		form.partb_employer_name.focus();
		return false;
	}
	if(form.partb_employer_address1.value=='') {
		alert('Part B: The first line of your employer\'s address is required');
		form.partb_employer_address1.focus();
		return false;
	}
	if(form.partb_employer_postcode.value=='') {
		alert('Part B: Your employer\'s post code is required');
		form.partb_employer_postcode.focus();
		return false;
	}
	if( !checkPostCode( 'partb_employer_postcode' ) ) {
		return false;
	}
	if(!form.radio_startamendstop_start.checked && !form.radio_startamendstop_amend.checked && !form.radio_startamendstop_stop.checked) {
		alert('Please select whether you wish to start, stop or amend');
		return false;
	}
	if(!form.radio_weeklymonthly_weekly.checked && !form.radio_weeklymonthly_monthly.checked) {
		alert('Please select whether you wish to pay weekly or monthly');
		return false;
	}
	if(form.radio_weeklymonthly_weekly.checked) {
		if(form.charity1_amount.value < 0.25) {
			alert('Please ensure that if paying weekly that each amount is no less than 0.25 GBP');
			form.charity1_amount.focus();
			return false;
		}
		if(form.charity2_amount.disabled == false && form.charity2_amount.value < 0.25) {
			alert('Please ensure that if paying weekly that each amount is no less than 0.25 GBP');
			form.charity2_amount.focus();
			return false;
		}
		if(form.charity3_amount.disabled == false && form.charity3_amount.value < 0.25) {
			alert('Please ensure that if paying weekly that each amount is no less than 0.25 GBP');
			form.charity3_amount.focus();
			return false;
		}
	}
	if(form.radio_weeklymonthly_monthly.checked) {
		if(form.charity1_amount.value < 1.00) {
			alert('Please ensure that if paying monthly that each amount is no less than 1.00 GBP');
			form.charity1_amount.focus();
			return false;
		}
		if(form.charity2_amount.disabled == false && form.charity2_amount.value < 1.00) {
			alert('Please ensure that if paying monthly that each amount is no less than 1.00 GBP');
			form.charity2_amount.focus();
			return false;
		}
		if(form.charity3_amount.disabled == false && form.charity3_amount.value < 1.00) {
			alert('Please ensure that if paying monthly that each amount is no less than 1.00 GBP');
			form.charity3_amount.focus();
			return false;
		}
	}
	if(!form.partb_tickTerms.checked) {
		alert('Please tick the box agreeing to our terms');
		form.partb_tickTerms.focus();
		return false;
	}

	return true;
}


/* PAGE: donationChoiceForm_setup.asp */
function frmDonationChoiceSetup(form) {
	if(form.amount.value=='') {
		alert('An amount is required');
		form.amount.focus();
		return false;
	}
	if(form.amount.value < 10) {
		alert("The amount must be 10.00 GBP or higher");
		form.amount.focus();
		return false;
	}
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(!form.tickGiftAid.checked) {
		alert('Please tick the required box.');
		form.tickGiftAid.focus();
		return false;
	}
	if(!form.tickTerms.checked) {
		alert('Please tick the box agreeing to our terms');
		form.tickTerms.focus();
		return false;
	}



	if(form.partb_title.value=='') {
		alert('Part B: Your title is required');
		form.partb_title.focus();
		return false;
	}
	if(form.partb_initials.value=='') {
		alert('Part B: Your initials are required');
		form.partb_initials.focus();
		return false;
	}
	if(form.partb_surname.value=='') {
		alert('Part B: Your surname is required');
		form.partb_surname.focus();
		return false;
	}
	if(form.partb_employer_name.value=='') {
		alert('Part B: Your employer\'s name is required');
		form.partb_employer_name.focus();
		return false;
	}
	if(form.partb_employer_address1.value=='') {
		alert('Part B: The first line of your employer\'s address is required');
		form.partb_employer_address1.focus();
		return false;
	}
	if(form.partb_employer_postcode.value=='') {
		alert('Part B: Your employer\'s post code is required');
		form.partb_employer_postcode.focus();
		return false;
	}
	if( !checkPostCode( 'partb_employer_postcode' ) ) {
		return false;
	}

	if(!form.radio_startamendstop_start.checked && !form.radio_startamendstop_amend.checked && !form.radio_startamendstop_stop.checked) {
		alert('Please select whether you wish to start, stop or amend');
		return false;
	}

	if(!form.partb_tickTerms.checked) {
		alert('Please tick the box agreeing to our terms');
		form.partb_tickTerms.focus();
		return false;
	}

	return true;
}



/* PAGE: donationChoiceForm_start.asp */
function frmEmployerEnquiry(form) {
	if(form.title.value=='') {
		alert('Your title is required.');
		form.title.focus();
		return false;
	}
	if(form.initials.value=='') {
		alert('Your initials are required');
		form.initials.focus();
		return false;
	}
	if(form.surname.value=='') {
		alert('Your surname is required');
		form.surname.focus();
		return false;
	}
	if(form.postcode.value=='') {
		alert('Your postcode is required');
		form.postcode.focus();
		return false;
	}
	if( !checkPostCode( 'postcode' ) ) {
		return false;
	}
	if(form.telephone.value=='') {
		alert('Your telephone number is required');
		form.telephone.focus();
		return false;
	}
	if(form.emailaddress.value=='') {
		alert('Your email address is required');
		form.emailaddress.focus();
		return false;
	}
	if(!emailCheck(form.emailaddress.value)) {
		form.emailaddress.focus();
		return false;
	}
	if(form.employer_name.value=='') {
		alert('Your employer\'s name is required');
		form.employer_name.focus();
		return false;
	}
	if(form.employer_address1.value=='') {
		alert('The first line of your employer\'s address is required');
		form.employer_address1.focus();
		return false;
	}
	if(form.employer_postcode.value=='') {
		alert('Your employer\'s post code is required');
		form.employer_postcode.focus();
		return false;
	}
	if( !checkPostCode( 'employer_postcode' ) ) {
		return false;
	}
	if(!form.payrollOperates_yes.checked && !form.payrollOperates_no.checked) {
		alert('Please select yes or no if you wish us to determine whether your employer operates a Payroll Giving scheme');
		return false;
	}
	if(!form.setupPayroll_yes.checked && !form.setupPayroll_no.checked) {
		alert('Please select yes or no if you wish us to contact your employer to discuss setting up a Payroll Giving scheme');
		return false;
	}

	return true;
}


function validateContactUsForm(form) {
	if(form.name.value=='') {
		alert('Your name is required');
		form.name.focus();
		return false;
	}
	if(form.enquiry.value=='') {
		alert('An enquiry is required');
		form.enquiry.focus();
		return false;
	}
	return true;
}




<!-- Begin
function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("Email address seems incorrect (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("The username doesn't seem to be valid.")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("The domain name doesn't seem to be valid.")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("The address must end in a three-letter domain, or two letter country.")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!"
   alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!
return true;
}
//  End -->


function numbersonly(myfield, e, dec)
{
	var key;
	var keychar;

	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;

	keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789.").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}





function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '' + num + '.' + cents);
}



function clearForm(formIdent) 
{ 
  var form, elements, i, elm; 
  form = document.getElementById 
    ? document.getElementById(formIdent) 
    : document.forms[formIdent]; 

	if (document.getElementsByTagName)
	{
		elements = form.getElementsByTagName('input');
		for( i=0, elm; elm=elements.item(i++); )
		{
			if (elm.getAttribute('type') == "text")
			{
				elm.value = '';
			}
			if (elm.getAttribute('type') == "checkbox")
			{
				elm.checked = false;
			}
			if (elm.getAttribute('type') == "radio")
			{
				elm.checked = false;
			}
		}
		elements = form.getElementsByTagName('textarea');
		for( i=0, elm; elm=elements.item(i++); )
		{
			elm.value = "";
		}
	}

	// Actually looking through more elements here
	// but the result is the same.
	else
	{
		elements = form.elements;
		for( i=0, elm; elm=elements[i++]; )
		{
			if (elm.type == "text")
			{
				elm.value ='';
			}
			if (elm.getAttribute('type') == "checkbox")
			{
				elm.checked = false;
			}
			if (elm.getAttribute('type') == "radio")
			{
				elm.checked = false;
			}
			if(elm.tyle == 'textarea') {
				elm.value = '';
			}
		}
	}
}

function ascii_value (c)
{

	// restrict input to a single character
	//c = c . charAt (0);

	// loop through all possible ASCII values
	var i;
	for (i = 0; i < 256; ++ i)
	{
		// convert i into a 2-digit hex string
		var h = i . toString (16);
		if (h . length == 1)
			h = "0" + h;

		// insert a % character into the string
		h = "%" + h;

		// determine the character represented by the escape code
		h = unescape (h);

		// if the characters match, we've found the ASCII value
		if (h == c)
			break;
	}

	return i;
}

function checkPostCode( elementID ){ //check postcode format is valid
 if(!elementID) { alert('Post code verification: No postcode element ID sent'); return false; }
 test = document.getElementById( elementID ).value;
 size = test.length
 test = test.toUpperCase(); //Change to uppercase
 while (test.slice(0,1) == " ") //Strip leading spaces
  {test = test.substr(1,size-1);size = test.length
  }
 while(test.slice(size-1,size)== " ") //Strip trailing spaces
  {test = test.substr(0,size-1);size = test.length
  }
 document.getElementById( elementID ).value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert("Post code is invalid - wrong length");
  document.getElementById( elementID ).focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
   alert("Postcode is invalid - cannot start with a number");
   document.getElementById( elementID ).focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert("Postcode is invalid - alpha character in wrong position");
   document.getElementById( elementID ).focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert("Postcode is invalid - number in wrong position");
   document.getElementById( elementID ).focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert("Postcode is invalid - number in wrong position");
   document.getElementById( elementID ).focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert("Postcode is invalid - no space or space in wrong position");
   document.getElementById( elementID ).focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert("Postcode is invalid - only one space allowed");
   document.getElementById( elementID ).focus();
   return false;
  }
return true;
}


function goUpperCase(id) {
	if(!id) return false;
	txt = document.getElementById(id).value;
	txt = txt.toUpperCase();
	document.getElementById(id).value = txt;
	return;
}

