
function validRequired(formField,fieldLabel)
{
  var result = true;
  
  if (formField.value == "")
  {
    alert('Please enter a value for the "' + fieldLabel +'" field.');
    formField.focus();
    result = false;
  }
  
  return result;
}

function validOneLetter(formField,fieldLabel)
{
  var result = true;
  var theStr = new String(formField.value);

  if (!(theStr.match(/[a-zA-Z]+/)))
  {
    alert('Please enter a value for the "' + fieldLabel +'" field that contains at least one letter');
    formField.focus();
    result = false;
  }
  
  return result;
}

function validEmail(formField,fieldLabel,required)
{
  var result = true;
  var theStr = new String(formField.value);
  
  if (required && !validRequired(formField,fieldLabel))
    result = false;

  var emailFilter=/^.+@.+\..{2,3}$/;
  if ((!(theStr.match(emailFilter)) && theStr.length > 0) || theStr.indexOf(" ")!=-1) { 
    alert("Please enter a complete email address in the form: yourname@yourdomain.xyz");
    formField.focus();
    result = false;
  }
   
  return result;

}


function validNum(formField,fieldLabel,required,len)
{
  var result = true;
  var numStr = new String(formField.value);

  if (required && !validRequired(formField,fieldLabel))
    result = false;
  
   if (formField.value.length > 0 && result)
   {
     if (!(numStr.match(/^\d+$/)) || formField.value.length != len)
     {
       alert('Please enter a number for the "' + fieldLabel +'" field exactly ' + len + ' characters long');
      formField.focus();    
      result = false;
    }
  } 
  
  return result;
}

function validPhone(phone1,phone2,phone3,required)
{
  var result = true;
  var phoneStr = new String(phone1.value+phone2.value+phone3.value);

     if (!(phoneStr.match(/^\d+$/)) || phoneStr.length != 10)
     {
      	alert('Please enter a 10 digit phone number');
      	phone1.focus();    
      	result = false;
    }
  
  return result;
}

function validPassword(password,confirm_pass)
{
	var result = true;
	
	if (!validRequired(password,"Password"))
    	result = false;
		
	else if (!(password.value.match(/^[a-zA-Z0-9_]+$/)) || password.value.length < 6)
    {
      	alert('Password must only contain letters and numbers and must be 6 characters or more.');
      	password.focus();    
      	result = false;
    }				
	else if (password.value != confirm_pass.value)
	{
		alert('Passwords must match');
		password.focus();
		result = false;
	}

	return result;
}

function validateForm(theForm)
{
  // Customize these calls for your form

  // Validate that required fields != ""
  if (!validOneLetter(theForm.FirstName,"First Name"))
    return false;

  if (!validOneLetter(theForm.LastName,"Last Name"))
    return false;

  if (!validRequired(theForm.StreetAddress1,"Street Address 1"))
    return false;

  if (!validRequired(theForm.City,"City"))
    return false;
	
  if (!validRequired(theForm.State,"State"))
  	return false;

if (!validEmail(theForm.EmailAddress,"Email Address",true))
    return false;

if (!validNum(theForm.ZipCode5,"Zip Code",true,5))
	return false;

if (!validNum(theForm.ZipCode4,"Zip Code (Ext)",false,4))
	return false;


if (!validRequired(theForm.SharedSecretResponse,"Secret Answer"))
    return false;
  
if (!validPhone(theForm.phone1,theForm.phone2,theForm.phone3,true))
  return false;
  
if (!validPassword(theForm.Password,theForm.confirm_password))
  return false;

  // <--------- End
}








function validDate(formField,fieldLabel,required)
{
  var result = true;

  if (required && !validRequired(formField,fieldLabel))
    result = false;
  
   if (result)
   {
     var elems = formField.value.split("/");
     
     result = (elems.length == 3); // should be three components
     
     if (result)
     {
       var month = parseInt(elems[0],10);
        var day = parseInt(elems[1],10);
       var year = parseInt(elems[2],10);
      result = !isNaN(month) && (month > 0) && (month < 13) &&
            !isNaN(day) && (day > 0) && (day < 32) &&
            !isNaN(year) && (elems[2].length == 4);
     }
     
      if (!result)
     {
       alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
      formField.focus();    
    }
  } 
  
  return result;
}
