var BGOK = "#ffffff";
var BGERR = "#fff0f0";

function checkEmpty(inputobj, inputname, minlength)
{
	var minlen = 1;
	if (minlength && minlength > minlen)
		minlen = minlength;

	if (inputobj.value.length < minlen) {
		inputobj.style.backgroundColor = BGERR;
		inputobj.onfocus = function() { this.style.backgroundColor = BGOK; }
		if (minlen == 1)
			return "- " + inputname + " is empty.\n";
		else
			return "- " + inputname + " is too short (use " + minlen + " or more characters).\n";
	}

	inputobj.style.backgroundColor = BGOK;
	return "";
}

function checkEmail(inputobj)
{
	var inputname = "PdC Public Email";
	var emp = checkEmpty(inputobj, inputname);

	if (emp.length)
		return emp;

	var re = /^[a-z0-9][a-z0-9_.+-]*@[a-z0-9.-]{2,}\.[a-z]{2,4}$/i;
	if (!inputobj.value.match(re)) {
		inputobj.style.backgroundColor = BGERR;
		inputobj.onfocus = function() { this.style.backgroundColor = BGOK; }
		return "- " + inputname + " is not a valid email address.\n";
	}

	return "";
}

function checkIsChecked(checkboxobj, checkboxname)
{
	if (checkboxobj.checked) {
		checkboxobj.style.backgroundColor = BGOK;
		return "";
	} else {
		checkboxobj.style.backgroundColor = BGERR;
		return "- " + checkboxname + " not checked.\n";
	}
}

function checkOneChecked(radioobj, radioname, selectedindex)
{
	var i, chk = false;
	for (i = 0; i < radioobj.length; ++i)
		if (radioobj[i].checked) {
			chk = true;
			if (selectedindex)
				selectedindex.value = i;
		}

	if (chk) {
		for (i = 0; i < radioobj.length; ++i)
			radioobj[i].style.backgroundColor = BGOK;
	} else {
		for (i = 0; i < radioobj.length; ++i)
			radioobj[i].style.backgroundColor = BGERR;
		if (selectedindex)
			selectedindex.value = -1;
		return "- Geen keuze gemaakt bij " + radioname + ".\n";
	}

	return "";
}

function checkSelected(selectobj, selectname)
{
	var sel = false;
	if (selectobj.selectedIndex > 0
		|| selectobj.options[selectobj.selectedIndex].value > 0
		|| selectobj.options[selectobj.selectedIndex].value.length)
		sel = true;

	if (!sel) {
		selectobj.style.backgroundColor = BGERR;
		selectobj.onfocus = function() { this.style.backgroundColor = BGOK; }
		return "- " + selectname + " not selected.\n";
	}

	selectobj.style.backgroundColor = BGOK;
	return "";
}

function checkForm(formobj)
{
	var err = "", msg = "";

	if (formobj.name == "frmlogin") {

		err += checkEmpty(formobj.username, "Username");
		err += checkEmpty(formobj.password, "Password");

	} else if (formobj.name == "frmlost") {

		err += checkEmpty(formobj.pdcusername, "Username or Email");

	} else if (formobj.name == "frmsignup") {

		err += checkEmpty(formobj.pdcusername, "PdC Username");
		err += checkEmail(formobj.pdcemail);
		err += checkEmpty(formobj.teamname, "VDS Team Name", 3);

	} else if (formobj.name == "frmchangename") {

		err += checkEmpty(formobj.teamname, "Team Name", 3);

	} else if (formobj.name == "frmsaveteam") {

		err += checkEmpty(formobj.teamname, "Team Name", 3);

	} else
		msg += "Internal error: unknown form.\n";

	if (err.length) {

		window.alert("Not all form fields are correct:\n" + err);
		return false;
	}

	if (msg.length)
		window.alert(msg);

	return true;
}
