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 enter 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 enter 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 enter your address");
  if (stat != proceed) {
	return stat;
	}
  else {
	msg (infofield, "warn", "");
	return true;
	}
}

function validateCity(valfield,   
                      infofield) 
{
  var stat = commonCheck (valfield, infofield, true, "Please enter 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 enter your state");  
	return false;	
	}
  else {
	msg (infofield, "warn", "");  
	return true;	
	}

}

function validateHSCode(valfield,
                         infofield) {


    if (valfield.selectedIndex > 0) {
        msg(infofield, "error", "Please select a high school.");
        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 validateEmail(valfield,
                         infofield) 
						 {
    var stat = commonCheck(valfield, infofield, true, "Please enter 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 enter 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 enter 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 validateAltPhone(valfield,
                         infofield) {
//    var stat = commonCheck(valfield, infofield, true, "Please enter your phone #");
    //    if (stat != proceed) return stat;   
    if (document.forms.frmRequest.altPhone.value.length != 0) {
        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 validateDate(valfield,
                         infofield) {
    var stat = commonCheck(valfield, infofield, true, "Please enter expected graduation date");
    if (stat != proceed) return stat;

    var tfld = trim(valfield.value);
    var telnr = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
    if (!telnr.test(tfld)) {
        msg(infofield, "error", "Not a valid date");
        setfocus(valfield);
        return false;
    }
    else {
        msg(infofield, "warn", "");
        return true;
    }

}

function validateOnSubmit() {			
			var elem;
    			var errs=0;
				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 (document.forms.frmRequest.hsCode) { //check for existence of hsCode field
				    if (!validateHSCode(document.forms.frmRequest.hsCode, 'warn_HScode')) errs += 1;
				}
				if (document.forms.frmRequest.altPhone) { //check for existence of alt Phone field
				    if (!validateAltPhone(document.forms.frmRequest.altPhone, 'warn_AltPhone')) errs += 1;
				}
				if (errs>=1)  alert('Please correct the errors on the form');    
				return (errs==0);
  			};


