<!--

objForm = null;
isFirst = true;

/*
CLASS DECLARATIONS AND IMPLEMENTATIONS
*/

function IntegralType (min, max)
{
	this.Min = min;
	this.Max = max;
}

SQL_TINYINT  = new IntegralType (0, 255);
SQL_SMALLINT = new IntegralType (-32768, 32767);
SQL_INT      = new IntegralType (-2147483648, 2147483647);
SQL_BIGINT   = new IntegralType (-9223372036854775808, 9223372036854775807);


/*
FORM VALIDATION FUNCTIONS
*/

function ValidateForm (frm)
{
	//set the global variable
	objForm = frm;
	var out = "";

	out += CheckText       ("firstname", "First Name");
	out += CheckText       ("lastname", "Last Name");
	out += CheckEmail      ("email", "Email Address");
	out += CheckText       ("title", "Title");
	out += CheckText       ("company", "Company");
	out += CheckText       ("web", "Company Website");
	out += CheckText       ("city", "City");
	out += CheckText       ("state", "State");
	out += CheckPhoneNumber       ("phone", "Phone");

	
	if (out)
	{
		DisplayErrorWindow (out);
		return false;
	}
	return true;
}


function CheckText (fieldName, msg)
{
	return (objForm.elements[fieldName].value == "") ? msg + "\n" : "";
}



function CheckAreaCode (fieldName)
{	
	var myRegx = /^\d{3}$/;
	var myArea = objForm.elements[fieldName].value;

	if (!myArea.match (myRegx))
		return ("Area Code must be exactly 3 digits\n");
	return ("");
}


function CheckPhoneNumber (fieldName)
{
	var myRegx = /^\d{3}[\s\.-]?\d{3}[\s\.-]?\d{4}$/;
	var myPhone = objForm.elements[fieldName].value;

	if (!myPhone.match (myRegx))
		return ("Phone Number should have the pattern 800-555-1212\n");
	return ("");
}


function CheckInteger (fieldName, intType, msg)
{
	var myField = objForm.elements[fieldName];
	var myValue = myField.value;
	
	if (isNaN (myValue) || myValue == "")
		return (msg + " requires a numeric value\n");
	if (myValue > intType.Max || myValue < intType.Min)
		return (msg + " must be between " + intType.Min + " and " + intType.Max + "\n");
	
	myField.value = parseInt (myField.value);
	return ("");
}


function CheckEmail (fieldName)
{
	var emailStr = objForm.elements[fieldName].value;

	if (emailStr == "")
		return  ("Email Address\n")
		
	return CheckEmailFormat (fieldName);
}


function CheckEmailFormat (fieldName)
{
	var emailStr = objForm.elements[fieldName].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 ("Email Address seems incorrect (check @ and .'s)\n")

	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null)
		return ("Email Address username does not seem to be valid\n")

	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255)
				return ("Destination IP address is invalid\n")
		}
		return "";
	}

	var domainArray=domain.match(domainPat)
	if (domainArray==null)
		return ("Email Address domain name does not seem to be valid\n")

	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)
		return ("Email Address must end in a three-letter domain, or two letter country\n")

	if (len<2)
		return ("This address is missing a hostname\n")
	
	return "";
}



function DisplayErrorWindow (msg)
{
	alert ("The following information is required\nto submit this form:\n=======================\n" + msg);
}

//-->