// human check
var Clicked = 0;

// helps to validate e-mails and blank strings
var domreg = new RegExp("^[a-z0-9_-]+$","i");
var blnkreg = new RegExp("[^ 	]","i");
var phonereg = new RegExp("^[0-9-+(). ]+$","i");
var extreg = new RegExp("^[0-9]+$","i");
var hasnumreg = new RegExp("[0-9]+","i");
var has3numreg = new RegExp("[0-9]{3,}","i");

function CL()
{
	Clicked--;
}

function submitBlankform()
{
	// create the form
	var frm = document.createElement('form');

	// set the action for the form
	frm.setAttribute('action',arguments[0]);
	frm.setAttribute('method','post');

	// set any elements
	var i = arguments.length;
	var j = 1;
	var fld;
	var nam,val;

	while (j<i)
	{
		// grab bits
		nam = arguments[j++];
		val = arguments[j++];

		// create an element
		fld = document.createElement('input');

		// set the data
		fld.setAttribute('type','hidden');
		fld.setAttribute('name',nam);
		fld.setAttribute('value',val);

		// add the field to the form
		frm.appendChild(fld);
	}

	// add the form to the page
	document.getElementById('blankformhere').appendChild(frm);

	// submit the form
	frm.submit();
}

function badFieldInput(ctl,msg)
{
	alert(msg);
	ctl.focus();
	return true;
}

function noBlankAllowed(ctl,fld)
{
	// check for non-blank
	if ((ctl.value == '')||(ctl.value.match(blnkreg)==null))
	{
		alert('Please enter '+fld);
		ctl.value = '';
		ctl.focus();

		// not good
		return true;
	}

	// okay
	return false;
}

function noNonSelectAllowed(ctl,fld)
{
	// check for non-blank
	if ((ctl.value == '')||(ctl.value.match(blnkreg)==null))
	{
		alert('Please select '+fld);
		ctl.value = '';
		ctl.focus();

		// not good
		return true;
	}

	// okay
	return false;
}

function validatePhone(ctl)
{
	// if the field is empty, that is okay
	if ((ctl.value == '')||(ctl.value.match(blnkreg)==null)) return false;

	// check for good format
	if (ctl.value.match(phonereg)==null) return badFieldInput(ctl,"Bad phone number content.");

	// make sure there are numbers in it
	if (ctl.value.match(has3numreg)==null) return badFieldInput(ctl,"Bad phone number content.");

	// okay
	return false;
}

function validatePhoneExtension(ctl)
{
	// if the field is empty, that is okay
	if ((ctl.value == '')||(ctl.value.match(blnkreg)==null)) return false;

	// make sure there are numbers in it
	if (ctl.value.match(hasnumreg)==null) return badFieldInput(ctl,"No numbers in extension.");

	// okay
	return false;
}

function validateEmail(ctl)
{
	// grab the email thing
	var id=ctl.value;

	// get the '@' location(s)
	var firstat=id.indexOf('@');
	var lastat=id.lastIndexOf('@');

	// check the '@' location(s)
	if (firstat<1) return badFieldInput(ctl,"Bad Email format.\nMissing '@'.");
	if (lastat!=firstat) return badFieldInput(ctl,"Bad Email format.\nToo many '@'s");

	// grab the two bits to check
	var base = id.substr(0,firstat);
	var dom = id.substr((firstat+1),(id.length-1));

	// make sure domain is non-blank
	if (dom=='') return badFieldInput(ctl,"Bad Email format.\nMissing domain.");

	// look for valid domain format
	var bits = dom.split('.');

	// get count of bits and make sure they are not blanks
	var c = bits.length;
	var lst = c - 1;
	var x = '';
	for (var i=0;i<c;i++)
	{
		// get the string
		x = bits[i];

		// blank not allowed
		if (x.length == 0) return badFieldInput(ctl,"Bad Email format.\nDomain has wrong number of parts.");

		// check to see if contains valid stuff
		if (x.match(domreg)==null) return badFieldInput(ctl,"Bad Email format.\nDomain part has bad characters.");

		// check the length, if not the first element
		if ((i==lst)&&((x.length<2)||(x.length>4))) return badFieldInput(ctl,"Bad Email format.\nDomain part has incorrect character count.\nPart is '"+x+"'");
	}

	// check for bad part count
	if ((c<2)||(c>5)) return badFieldInput(ctl,"Bad Email format.\nDomain has wrong number of parts.");

	// check the base
	bits = base.split('.');
	c = bits.length;

	for (var i=0;i<c;i++)
	{
		// get the string
		x = bits[i];

		// blank not allowed
		if (x.length == 0) return badFieldInput(ctl,"Bad Email format.\nBase has blank part.");

		// check to see if contains valid stuff
		if (x.match(domreg)==null) return badFieldInput(ctl,"Bad Email format.\nBase part has bad characters.");
	}

	// okay
	return false;
}

// support function for serious debugging
function listObjectAttributes(objnam,obj)
{
	var txt = "";
	for (var att in obj)
	{
		txt = txt + objnam + ":" + att + "='" + obj[att] + "'\n";
		if (txt.length > 756)
		{
			alert(txt);
			txt = "";
		}
	}
	if (txt != "") alert(txt);
}
