/* validate contact form */

/* create instance of type image for onmouseover event on submitbox image */
img0 = new Image();
img0.src = "../images/verzenden_on.gif";


function initialise() {
	/* set initial focus */
	document.frmcontact.naam.focus();	
}

function checkContact() {
	if (document.frmcontact.naam.value == '') {
		alert("Vul een naam in!");
		document.frmcontact.naam.focus();
	} else if (!emailCheck(document.frmcontact.emailadres.value)) {
		document.frmcontact.emailadres.focus();
	} else if (document.frmcontact.opmerking.value == '') {
		alert("Vul een vraag of opmerking in!");
		document.frmcontact.opmerking.focus();
	} else {
		document.frmcontact.submit();
	}
}

function checkContactSubmit() {
		if (document.frmcontact.naam.value == '') {
		alert("Vul een naam in!");
		document.frmcontact.naam.focus();
		return false;
	} else if (!emailCheck(document.frmcontact.emailadres.value)) {
		document.frmcontact.emailadres.focus();
		return false;
	} else if (document.frmcontact.opmerking.value == '') {
		alert("Vul een vraag of opmerking in!");
		document.frmcontact.opmerking.focus();
		return false;
	}
	return true;
}

function emailCheck (emailStr) {
	var lMessagePrefix = 'Het emailadres is incorrect! ';
	/* Does it fit the user@domain format. Also used to separate the username from the domain. */
	var emailPat=/^(.+)@(.+)$/
	// For matching all special characters. No special characters as in ( ) < > @ , ; : \ " . [ ]    */ are allowed. 
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	/* Range of characters allowed in a username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]"
	/* 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="(\"[^\"]*\")"
	/* 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})\]$/
	/* An atom representation (basically a series of non-special characters.) */
	var atom=validChars + '+'
	/* One word in the typical username. E.g., in jos.walrave@domain.com, jos and walrave are in fact words. Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")"
	// Structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/* Structure of a normal symbolic domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	/* Is the supplied address valid? Begin with breaking up user@domain into different pieces that are easy to analyze. */
	var matchArray=emailStr.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. */
		alert("Het emailadres is incorrect. Indien ingevuld check de hoeveelheid '@'-symbolen en .'-en')")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	// See if "user" is valid 
	if (user.match(userPat)==null) {
	    // user is not valid
	    alert("Het emailadres is incorrect. Check de 'user name'!")
	    return false
	}
	/* If 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) {
		        alert(lMessagePrefix + "Het opgegeven ip-adres is niet geldig!")
			return false
		    }
	    }
	    return true
	}
	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert(lMessagePrefix + "De domeinnaam lijkt niet te kloppen.")
	    return false
	}
	/* 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), and that there's a hostname preceding the domain or country. */
	/* 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.
	   alert(lMessagePrefix + "Het adres moet op een domeinextensie van 3 letters of een landextensie van 2 letters eindigen.")
	   return false
	}
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr=lMessagePrefix + "De hostname die aan een domeinextensie voorafgaat, ontbreekt."
	   alert(errStr)
	   return false
	}
	// If we've gotten this far, everything's valid!
	return true;
}