/** **********************************************************************************************************************
 * Check the E-mail form before sending it off.
 *
 * They have to supply a syntactically valid e-mail address. We can't check it actually works though.
 */
function checkInquiryForm(form) { //////////////////////////////////////////////////////////////////////////////////////// checkInquiryForm()
															//
    if (form.eMail.value.length > 0) {											// If have an e-mail
	if (emailCheck(form) == false) {										// And if it doesn't check out
	    return false;												// Don't submit
	    }														//
	}														//
    else {														// Else
	alert('Please supply an e-mail address.');									// Have to have an e-mail address
	return false;													// Don't submit
	}														//
															//
    var txt = ""; 													// Debug text
    var len = 0;													// Length of text/textarea contents
    for (var i = 0; i < form.elements.length; i++) {									// For each element on the form
	if (form.elements[i].type.indexOf("text") >= 0) {								// If text / textarea field
	    len += form.elements[i].value.length;									// Add in its text length
	    }														//
	txt += form.elements[i].type + ": " +										// Debug
	       form.elements[i].name + " = " + form.elements[i].value + ", " +						//
	       form.elements[i].value.length + "\n";									//
	}														//
    //alert(txt + "\n\nLength = " + len);										// Debug
    if (len <= 0) {													// If nothing there?
	alert('Please complete at least one field!');									// Complain to visit
	return false;													// Don't submit
	}														//
															//
    return true;													// Flag OK
															//
    } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// End of checkInquiryForm()


/** **********************************************************************************************************************
 * Check the supplied parameter is a valid e-mail address.
 *
 * From: http://javascript.internet.com/forms/email-address-validation.html
 * but has been extensively edited by Adrian
 *
 */
function emailCheck(form) { ////////////////////////////////////////////////////////////////////////////////////////////// emailCheck()
															//
    var emailStr = form.eMail.value;											// Get the string
    if (emailStr == 'e-mail address') {											// If it's a prompt
    	alert('Please enter a valid e-mail address.');									//
    	return false;													// Oops
	}														//
															//
//    alert("emailCheck(" + emailStr + ")");										//
															//
    var invalidMsg = "Sorry. That e-mail address appears to be invalid.\n\n";						//
    var checkTLD = 1;													// Check for valid TLD. 1=yes, 0=no.
    var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;				//
    var emailPat = /^(.+)@(.+)$/;											//
    var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";									// Dissallowed special characters
    var validChars = "\[^\\s" + specialChars + "\]";									// Valid characters
    var quotedUser = "(\"[^\"]*\")";											//
    var ipPat = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;								// IP address pattern
    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;						// IP domain for e-mail target
    var atom = validChars + '+';											//
    var word = "(" + atom + "|" + quotedUser + ")";									//
    var userPat = new RegExp("^" + word + "(\\." + word + ")*$");							//
    var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");							//
															//
    var matchArray = emailStr.match(emailPat);										//
    if (matchArray == null) {												//
	alert(invalidMsg + '"' + emailStr + '"');									//
	return false;													//
	}														//
															//
    var user = matchArray[1];												// Get user part
    for (i = 0; i < user.length; i++) {											// Check user name
	if (user.charCodeAt(i) > 127) {											//
	    alert(invalidMsg + "Invalid characters in user name: " +							//
		'"' + user + '"');											//
	    return false;												//
	   }														//
	}														//
    if (user.match(userPat) == null) {											//
	    alert(invalidMsg + "Bad user name part: " +									//
		'"' + user + '"');											//
	return false;													//
	}														//
															//
    var domain = matchArray[2];												// Get domain part
//  alert('domain: ' + domain);												// Debug
    for (i = 0; i<domain.length; i++) {											// Check domain name
	if (domain.charCodeAt(i) > 127) {										//
	    alert(invalidMsg + "Invalid characters in domain name: " +							//
		'"' + domain + '"');											//
	    return false;												//
	   }														//
	}														//
															//
    // Adrian: Check for domain being a straight IP address (no [])							//
    var IPArray = domain.match(ipPat);											//
    if (IPArray != null) {												// If it matched plain IP
	alert(invalidMsg + 'It looks like you are trying to use an IP\n' +						// Then whinge
	    'address for the target domain.\nDid you mean: ' +								//
	    '[' + domain + ']?');											//
	form.eMail.value = user + '@[' + domain + ']';									// Fix it for them
	return false;													//
	}														//
															//
    IPArray = domain.match(ipDomainPat);										// Check for IP style domain
    if (IPArray != null) {												// If have an IP address
	for (var i = 1; i <= 4; i++) {											//
	    if (IPArray[i] > 255) {											//
		alert(invalidMsg + "Destination domain is an " +							//
		    'invalid IP address: "' + domain + '"' +								//
		    ' (' + IPArray[i] + ')');										//
		return false;												//
		}													//
	    }														//
	return true;													//
	}														//
															//
    var atomPat = new RegExp("^" + atom + "$");										// Have domain name
    var domArr = domain.split(".");											//
    var len = domArr.length;												//
    for (i = 0; i < len; i++) {												//
	if (domArr[i].search(atomPat) == -1) {										//
	    alert(invalidMsg + "Invalid domain name: " +								//
		'"' + domain + ' (' + domArr[i] + ')"');								//
	    return false;												//
	    }														//
	}														//
															//
    // Check against known TLDs												//
    if (checkTLD &&													// If doesn't check out
	    domArr[domArr.length-1].length != 2 &&									//
	    domArr[domArr.length-1].search(knownDomsPat) == -1) {							//
	alert(invalidMsg + "Unknown Top Level Domain: " +								//
		'"' + domArr[domArr.length-1] + '"');									//
	return false;													//
	}														//
															//
    if (len < 2) {													// Valid hostname preceding the domain?
	alert(invalidMsg + "Invalid hostname: " + '"' + domain + '"');							//
	return false;													//
	}														//
															//
    return true;													// Passed all the tests
															//
    } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// end of emailCheck()



