
//******************************************************************
// Validates content of fields
//******************************************************************
	function checkfield(fieldname,fieldlabel,acceptonly){
	
	var s= new String();
	
	characters = new RegExp ("[^A-Za-z .'-]","i");
	numbers = new RegExp ("[^0-9.]","i");
	numchar = new RegExp ("[^0-9-^A-Za-z .'-]","i");
	
	s = document.ContacUsForm[fieldname].value;
	result = s.search(eval(acceptonly));
	if (result != -1){
		if (acceptonly == "numchar")
		{
			msg = fieldlabel + " can only contain numbers and characters" + ".";
		}
		else if  (acceptonly == "numbers")
		{
			msg = fieldlabel + " can only contain numbers" + ".";
		}
		else
		{
			msg = fieldlabel + " can only contain characters" + ".";
		}
		
		document.ContacUsForm[fieldname].value = s.substring(0,s.length-1);
		alert(msg);
		return false;
	}
	
	}
//******************************************************************
// End of code to validates content of fields
//******************************************************************	

formsubmited = 0;

function ValidateForm(){
	var errormessage
	var flagerror
	
	errormessage = "The following error(s) have occured. \n _________________________________________________________\n"
	flagerror = 0;
	
	if (document.ContacUsForm.Name.value.length < 2)
	{
		errormessage = errormessage + "\n Please enter your complete Name.";
		flagerror = 1;
	}
	
	if (document.ContacUsForm.Email.value == "")
	{
		errormessage = errormessage + "\n Please input your email address.";
		flagerror = 1;
	} 			
	else
	{
	// Check for valid e-mail address
		
		/* The following pattern is used to check if the entered e-mail address
		   fits the user@domain format.  It also is used to separate the username
		   from the domain. */
		var emailPat=/^(.+)@(.+)$/
		/* The following string represents the pattern for matching all special
		   characters.  We don't want to allow special characters in the address. 
		   These characters include ( ) < > @ , ; : \ " . [ ] ! # $ % ^ & * = +  */
		var specialChars="\\(\\)<>@,;:{}`~'?!#$/|%^&*=+\\\\\\\"\\.\\[\\]"
		/* The following string represents the range of characters allowed in a 
		   username or domainname.  It really states which chars aren't allowed. */
		var validChars="\[^\\s" + specialChars + "\]"
		/* The following pattern represents the range of characters allowed as
		   the first character in a valid username or domain.  I just made it
		   the same as above, but if you want to add a different constraint,
		   you would change it here. */
		var firstChars=validChars
		/* The following pattern applies if the "user" is a quoted string (in
		   which case, there are no rules about which characters are allowed
		   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
		   is a legal e-mail address. */
		var quotedUser="(\"[^\"]*\")"
		/* The following pattern applies for domains that are IP addresses,
		   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
		   e-mail address. NOTE: The square brackets are required. */
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		/* The following string represents at atom (basically a series of
		   non-special characters.) */
		var atom="(" + firstChars + validChars + "*" + ")"
		/* The following string represents one word in the typical username.
		   For example, in john.doe@somewhere.com, john and doe are words.
		   Basically, a word is either an atom or quoted string. */
		var word="(" + atom + "|" + quotedUser + ")"
		// The following pattern describes the structure of the user
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		/* The following pattern describes the structure of a normal symbolic
		   domain, as opposed to ipDomainPat, shown above. */
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		
		/* Finally, let's start trying to figure out if the supplied address is
		   valid. */
		/* Begin with the course pattern to simply break up user@domain into
		   different pieces that are easy to analyze. */
		var emailadd=new String(document.ContacUsForm.Email.value);
		var matchArray=emailadd.match(emailPat)
		if (matchArray == null) {
		  /* Too many/few @'s or something; basically, this address doesn't
		     even fit the general mould of a valid e-mail address. */
			errormessage = errormessage + "\n Email address seems incorrect (check @ and .'s)";
			flagerror = 1;	
		}
		else {

			var user=matchArray[1]
			var domain=matchArray[2]
			// See if "user" is valid 
			if (user.match(userPat)==null) {
			    // user is not valid
				errormessage = errormessage + "\n The email entered doesn't seem to be valid, please enter your correct email address.";
				flagerror = 1;	
			}
			/* if the e-mail address is at an IP address (as opposed to a symbolic
			   host name) make sure the IP address is valid. */
			var IPArray=domain.match(ipDomainPat)
			if (IPArray!=null) {
			    // this is an IP address
				  for (var i=1;i<=4;i++) {
				    if (IPArray[i]>255) {
						errormessage = errormessage + "\n Destination IP address is invalid!";
						flagerror = 1;			
				    }
			    }
			    return true
			}
			// Domain is symbolic name
			var domainArray=domain.match(domainPat)
			if (domainArray==null) {
				errormessage = errormessage + "\n The email entered doesn't seem to be valid, please enter your correct email address.";
				flagerror = 1;	
			}
			/* domain name seems valid, but now make sure that it ends in a
			   three-letter word (like com, edu, gov) or a two-letter word,
			   representing country (uk, nl).
			   If there's a country code at the end of the address, the full domain
			   must include a hostname and category (e.g. host.co.uk or host.pub.nl).
			   If it ends in a .com or something, make sure there's a hostname.*/
			/* Now we need to break up the domain to get a count of how many atoms
			   it consists of. */
			var atomPat=new RegExp(atom,"g")
			var domArr=domain.match(atomPat)
			var len=domArr.length
			if (domArr[domArr.length-1].length<2 || 
			    domArr[domArr.length-1].length>3) {
			   // the address must end in a two letter or three letter word.
				errormessage = errormessage + "\n The address must end in a three-letter domain, or two letter country.";
				flagerror = 1;	
			}

			if (domArr[domArr.length-1].length==3 && len<2) {
				errormessage = errormessage + "\n This address is missing a hostname!";
				flagerror = 1;	
			}
		
		}
	}	
	
	var userphone1;
	var userphone2;
	var userphone3;
	
	userphone1 = document.ContacUsForm.NPA.value;
	userphone2 = document.ContacUsForm.NXX.value;
	userphone3 = document.ContacUsForm.Phone.value;
	
	if (userphone1.length < 3 || userphone2.length < 3 || userphone3.length < 4)
	{
		errormessage = errormessage + "\n Please enter a valid 10-digit Mobile Phone Number.";
		flagerror = 1;			
	}	

	if (document.ContacUsForm.Subject.value.length == 0)
	{
		errormessage = errormessage + "\n Please enter a Subject.";
		flagerror = 1;
	}
	
	if (document.ContacUsForm.Comment.value.length == 0)
	{
		errormessage = errormessage + "\n Please enter a Comment.";
		flagerror = 1;
	}		
				
	if (flagerror == 1)
	{
		errormessage = errormessage + "\n_________________________________________________________\n\n";
		alert(errormessage);
		return false;
	}
	else
	{
		if (formsubmited == 0){
			formsubmited = 1;
			document.ContacUsForm.submit();
			return false;
		}
		else
		{
			return false;
		}
	}			
}		