function isempty(c) {
	var empty = /^\s*$/;
	return empty.test(c.value);
}

function isemail(c) {
	var email = /^[\w.+-]+@([\w-]+\.)+\w+$/;
	return email.test(c.value);
}

function validateProfile(form) {
	var r = true;
	var e = "Please complete all required fields.";

	if (typeof(window.admin) == "undefined")
		admin = 0;

	if (isempty(form.first_name))
		r = false;
	if (isempty(form.last_name))
		r = false;
	if (isempty(form.address) && !admin)
		r = false;
	if (isempty(form.city) && !admin)
		r = false;
	if (isempty(form.state) && !admin)
		r = false;

	var zip = /^(\d{5}(-\d{4})?|[abceghjklmnprstvxy]\d[a-z]\s*\d[a-z]\d)$/i;
	if (!zip.test(form.zip_code.value) &&
		(!admin || !isempty(form.zip_code))) {
		r = false;
		e = "Please enter a valid ZIP code.";
	}

	if (form.email.value != form.confirm_email.value) {
		r = false;
		e = "Your e-mail and confirmation e-mail must match.";
	}

	if (typeof(window.oldemail) == "undefined")
		oldemail = "";

	if ((oldemail != "" && form.email.value == "") ||
	    (form.email.value != "" && !isemail(form.email))) {
		r = false;
		e = "Please enter a valid email address.";
	}

	if (!r)
		alert(e);
	return r;
}

function validateSignup(form) {
	var r = true;
	var e = "Please complete all required fields.";

	if (!validateProfile(form))
		return false;
	if (isempty(form.email))
		r = false;
	if (isempty(form.confirm_email))
		r = false;

	if (isempty(form.password))
		r = false;
	if (isempty(form.confirm_password))
		r = false;

	if (form.password.value != form.confirm_password.value) {
		r = false;
		e = "Your password and confirmation password must match.";
	}

	if (!r)
		alert(e);
	return r;
}

function validatePasswd(form) {
	var r = true;
	var e = "Please complete all fields.";

	if (isempty(form.new_password))
		r = false;

	if (form.new_password.value != form.confirm_password.value) {
		r = false;
		e = "Both new passwords must match.";
	}

	if (!r)
		alert(e);
	return r;
}

function validatePostalUpdate(form){
	var r = true;
	var e = "Please complete all required fields.";

	if (isempty(form.email) || !isemail(form.email))
	{
		r = false;
		e="Please enter a valid e-mail address.";
	}
	
	var zip = /^(\d{5}(-\d{4})?|[abceghjklmnprstvxy]\d[a-z]\s*\d[a-z]\d)$/i;
	if (!zip.test(form.zip_code.value) || isempty(form.zip_code)) {
		r = false;
		e = "Please enter a valid ZIP code.";
	}

	if (!r)
		alert(e);
	return r;
}

function getForm() {
	var r = {};
	var sub = [];
	for (var i = 0; i < document.forms[0].length; i++) {
		var e = document.forms[0][i];
		if (e.type == "checkbox") {
			if (e.name == "sub_type") {
				if (e.checked)
					sub.push(e.value)
			} else
				r[e.name] = (e.checked ? "1" : "0");
		} else if (e.type != "submit")
			r[e.name] = e.value;
	}
	r.sub_type = sub.sort().join(" ");
	return r;
}

function saveForm(reset) {
	if (reset)
		document.forms[0].reset();
	window.form = getForm();
}

function checkSaved() {
	var cur = getForm();

	for (var e in form)
		if (form[e] != cur[e])
			return "Your changes have NOT been saved.";
}

