var gField
var dispatchLookup = new Array()
dispatchLookup["isEmpty"] = new dispatcher(isEmpty)
dispatchLookup["isNotEmpty"] = new dispatcher(isNotEmpty)
dispatchLookup["isEmail"] = new dispatcher(isEmail)

function dispatcher(validationFunc) {
	this.doValidate = validationFunc
}

// general purpose function to see if an input value has been entered at all
function isEmpty() {
	var inputStr = gField.value
	if (inputStr == null || inputStr == "") { return true}
	return false
}

function isNotEmpty() {
	var inputStr = gField.value
	if (inputStr == null || inputStr == "") { return false}
	return true
}
 
function isEmail (){ /* Validate E-Mail */
	var emailexp = /^[a-z][\-a-z_0-9\.]+@[\-a-z_0-9\.]+\.[a-z]{2,4}$/i	
	var inputStr = gField.value
	return emailexp.test(inputStr)
}

// main validation function called by form event handlers
function validate(field, method) {
	gField = eval("document.forms[0]." + field.name)
	var args = validate.arguments
	for (i =1; i < args.length; i++) {
		if (!dispatchLookup[args[i]].doValidate()) {
			return false
		}
	}
	return true
}

function checkForm(form) {
	var i;
	var c;
	if (validate(form.name, "isEmpty")) {
		alert("Please enter your name.")
		gField.focus()
		gField.select()
		return false
	}

	if (validate(form.tel, "isEmpty") && validate(form.email, "isEmpty") )  {
		alert("Please enter your email address or telephone number.")
		form.email.focus()
		form.email.select()
		return false
	}

	if ( validate(form.email, "isNotEmpty")) {
		if (!validate(form.email, "isEmail")) {
			alert("Please enter a valid E-Mail address.")
			gField.focus()
			gField.select()
			return false
		}
	}
	return true
}
