var whitespace = " \t\n\r";

function isEmpty(s) {
var i; 

if((s==null)||(s.length==0)) return true;
for(i=0; i<s.length;i++) {
var c = s.charAt(i);
if (whitespace.indexOf(c) == -1) return false;
}

return true;
}

function IsNumber(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;
         }
      }
   return IsNumber;
   
   }
   
function IsPhoneNumber(sText) {
	phoneRegex = /^\(\d{3]\) \d{3}-\d{4}$/;
  
  	//if( !sText.match( phoneRegex ) )
  		//return false;   
		
	return true;
}
   
function validateZipCode(theField) {
   	var ValidChars = "0123456789";
	var x = theField.value;
			
			
	if(isEmpty(x)) {
		alert("Zip code is required");
		theField.focus();
		return false; 
		/*
		return true;
		*/
	}
		
	if (x.length != 5) {
		alert("Zip code is invalid.");
		theField.focus();
		return false;
		}
		
	if (!IsNumber(x)) {
		alert("Zip code is invalid.");
		theField.focus();
		return false;
		}
		
	return true;
   }

function validateEmailAddress(theField) {
	var x = theField.value;
	var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
			if(isEmpty(x)) {
		alert("Email is required");
		theField.focus();
		return false; }
	
	if (!filter.test(x)) {
		alert("Invalid email address");
		theField.focus();
		return false;
		}

	return true;
}

function validatePhoneNumber(theField) {
  	var n = theField.value; 
	
	if(isEmpty(n)) {
		alert("Phone number is required");
		theField.focus();
		return false; }
		
	if (!IsPhoneNumber(n)) {
		alert("The phone number you entered is not valid.\r\nPlease enter a phone number with the format (xxx) xxx-xxxx.");
		theField.focus();
		return false;
	}
		
	return true;
}

function validate(theForm) {
	/*
	if(isEmpty(theForm.firstname.value)) {
		alert("First name is required");
		theForm.firstname.focus();
		return false; }
		
	if(isEmpty(theForm.lastname.value)) {
		alert("Last name is required");
		theForm.lastname.focus();
		return false; }
	*/
	if (!validateEmailAddress(theForm.email))
		return false;
	
	if (!validateZipCode(theForm.zipcode))
		return false;
		
	/*	
	if (!validatePhoneNumber(theForm.phone))
		return false;
		*/
	return true;
}

function CheckForm(form, fields)
{
	var field;
	var msg = '';
	for(var fieldName in fields)
	{
		field = fields[fieldName];
		
		value = form.elements[fieldName].value;
		
		if(field.type == 'str')
		{
			if(/\w+/.exec(value))
				continue;
		}
		else if(field.type == 'email')
		{
			if(/^[\w.=-]+@[\w.-]+\.[a-zA-Z]{2,4}$/.exec(value))
				continue;
		}
		else if(field.type == 'reg')
		{
			if(field.reg.exec(value))
				continue;
		}
		
		msg += field.msg + "\n";
	}
	
	if(msg != '')
	{
		alert("The following fields are required, please update and resubmit your information.\n" + msg);
		
		return false;
	}
	
	return true;
}

function CheckSignupForm(form)
{
	var fields = {
		first_name: { type: 'str', msg: 'Please enter your first name.' },
		last_name: { type: 'str', msg: 'Please enter your last name.' },
		email_address: { type: 'email', msg: 'Please enter a valid e-mail address.' },
		zip: { type: 'reg', reg: /^\d{5}$/, msg: 'Please enter your zip code.' }
	};
	
	return CheckForm(form, fields);
}

/* THIS WAS CREATING AN ERROR IN IE */
function focusFirst() {
	document.forms[0].elements['email'].focus();
}

/*
window.onload = focusFirst; 
*/