///////////////////////// VALIDATE CONTACT FORM
function validate(formObj)
{	var error = false;
	var errMsg = "";
	var firstError = "";
	var iCounter;
	
	errMsg = "_________________________________________________\n\n";
	errMsg+= "     The form was not submitted because of\n";
	errMsg+= "     the following problem(s):\n";
	errMsg+= "_________________________________________________\n\n";
	
	// Check for blank fields
	if (arrFields.length == arrDisplay.length)
	{	for (iCounter = 0; iCounter <= arrFields.length-1; iCounter++)
		{	if (formObj [arrFields[iCounter]].value == "")
			{	if (error)	{	errMsg += "\n"; }
				error = true;		                               
				errMsg += "\t- "+ arrDisplay[iCounter] + " is blank";
				formObj [arrFields[iCounter]].focus();				
			}
		}
	}
	else
	{	error = true;
	    errMsg = "Validation configuration error!\n\nField names array and Field formal\nnames array are not the same length."; 
	}
	
	// Verify email syntax
	if (EmailField !="")
	{	if (!error)
		{	if (formObj [EmailField].value != "")
			{	if	(!validateEmail(formObj [EmailField].value))
				{	error = true; 
					errMsg += "\t- "+ formObj[EmailField].value + " is not a valid email address";
					formObj [EmailField].focus();
		        }
			}  
		} 
	}
	
	if (error)
	{	alert(errMsg);
	    return false;
	}
	return true;
	
}
///////////////////////// VALIDATE EMAIL ADDRESS
function validateEmail(inString)
{ 
	// get the index of the 1st @
	At = inString.indexOf("@");
	if(At <= 0)
	  { return false; }
	  
	// check char before @
	currentChar = inString.charAt(At-1);
	if((currentChar > "Z" && currentChar < "a") || 
	   (currentChar > "9" && currentChar < "A") || 
	   (currentChar < "0") || (currentChar > "z")
	   ){ return false; }
	
	// check char after @  
	currentChar = inString.charAt(At+1);
	if((currentChar > "Z" && currentChar < "a") || 
	   (currentChar > "9" && currentChar < "A") || 
	   (currentChar < "0") || (currentChar > "z")
	  ){ return false; }
	
	
	// check user name
	username = inString.substr(0, At);
	
	// dot can't be 1st char
	if(username.indexOf(".") == 0) 
	  { return false; }
	
	for(i=0; i < username.length; i++)
	  {
	    currentChar = username.charAt(i);
	    if((currentChar > "Z" && currentChar < "_") || 
		   (currentChar > "9" && currentChar < "A") ||
		   (currentChar < "-" || currentChar > "z") ||
		   (currentChar == "`" || currentChar == "/")
		   )
	      { return false; }
	
	    // dots can't be together
	    if(i + 1 <= username.length && currentChar == ".")
		  { 
	        if(username.charAt(i+1) == ".")
			  { return false; }
		  }	
	  }
	
	// check domain name
	domainname = inString.substr(At + 1);
	
	// domain extension must have 2 or 3 chars
	if((domainname.length - (domainname.lastIndexOf(".") + 1)) < 2 || 
	   (domainname.length-(domainname.lastIndexOf(".") + 1)) > 3) 
	   { return false; }
	
	for(i=0; i < domainname.length; i++)
	  {
	    currentChar = domainname.charAt(i);
	    if((currentChar > "Z" && currentChar < "a") || 
		   (currentChar > "9" && currentChar < "A") ||
		   (currentChar < "-" || currentChar > "z") ||
		   (currentChar == "/")
		   )
	      { return false; }
	
	    // dots can't be together
	    if(i + 1 <= domainname.length && currentChar == ".")
		  { 
	        if(domainname.charAt(i+1) == ".")
			  { return false; }
		  }	
	  }
	
	return true;
}
