var formElements = new Array;

function formCheck()
{
	var el = document.form.submit;
	if (!el) return;
	el.disabled = "disabled";
	for (i=0; i<formElements.length; i++)
	{
		if (!formElements[i]()) return;
	}
	el.disabled="";
}

function isEmpty( field )
{
	var el=document.form[field];
	if (!el) return false;
	if (0 == el.value.length) return false;
	return true;
}

function isEmail( field )
{
	var el=document.form[field];
	if (!el) return false;
	if (el.value.length < 3) return false;
	
	// by Sandeep V. Tamhankar (stamhankar@hotmail.com)
	var emailStr = el.value;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	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) return false;
	var user=matchArray[1];
	var domain=matchArray[2];

	// See if "user" is valid 
	if (user.match(userPat)==null) return false;

	/* 	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) return false;
	    }
    	return true;
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat);
	if (domainArray==null) return false;
	/* domain name seems valid, but now make sure that it ends in a
	   three or four 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>4) return false;
	return true;
}

function trimAll(sString)
{
	while (sString.substring(0,1) == ' ')
		sString = sString.substring(1, sString.length);
	while (sString.substring(sString.length-1, sString.length) == ' ')
		sString = sString.substring(0,sString.length-1);
	return sString;
}

function checkFieldNoEmpty( field, message )
{
	if ( field.value.length == 0 )
	{
		alert( message );
		field.focus();
		return false;
	}
	return true;
}

function checkFieldSelect( field, message )
{
	if ( field.selectedIndex == 0)	
	{
		alert( message);
		field.focus();
		return false;
	}
	return true;
}

function checkFieldEmail( field )
{
	// by Sandeep V. Tamhankar (stamhankar@hotmail.com)
	var emailStr = field.value;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	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("Email address seems incorrect (check @ and .'s)");
		field.focus();
		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("The username doesn't seem to be valid.");
		field.focus();
	    return false;
	}

	/* 	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) 
			{
				alert("Destination IP address is invalid!");
				field.focus();
				return false;
		    }
	    }
    	return true;
	}

	// Domain is symbolic name
	var domainArray=domain.match(domainPat);
	if (domainArray==null) 
	{
		alert("The domain name doesn't seem to be valid.");
		field.focus();
    	return false;
	}

	/* domain name seems valid, but now make sure that it ends in a
	   three or four 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>4) 
	{
	   // the address must end in a two letter or three letter word.
	   alert("The address must end in a three or four letter domain, or two letter country.");
		field.focus();
	   return false;
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) 
	{
		alert("This address is missing a hostname!");
		field.focus();
		return false;
	}
	return true;
}
