


function check(form)
	{

	var doneYet = true;

	doneYet = doneYet && usrEmail(form);

	if (doneYet) doneYet = doneYet && code(form);

	return doneYet;
	
	}





// ------------------------------







// agree to terms [checkbox]
function agreeToTerms(form)
	{
	//alert (form.agree );
	if (form.agree && !form.agree.checked)
		{
		alert("You must agree to terms and conditions to continue.");
		form.agree.focus();
		return false;
		}
	return true;
	}



function code(form) {

	if ( (form.code) && (form.code.value.length !== 8) ) {

			alert("Please enter a valid 8 digit code.");
			form.code.focus();
			return false;
	
	}  else {
		return true;
		var filter = /[O,0,Q,1,L,I,S,5,8,B,Z,2,D,V,H,A,E,N,G,U]+/i;	
		var filter2 = /^[A-Za-z0-9]+$/;
		if( filter.test( form.code.value ) || !filter2.test( form.code.value ) ) {
			alert("Please enter a valid 8 digit code.");
			form.code.focus();
			return false;
		}
	}
return true;
}


// CAPTCHA
function captchaText(form)
    {

    if (form.captcha)
        {
        var filter = /^[A-Za-z0-9]{6}$/;

        if(  ( !filter.test( form.captcha.value ) )  )
            {
            alert( "Please enter the characters you see in the box." );
            form.captcha.focus();
            return false;
            }
        }
    return true;
    }




// salutation
function usrSalutation(form)
	{

	if (form.salutation)
		{
		salut_count = 0;
		for (i = 0; i < form.salutation.length; i++)
			{ if (form.salutation[i].checked == 1) salut_count = 1; }
		if (salut_count != 1)
			{
			alert("Please enter a salutation.");
			return false;
			}
		}
	return true;
	}





// first name
function firstname(form)
    {

    if (form.fname)
        {
     var filter = /^[A-Za-z\-\x27\s]+$/;

        if(  ( !filter.test( form.fname.value ) )  )
            {
            alert( "Please enter your first name using only letters, hyphens, and apostrophes." );
            form.fname.focus();
            return false;
            }
        }
    return true;
    } 



// last name
function lastname(form)
    {

    if (form.lname)
        {
     var filter = /^[A-Za-z\-\x27\s]+$/;

        if(  ( !filter.test( form.lname.value ) )  )
            {
            alert( "Please enter your last name using only letters, hyphens, and apostrophes." );
            form.lname.focus();
            return false;
            }
        }
    return true;
    } 




// address
function usrAddress(form)
	{

	if ( (form.address) && (form.address.value.length == 0) )
		{
		alert("Please enter your home address.");
		form.address.focus();
		return false;
		}
	return true;
	}




// city
function usrCity(form)
    {

    if (form.city)
        {
     var filter = /^[A-Za-z\-\s]+$/;

        if(  ( !filter.test( form.city.value ) )  )
            {
            alert( "Please enter your city using only letters, hyphens, and spaces." );
            form.city.focus();
            return false;
            }
        }
    return true;
    } 




// state
function usrState(form)
	{

	if ( (form.state) &&  (form.state.options[form.state.options.selectedIndex].value == "") )
		{
		alert("Please select your state.");
        form.state.focus();
		return false;
		}
	return true;
	}





// prevent user from entering anything other than numbers and a hyphen -- called using onkeyup="return zipCheck(this.form);" in the input field
function zipCheck(form) {

	var ValidChars = "0123456789-";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < form.zip.value.length && IsNumber == true; i++) { 
		Char = form.zip.value.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			if ( IsNumber == false ) {
				var newStr = form.zip.value.substring(0, form.zip.value.length - 1);
			
				form.zip.value = newStr;
			}
		}
		else {
			form.zip.focus();
		}
	}
	return IsNumber;
}



// zip   (correct format called on form submit)

/*
if open to both US and Canada, uncomment var filter2 and use the following:
		if(  ( !filter.test( form.zip.value ) )   &&  ( !filter2.test( form.zip.value ) )  )
*/

function usrZip(form)
	{

	if (form.zip)
		{

		// usa zip code format: ##### or #####-####
		var filter = /^[0-9]{5}(\-[0-9]{4})?$/;

		// canadian zip code format: X#X #X# or X#X#X#
		//var filter2 = /^[A-z][0-9][A-z] ?[0-9][A-z][0-9]$/;

		if(  ( !filter.test( form.zip.value ) )  )
			{
			alert( "Please enter a valid zip code." );
			form.zip.focus();
			return false;
			}
		}
	return true;
	}


function usrZip(form)
	{

	if (form.zip)
		{

		// usa zip code format: ##### or #####-####
		var filter = /^[0-9]{5}(\-[0-9]{4})?$/;

		// canadian zip code format: X#X #X# or X#X#X#
		//var filter2 = /^[A-z][0-9][A-z] ?[0-9][A-z][0-9]$/;

		if(  ( !filter.test( form.zip.value ) )  )
			{
			alert( "Please enter a valid zip code." );
			form.zip.focus();
			return false;
			}
		}
	return true;
	}



// email
function usrEmail(form)
        {
        if (form.email)
		{
		var filter = /^([a-z0-9\+_\x27\-]+)(\.[a-z0-9\+_\x27\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i;
		if (!filter.test( form.email.value ))
			{
			alert( "Please enter a valid email address." )
			form.email.focus();
			return false;
			}
		}
	return true;
	}






/* CONFIRM EMAIL ADDRESS --- as one function */
function emailsMatch(form)
	{

	if ( (form.email2) && (form.email2.value.length == 0) )
		{
		alert("Please confirm your email address.");
		form.email2.focus();
		return false;
		}

	if ( (form.email.value.toLowerCase()) != (form.email2.value.toLowerCase()) )
		{
		alert( "Please enter matching email addresses." )
		form.email2.focus();
		return false;
		}
	
	return true;
	}




/* CONFIRM EMAIL ADDRESS --- as two seperate functions */
// confirm email address
function confirmEmail(form)
	{

	if ( (form.email2) && (form.email2.value.length == 0) )
		{
		alert("Please confirm your email address.");
		form.email2.focus();
		return false;
		}
	return true;
	}	



// emails match?
function sameEmail(form)
	{
		
		if ( (form.email.value.toLowerCase()) != (form.email2.value.toLowerCase()) )
			{
			alert( "Please enter matching email addresses." )
			form.email2.focus();
			return false;
			}
	
	return true;
	}
	





// check birthday -- select | input | input
function usrBirthday(form)
	{
	// month birthday 
	if ( (form.birth_month) && ( form.birth_month.options[form.birth_month.options.selectedIndex].value == "" ) )
		{
		alert("Please select your month of birth.");
		form.birth_month.focus();
		return false;
		}
	// day birthday
	if  (form.birth_day) 
		{
		var filter = /^[0-9]{1,2}$/	
		if( (!filter.test( form.birth_day.value ))  ||  (form.birth_day.value < 1) || (form.birth_day.value > 31)  )
			{
			alert("Please tell us your day of birth.");
			form.birth_day.focus();
			return false;
			}
		}
	// year birth_day  ||  (form.B_YEAR.value < 1) || (form.B_YEAR.value > 99)
	if  (form.birth_year) 
		{
		var filter = /^[0-9]{1,2}$/	
		if( (!filter.test( form.birth_year.value ))  )
			{
			alert("Please tell us what year you were born.");
			form.birth_year.focus();
			return false;
			}
		}
	return true;
	}



// check birthday -- select | select | select
function usrBirthdaySelect(form)
	{
	//  birth_day 
	if ( (form.birth_month) && ( form.birth_month.options[form.birth_month.options.selectedIndex].value == "" ) )
		{
		alert("Please select your month of birth.");
		form.birth_month.focus();
		return false;
		}

	//  birth_day 
	if ( (form.birth_day) && ( form.birth_day.options[form.birth_day.options.selectedIndex].value == "" ) )
		{
		alert("Please select your day of birth.");
		form.birth_day.focus();
		return false;
		}

	//  birth_year 
	if ( (form.birth_year) && ( form.birth_year.options[form.birth_year.options.selectedIndex].value == "" ) )
		{
		alert("Please select your year of birth.");
		form.birth_year.focus();
		return false;
		}

	return true;
	}


// check birthday -- input | input | input
function usrBirthdayInputs(form)
	{
	// month birthday 
	if  (form.birth_month) 
		{
		var filter = /^[0-9]{1,2}$/	
		if( (!filter.test( form.birth_month.value ))  ||  (form.birth_month.value < 1) || (form.birth_month.value > 12)  )
			{
			alert("Please tell us your month of birth.");
			form.birth_month.focus();
			return false;
			}
		}
	// day birthday
	if  (form.birth_day) 
		{
		var filter = /^[0-9]{1,2}$/	
		if( (!filter.test( form.birth_day.value ))  ||  (form.birth_day.value < 1) || (form.birth_day.value > 31)  )
			{
			alert("Please tell us your day of birth.");
			form.birth_day.focus();
			return false;
			}
		}
	// year birth_day  ||  (form.B_YEAR.value < 1) || (form.B_YEAR.value > 99)
	if  (form.birth_year) 
		{
		var filter = /^[0-9]{1,2}$/	
		if( (!filter.test( form.birth_year.value ))  )
			{
			alert("Please tell us what year you were born.");
			form.birth_year.focus();
			return false;
			}
		}
	return true;
	}





// Auto tab function (for phone number field)
function getIndex (e) {
	var f = e.form.elements;
	for (var i = 0; i < f.length; i++)
		if (e == f[i])
			return i;
	return -1;
}


function checkMaxLength (e, l) {
	var retVal = phoneCheckThree(e);
	if (retVal == true) {
		if (!l)
			l = e.maxLength;
	if (e.value.length == l) {
		e.form.elements[getIndex(e) + 1].focus();
		return true;
		}
	}
	else return retVal;
}
 


/* original function
function checkMaxLength (e, l) {
	if (!l)
		l = e.maxLength;
	if (e.value.length == l) {
		e.form.elements[getIndex(e) + 1].focus();
		return true;
	}
	else return true;
}
*/




// prevent user from entering anything other than numbers and a hyphen -- called using onkeyup in the input field
function phoneCheckThree(element) {

	var sText = element.value;
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;

	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			if ( IsNumber == false ) {
				var newStr = sText.substring(0, sText.length - 1);
				element.value = newStr;
				}
			}
		else {
			element.focus();
		}
	}
	return IsNumber;
}
 




// phone number === 3 fields
function phoneNumber(form)
	{
	// phone area code
	if (form.phone1)
		{
		var filter = /^[0-9]{3}$/
		if( !filter.test( form.phone1.value ) )
			{
			alert("Please enter your area code.");
			form.phone1.focus();
			return false;
			}
	}
   	// phone prefix
	if (form.phone2)
		{
		var filter = /^[0-9]{3}$/
		if( !filter.test( form.phone2.value ) )
			{
			alert("Please enter your telephone number.");
			form.phone2.focus();
			return false;
			}
		}
 	// phone suffix
	if (form.phone3)
		{
		var filter = /^[0-9]{4}$/
		if( !filter.test( form.phone3.value ) )
			{
			alert("Please enter your telephone number.");
			form.phone3.focus();
			return false;
			}
		}
	return true;
	}





// prevent user from entering anything other than numbers and a hyphen -- called using onkeyup="return phoneCheckOne(this.form);" in the input field
function phoneCheckOne(sText) {

	var ValidChars = "0123456789-";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			if ( IsNumber == false ) {
				var newStr = sText.substring(0, sText.length - 1);
				document.reg.phone.value = newStr;
			}
		}
		else {
			document.reg.phone.focus();
		}
	}
	return IsNumber;
}




// phone number === 1 field
function phoneNumberOne(form)
	{

	if (form.phone)
		{
		
		var filter = /^[0-9]{3}\-[0-9]{3}\-[0-9]{4}$/;

		if( !filter.test( form.phone.value ) )
			{
			alert("Please enter your telephone number. Please follow this format: 555-123-4567");
			form.phone.focus();
			return false;
			}
		}
	return true;
	}









