/*
 * lf_checkreview --
 *
 *	Validate a member review form.
 */

function lf_checkreview(f) {
	errs = lf_checkstart(f);
	checked = false;
	for (i = 0; i < 5; ++i) {
		if (f.stars[i].checked) {
			checked = true;
			break;
		}
	}
	if (!checked) {
		errs["stars"] = true;
	}
	return lf_checkend(f, errs);
}

/*
 * lf_checkrefer --
 *
 *	Validate refer-a-member form.
 */

function lf_checkrefer(f) {
	errs = lf_checkstart(f);
	if (!lf_checkemail(f.friend.value)) {
		errs["friend"] = true;
	}
	return lf_checkend(f, errs);
}

/*
 * lf_checkpost --
 *
 *	Validate a job post form.
 */

function lf_checkpost(f) {
	var re_phone = /^(\+?1-?)?[-\. ]?\(?\d{3}\)?[-\. ]?\d{3}[-\. ]?\d{4}$/;
	var re_phone_anywhere = /(\+?1-?)?[-\. ]?\(?\d{3}\)?[-\. ]?\d{3}[-\. ]?\d{4}/;
	var re_email = /\b(\S+@).+((\.com)|(\.net)|(\.edu)|(\.org)|(\..{2,2}))\b/gi;
	
	errs = lf_checkstart(f);
	if (f.phone && f.phone.value.length && !re_phone.test(f.phone.value)) {
		errs["phone"] = true;
	}
	if (f.category && f.category.selectedIndex == 0) {
		errs["category"] = true;
	}
	if (f.area && f.area.selectedIndex == 0) {
		errs["area"] = true;
	}
	if (f.location && !f.location.value.length) {
		errs["location"] = true;
	}
	if (f.hours && !f.hours.value.length) {
		errs["hours"] = true;
	}
	if (f.scope && !f.scope.value.length) {
		errs["scope"] = true;
	}
	if (f.summary && !f.summary.value.length) {
		errs["summary"] = true;
	}
	if (f.summary && re_phone_anywhere.test(f.summary.value)){
		errs["summary_phone"] = true;
	}
	if (f.detail && !f.detail.value.length) {
		errs["detail"] = true;
	}
	if (f.detail && re_phone_anywhere.test(f.detail.value)){
		errs["detail_phone"] = true;
	}
	if(f.detail && re_email.test(f.detail.value)){
		errs["detail_email"] = true;
	}
	return lf_checkend(f, errs);
}

/*
 * lf_checkstart --
 *
 *	Reset any previous alert background colors, initalize the
 *	error array and check email addresses.
 */

function lf_checkstart(f) {
	var errs = new Array();

	for (e in f.elements) {
		if (f.elements[e].style) {
			f.elements[e].style.background = "";
		}
		elem = lf_geterror(f.elements[e].name);
		if (elem && elem.style) {
			elem.style.display = "none";
		}
	}
	if (f.email && !lf_checkemail(f.email.value)) {
		errs["email"] = true;
	} else if (f.confirm && f.email.value != f.confirm.value) {
		errs["confirm"] = true;
	}
	return errs;
}

/*
 * lf_checkend --
 *
 * 	Check for captcha code, highlight any errors, reveal
 *	error message divs, and focus on first error field.
 */

function lf_checkend(f, errs) {
	var re_code = /^[23456789bcdfghjkmnpqrstvwxyz]{6}$/;

	if (f.code && !re_code.test(f.code.value)) {
		errs["code"] = true;
	}
	ok = true;
	focus = false;
	for(e in errs) {
		ok = false;
		msg = lf_geterror(e);
		if (msg) {
			msg.style.display = "block";
		}
		elem = f.elements.namedItem(e);
		if (elem) {
			elem.style.background = "#d0d0d0";
			if (!focus && elem.select) {
				elem.select();
				focus = true;
			}
		}
	}
	return ok;
}

/*
 * lf_checkemail --
 *
 * 	Validate an email address.
 */

function lf_checkemail(email) {
	var re_email = /^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,5}|\d+)$/i;

	return re_email.test(email);
}

/*
 * lf_loadcaptcha -
 *
 *	Reload the captcha image.
 */

function lf_loadcaptcha() {
	e = document.getElementById("code");
	if (e) {
		d = new Date();
		e.innerHTML = "<img width=120 height=40 src=captcha.php?time=" + d.getMilliseconds() + ">";
		return false;
	}
	return true;
}

/*
 * lf_geterror --
 *
 *	Return the error message div for the given field.
 */

function lf_geterror(n) {
	id = "error_" + n;
	return document.getElementById(id);
}

/*
 *
 * lf_rotate --
 *
 *	Rotate display of promo divs.
 */

function lf_rotate_start(base)
{
	start = Math.round(Math.random() * 9);
	lf_rotate(base, start, 10000);
}

function lf_rotate(base, next, wait)
{
	id = document.getElementById(base + next);
	if (id && id.style) {
		id.style.display = "none";
	}
	++next;
	id = document.getElementById(base + next);
	if (!id) {
		next = 0;
		id = document.getElementById(base + next);
	}
	if (id && id.style) {
		id.style.display = "block";
	}
	callback = "lf_rotate('" + base + "'," + next + "," + wait + ")";
	setTimeout(callback, wait);
}

var _lf_once = new Array();

function lf_clear(id) {
	if (_lf_once[id] == undefined) {
		elem = document.getElementById(id);
		if (elem && elem.value) {
			elem.value = '';
			_lf_once[id] = true;
		}
	}
}

function lf_showloc() {
	sel = document.getElementById("areas");
	idx = sel.selectedIndex;
	if (!idx) {
		display = "none";
	} else {
		display = "block";
	}
	div = document.getElementById("dloc");
	div.style.display = display;
}

function lf_hide(id) {
	lf_showhide(id,'none');
}
function lf_show(id) {
	lf_showhide(id,'block');
}
function lf_showswap(id) {
	elem = document.getElementById(id);
	if (elem && elem.style) {
		if (elem.style.display == 'block') {
			elem.style.display = 'none';
		} else {
			elem.style.display = 'block';
		}
	}
}
function lf_showhide(id,display) {
	elem = document.getElementById(id);
	if (elem && elem.style) {
		elem.style.display = display;
	}
}
function lf_showreq() {
	for(i = 1; i < 30; ++i) {
		nam = "reqs" + i;
		div = document.getElementById(nam);
		if (div && div.style) {
			div.style.display = "none";
		}
	}
	sel = document.getElementById("cats");
	nam = "reqs" + sel.options[sel.selectedIndex].value;
	div = document.getElementById(nam);
	if (div && div.style.display) {
		div.style.display = "block";
	}
}

function lf_checklead(form) {
	lf_clear('loc');
	return lf_checkpost(form);
}
