var nbsp = 160;		
var node_text = 3;	
var emptyString = /^\s*$/ ;
var global_valfield;	


function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(valfield)
{
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}

function msg(fld,     
             msgtype, 
             message) 
{
 
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;  
  
  
}


var proceed = 2;  

function commonCheck    (valfield,   
                         infofield,  
                         required,	 
						 message)    
{
  if (!document.getElementById) 
    return true;  
  var elem = document.getElementById(infofield);
  if (!elem.firstChild) return true; 
  if (elem.firstChild.nodeType != node_text) return true; 

  if (emptyString.test(valfield.value)) {
    if (required) {
      msg (infofield, "error", message);  
      setfocus(valfield);
      return false;
    }
    else {
      msg (infofield, "warn", "");   // OK
      return true;  
    }
  }
  return proceed;
}

function validateFirstName(valfield,  
                         infofield) 
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your first name");
  if (stat != proceed) {
	return stat;
	}
  else {
	msg (infofield, "warn", "");
	return true;
	}
}

function validateLastName(valfield, 
                         infofield) 
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your last name");
  if (stat != proceed) {
	return stat;
	}
  else {
	msg (infofield, "warn", "");
	return true;
	}
}

function validateAddress(valfield,  
                         infofield) 
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your address");
  if (stat != proceed) {
	return stat;
	}
  else {
	msg (infofield, "warn", "");
	return true;
	}
}

function validateCity(valfield,   
                      infofield) 
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your city");
  if (stat != proceed) {
	return stat;
	}
  else {
	msg (infofield, "warn", "");
	return true;
	}
}

function validateSelected(valfield,  
                         infofield) 
{
    
  
  if (valfield.selectedIndex == 0) {
	msg (infofield, "error", "Please tell us your state");  
	return false;	
	}
  else {
	msg (infofield, "warn", "");  
	return true;	
	}
	
}


function validateEmail  (valfield,   
                         infofield)   
{
  var stat = commonCheck (valfield, infofield, false, "Please tell us your email address");
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value); 
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
  if (!email.test(tfld)) {
    msg (infofield, "error", "This email is not valid");
    setfocus(valfield);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;
  if (!email2.test(tfld)) 
    msg (infofield, "warn", "");
  else
    msg (infofield, "warn", "");
  return true;
}

function validateZip (valfield,
					  infofield)
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your zip code");
  if (stat != proceed) return stat;
  
  var tfld = trim(valfield.value);
  var zipnr = /^\d{5}$/  ;
  if (!zipnr.test(tfld)) {
    msg (infofield, "error", "Not a valid 5-digit zip code");
    setfocus(valfield);
    return false;
  }
  else {
	msg (infofield, "warn", "");
	return true;
  }
}


function validatePhone  (valfield,   
                         infofield)  
{
  var stat = commonCheck (valfield, infofield, true, "Please tell us your phone #");
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value); 
  var telnr = /^\(?\d{3}\)?[-\s\.]?\d{3}[-\s\.]?\d{4}$/  ;
  if (!telnr.test(tfld)) {
    msg (infofield, "error", "Not a valid phone number");
    setfocus(valfield);
    return false;
  }
  else {
	msg (infofield, "warn", "");
	return true;
	}

}

function validateCompliance(valfield,  
                         infofield) 
{
    
  
  if (valfield.value == 0) {
	msg (infofield, "error", "Do you want to be contacted?");  
	return false;	
	}
  else {
	msg (infofield, "warn", "");  
	return true;	
	}
	
}

function validateOnSubmit() {
    			var elem;
    			var errs=0;
				if (!validateCompliance(document.forms.frmRequest.Compliance, 'warn_Compliance')) errs += 1; 
				if (errs>=1)  alert('You indicated you do not want to be contacted. If you do wish to be contacted please go back and change the form to yes.'); 
				if (!validateEmail(document.forms.frmRequest.Email, 'warn_Email')) errs += 1; 
				if (!validatePhone(document.forms.frmRequest.Phone, 'warn_Phone')) errs += 1; 
				if (!validateZip(document.forms.frmRequest.Zipcode, 'warn_Zip')) errs += 1; 
				if (!validateSelected(document.forms.frmRequest.State, 'warn_State')) errs += 1; 
				if (!validateCity(document.forms.frmRequest.City, 'warn_City')) errs += 1; 
				if (!validateAddress(document.forms.frmRequest.Address, 'warn_Address')) errs += 1; 
				if (!validateLastName(document.forms.frmRequest.LastName, 'warn_LastName')) errs += 1; 
				if (!validateFirstName(document.forms.frmRequest.FirstName, 'warn_FirstName')) errs += 1; 
				if (errs>=1)  alert('Please correct the errors on the form');    
				return (errs==0);
  			};
