// validates that the field value string has one or more characters in it
function isNotEmpty(elem, name) {
	var str = elem.value;
	var re = /.+/;
	if(!str.match(re)) {
		alert("Please fill in your " + name);
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	} else {
		return true;
	}
}

// validates that the entry is a positive or negative number
function isNumber(elem) {
	var str = elem.value;
	var re = /^[-]?\d*\.?\d*$/;
	str = str.toString();
	if (!str.match(re)) {
		alert("Please enter a number for the donation amount");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	}
	return true;
}

// validates that the entry is formatted as an e-mail address
function isEMailAddr(elem) {
	var str = elem.value;
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	if (!str.match(re)) {
		alert("Please verify your e-mail address");
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
	} else {
		return true;
	}
}

function focusElement(formName, elemName) {
	var elem = document.forms[formName].elements[elemName];
	elem.focus();
	elem.select();
}

function isChecked(elem1, elem2, elem3, elem4) {
	if (!elem1.checked && !elem2.checked && !elem3.checked && !elem4.checked){
		alert ("Please select at least one area");
		return false;
	} else {
		return true;
	}
}

// batch validation router
function validateForm(form) {
	if (isNotEmpty(form.donation_amount, "donation amount")) {
		if (isNumber(form.donation_amount)) {
			if (isChecked(form.recent_disaster, form.administration, form.nz_projects, form.international_projects)){
				if (isNotEmpty(form.last_name, "last name")) {
					if (isNotEmpty(form.first_name, "first name")) {
						if (isEMailAddr(form.email)) {
							return true;
						}
					}
				}
			}
		}
	}
	return false;
}