////////////////////////////////////////////////////////// 
//This file is exclusively used for exam internet submission form fields validation.
// It follows W3C standards and compatible with IE 6 or above, netscape 8 or above, Mozilla Firefox 1.5 or above.


function echeck(str) {

		var at="@" ;
		var dot="." ;
		var lat=str.indexOf(at) ;
		var lstr=str.length ;
		var ldot=str.indexOf(dot) ;
		var specharArr = new Array();
		specharArr[0] = "`";
		specharArr[1] = "~";
		specharArr[2] = "!";
		specharArr[3] = "@";
		specharArr[4] = "#";
		specharArr[5] = "%";
		specharArr[6] = "^";
		specharArr[7] = "&";
    		specharArr[8] = "*";
		specharArr[9] = "(";
		specharArr[10] = ")";
		specharArr[11] = "-";
		specharArr[12] = "_";
		specharArr[13] = "+";
		specharArr[14] = "=";
		specharArr[15] = "{";
		specharArr[16] = "}";
		specharArr[17] = "[";
		specharArr[18] = "]";
		specharArr[19] = "|";
		specharArr[20] = "\\";
		specharArr[21] = ":";
		specharArr[22] = ";";
		specharArr[23] = "\"";
		specharArr[24] = "\'";
		specharArr[25] = "<";
		specharArr[26] = ">";
		specharArr[27] = ",";
		specharArr[28] = ".";
		specharArr[29] = "?";
		specharArr[30] = "/";
		specharArr[31] = "$";
				
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail. Please re-enter."); 
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail. Please re-enter."); 
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail. Please re-enter."); 
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail. Please re-enter."); 
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail. Please re-enter."); 
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail. Please re-enter."); 
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail. Please re-enter."); 
		    return false;
		 }
		 
	
		for(var i=0; i<32; i++) {
			
			if ( str.charAt(lstr-1) == specharArr[i] ) {
			    alert("Your domain name doesn't appear to be valid. Please verify your input and try again.");
				return false;
				break;				
			}		
		}

 		 return true;					
	}
  


  
// confirm Required fields in Enrollment form before students submit.  

function zipcheck(zipcode) {
	
	var ziplen = zipcode.length;
			
	if (ziplen == 5) {
		
		if (zipcode.search(/^\d{5}$/) == -1 ) {	 return false; }
		
	}
	
	if (ziplen == 10) {
	   var parts = zipcode.split("-");
	   if ( (parts[0].search(/^\d{5}$/) == -1)  || (parts[1].search(/^\d{4}$/) == -1) ) { return false; }
	}
	
	if (ziplen != 5 && ziplen != 10)
		{ return false; }
	
	return true;
	
}



function nameValid(tmpname) {
	 
	 var tmpnamelen = tmpname.length;
	 var typoArr = new Array();
		typoArr[0] = "`";
		typoArr[1] = "~";
		typoArr[2] = "!";
		typoArr[3] = "@";
		typoArr[4] = "#";
		typoArr[5] = "%";
		typoArr[6] = "^";
		typoArr[7] = "&";
		typoArr[8] = "*";
		typoArr[9] = "(";
		typoArr[10] = ")";
		typoArr[11] = "-";
		typoArr[12] = "_";
		typoArr[13] = "+";
		typoArr[14] = "=";
		typoArr[15] = "{";
		typoArr[16] = "}";
		typoArr[17] = "[";
		typoArr[18] = "]";
		typoArr[19] = "|";
		typoArr[20] = "\\";
		typoArr[21] = ":";
		typoArr[22] = ";";
		typoArr[23] = "\"";
		typoArr[24] = "\'";
		typoArr[25] = "<";
		typoArr[26] = ">";
		typoArr[27] = ",";
		typoArr[28] = ".";
		typoArr[29] = "?";
		typoArr[30] = "/";
		typoArr[31] = "$";
	 
	 if (tmpnamelen == 1) {
		alert("Initials shouldn't be used on this form in your LAST name and First name. Please enter your full name.");
		return false;
	 }
	 
	 for (var j=0; j<32; j++) {
	    if (tmpname.charAt(tmpnamelen-1) == typoArr[j]) {
			alert("Please verify and enter your name ONLY. Do not enter any special character at the end of your entry.");
			return false;
			break;
		}
	 }
	 
   return true;	
}



function confirmDelete() {
	 if (confirm("Are you sure you want to DELETE the information you've entered?")) {
	        return true;
	}
   return false;
}




function confirmRelevantFields ( personaldataform ) {
   
	   //Checking General Information
	   if (personaldataform.SSN.value == "") {
		   alert("Please enter a password -- at least 7 characters."); 
		   personaldataform.SSN.focus();
		   return false;   
	   }
	   //Checking IS Specific Req.
	   if (personaldataform.SSN.value == "1234567" || personaldataform.SSN.value == "aaaaaaa" ) {
		   alert("Invalid password. Please re-enter."); 
		   personaldataform.SSN.value = "";
		   personaldataform.SSN.focus();
		   return false;   
	   }

	  //Checking password is entered correctly; at least 7 characters
     
	   if (personaldataform.SSN.value != "") {
		      var ssn = personaldataform.SSN.value;
		      var lenSSN = ssn.length;
	  
		      if (lenSSN < 7 ) {
		          alert("Invalid Password.  Must be at least 7 characters long.");
		          personaldataform.SSN.value = "";
		          personaldataform.SSN.focus();
		          return false;
		      }
	   } 
   

	    if (personaldataform.SSN2.value == "") {
		   alert("Please enter your password again."); 
		   personaldataform.SSN2.value = "";
		   personaldataform.SSN2.focus();
		   return false;   
	   }


	   //confirm password     
	   if (personaldataform.SSN.value != personaldataform.SSN2.value)  {  
		     alert("Error: Your passwords don't match. Please re-enter!"); 
		     personaldataform.SSN.value = "";
		     personaldataform.SSN2.value = "";
		     personaldataform.SSN.focus();  
		     return false;    
	   }
      
	   if (personaldataform.LNom.value == "")  {
		   alert("Please enter your last name."); 
		   personaldataform.LNom.focus();
		   return false;
	   }
   
	   var lnom = personaldataform.LNom.value;
	   if (nameValid(lnom) == false) {
		   personaldataform.LNom.focus();	   
		   return false;   
	   }
   
	   if (personaldataform.FNom.value == "")  {
		   alert("Please enter your first name."); 
		   personaldataform.FNom.focus();
		   return false;   
	   }
   
	   var fnom = personaldataform.FNom.value;
   
	   if (nameValid(fnom) == false) {
		   personaldataform.FNom.focus();	   
		   return false;			 
	   }
    
	   //checking shipping address   
	   if (personaldataform.Add1.value == "") {
		   alert("Please fill in your shipping address completely before you submit the exam."); 
		   personaldataform.Add1.focus();
		   return false;
	   }
   
	   if (personaldataform.City.value == "") {
		   alert("Please fill in your city before you submit the exam."); 
		   personaldataform.City.focus();
		   return false;
	   }
   
	   if (personaldataform.St.value == "") {
		   alert("Please fill in your state before you submit the exam."); 
		   personaldataform.St.focus();
		   return false;
	   }
   
	   if (personaldataform.Zip.value == "") {
		   alert("Please fill in your zip code before you submit the exam."); 
		   personaldataform.Zip.focus();
		   return false;
	   }
  
	  var zipcode;
	  zipcode = personaldataform.Zip.value;
	  if (zipcheck(zipcode) == false)  {  
		   alert("Please fill in your zip code correctly.");
		   personaldataform.zip.value = "";
		   personaldataform.Zip.focus(); 
	  	   return false;
	  }
	  
     //checking email 
   
    
	   if (personaldataform.EMail.value == "") {
		   alert("Please enter your email address. It is needed for your final exam confirmation."); 
		   personaldataform.EMail.focus();
		   return false;   
	   }   
	  
	   var emailID=personaldataform.EMail;
	
	if (emailID.value.toLowerCase() == "independent.study@dhs.gov") {
	    alert("Please enter YOUR valid email address.");
		emailID.value="";
		emailID.focus();
		return false;
	}
	
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please enter your email"); 
		emailID.focus();
		return false;
	}
	if (echeck(emailID.value)==false){
		emailID.value="";
		emailID.focus();
		return false;
	} 
     
	    if (personaldataform.EMail2.value == "") {
		   alert("Please confirm your email address."); 
		   personaldataform.EMail2.focus();
		   return false;   
	   } 

	   if (personaldataform.EMail.value != personaldataform.EMail2.value)   {    
		    alert("Error: Your email addresses don't match. Please re-enter!"); 
		    personaldataform.EMail.value = "";
		    personaldataform.EMail2.value = "";
		    personaldataform.EMail.focus(); 
		    return false;  
	   }
      

	   var wp1;
	   var wp2;
	   var wp3;
	   wp1 = personaldataform.WPhn1.value; 
	   wp2 = personaldataform.WPhn2.value;
	   wp3 = personaldataform.WPhn3.value; 
	   var wp;
	   wp = wp1 + wp2 + wp3;
	   if ( wp != "" ) {
		   if ( (wp1.search(/^[1-9]\d{2}$/) == -1) || (wp2.search(/^\d{3}$/) == -1) || (wp3.search(/^\d{4}$/) == -1) ) { 
		        alert("Please fill in your phone number correctly.");
		        personaldataform.WPhn1.value = "";
			personaldataform.WPhn2.value = "";
			personaldataform.WPhn3.value = "";
			personaldataform.WPhn1.focus();
			return false;
		   }
	   }

	   personaldataform.navigation.type.value = "submit";
	   personaldataform.navigation.value = " Processing Information Now! ";
	   personaldataform.navigation.focus();
	   personaldataform.navigation.onSubmit.value = true;
	   return true; 
}



function checkFormInfo ( personaldataform ) {
   
	   //Checking General Information
	   if (personaldataform.course.value == "0") {
		   alert("Please select your course.");
		   personaldataform.course.focus();
		   return false;
	   }

	   if (personaldataform.tdate.value == "") {
		   alert("Please select your course start date.");
		   personaldataform.tdate.focus();
		   return false;
	   }

	   if (personaldataform.lnom.value == "")  {
		   alert("Please enter your last name."); 
		   personaldataform.lnom.focus();
		   return false;
	   }
   
	   var lnom = personaldataform.lnom.value;
	   if (nameValid(lnom) == false) {
		   personaldataform.lnom.focus();	   
		   return false;   
	   }
   
	   if (personaldataform.fnom.value == "")  {
		   alert("Please enter your first name."); 
		   personaldataform.fnom.focus();
		   return false;   
	   }
   
	   var fnom = personaldataform.fnom.value;
   
	   if (nameValid(fnom) == false) {
		   personaldataform.fnom.focus();	   
		   return false;			 
	   }
    

	   if (personaldataform.SSN.value == "") {
		   alert("Please enter a social security number."); 
		   personaldataform.SSN.focus();
		   return false;   
	   }
	   //Checking IS Specific Req.
	   if (personaldataform.SSN.value == "123456789" || personaldataform.SSN.value == "123-45-6789" ) {
		   alert("Invalid social security number. Please re-enter."); 
		   personaldataform.SSN.value = "";
		   personaldataform.SSN.focus();
		   return false;   
	   }

	  //Checking SSN is entered correctly;
     
	   if (personaldataform.SSN.value != "") {
		      var ssn = personaldataform.SSN.value;
		      var lenSSN = ssn.length;
	  
		      var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
		      var numDashes = ssn.split('-').length - 1;
  
                      if (matchArr == null || numDashes == 1) {
		          alert("Invalid SSN. Must be in the format of NNN-NN-NNNN.");
		          personaldataform.SSN.value = "";
			  personaldataform.SSN.focus();
			  return false;
		      }
     
		  if (ssn == "000-00-0000" || ssn== "000000000") {
			 alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
	          }
	 
		 if (ssn == "111-11-1111" || ssn== "111111111") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "222-22-2222" || ssn== "222222222") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }	
		  if (ssn == "333-33-3333" || ssn== "333333333") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "444-44-4444" || ssn== "444444444") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "555-55-5555" || ssn== "555555555") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "666-66-6666" || ssn== "666666666") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "777-77-7777" || ssn== "777777777") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "888-88-8888" || ssn== "888888888") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		    }
		  if (ssn == "999-99-9999" || ssn== "999999999") {
		     alert("Invalid SSN. Please enter a valid SSN.");
			 personaldataform.SSN.value = "";
			 personaldataform.SSN.focus();
			 return false;
		      }
	   } 
   

     //checking email 
    
	   if (personaldataform.EMail.value == "") {
		   alert("Please enter your email address. It is needed for your final exam confirmation."); 
		   personaldataform.EMail.focus();
		   return false;   
	   }   
	  
	   var emailID=personaldataform.EMail;
	
	if (emailID.value.toLowerCase() == "independent.study@dhs.gov") {
	    alert("Please enter YOUR valid email address.");
		emailID.value="";
		emailID.focus();
		return false;
	}
	
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please enter your email"); 
		emailID.focus();
		return false;
	}
	if (echeck(emailID.value)==false){
		emailID.value="";
		emailID.focus();
		return false;
	} 
     
      
      
	   //checking shipping address   
	   if (personaldataform.addr.value == "") {
		   alert("Please fill in your shipping address completely before submitting."); 
		   personaldataform.addr.focus();
		   return false;
	   }
   
	   if (personaldataform.city.value == "") {
		   alert("Please fill in your city before submitting."); 
		   personaldataform.city.focus();
		   return false;
	   }
   
	   if (personaldataform.zip.value == "") {
		   alert("Please fill in your zip code before submitting."); 
		   personaldataform.zip.focus();
		   return false;
	   }
  
	  var zipcode;
	  zipcode = personaldataform.zip.value;
	  if (zipcheck(zipcode) == false)  {  
		   alert("Please fill in your zip code correctly.");
		   personaldataform.zip.value = "";
		   personaldataform.zip.focus(); 
	  	   return false;
	  }
	  

	   if ( personaldataform.phone.value != "" ) {
		   var ph = personaldataform.phone.value;
		   var phonelen = ph.length;
		
		   if ( phonelen == 12 ) {
			   var parts = ph.split("-");
			   if ( (parts[0].search(/^[1-9]\d{2}$/) == -1) || (parts[1].search(/^\d{3}$/) == -1) || (parts[2].search(/^\d{4}$/) == -1) ) { 
			        alert("Please fill in your phone number correctly.");
			        personaldataform.phone.value = "";
				personaldataform.phone.focus();
				return false;
			   }
		   }  else  {
		        alert("Please fill in your phone number correctly.");
		        personaldataform.phone.value = "";
			personaldataform.phone.focus();
			 return false;
		   }
	   }

	   personaldataform.navigation.type.value = "submit";
	   personaldataform.navigation.value = " Processing Information Now! ";
	   personaldataform.navigation.focus();
	   personaldataform.navigation.onSubmit.value = true;

	   return true; 
}




function ValidateCUItem(item, name, validate_mail)
{
  if (document.ContactUs.elements[item]) {
    if (document.ContactUs.elements[item].value.length < 1)
    {  alert("You must enter a value for " + name);
      document.ContactUs.elements[item].focus();
      return false;
    }
    if (validate_mail)
    {
      var emailFilter=/^.+@.+\..{2,3}$/;
      var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/;
      var strng = document.ContactUs.elements[item].value;
      if (!(emailFilter.test(strng)))
      { alert("You have entered an invalid email address.");
        document.ContactUs.elements[item].focus();
        return false;
      }
      if (strng.match(illegalChars))
      { alert("Your email address contains invalid characters.");
        document.ContactUs.elements[item].focus();
        return false;
      }
    }
  }
  return true;
}


function ValidateCUForm()
{
    if (!ValidateCUItem("Request_Name", "Name", false)) return false;
    if (!ValidateCUItem("Request_Email", "Email Address", true)) return false;
    return true;
}

  