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 "- Geen " + inputname + " ingevuld.\n";
		else
			return "- Het veld '" + inputname + "' is te kort (min. " + minlen + " tekens).\n";
	}

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

function checkEmail(inputobj)
{
	var inputname = "e-mailadres";
	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 "- Ongeldig " + inputname + ".\n";
	}

	return "";
}

function checkDateNL(inputobj, inputname)
{
	var emp = checkEmpty(inputobj, inputname);

	if ( emp.length )
		return emp;

	var re = /^([0-9]{2})-([0-9]{2})-([0-9]{4})$/i;
	if ( inputobj.value.match(re) )
	{
		var nu = new Date();
		var ditjaar = nu.getFullYear();
		var d = parseInt(RegExp.$1, 10);
		var m = parseInt(RegExp.$2, 10);
		var j = parseInt(RegExp.$3, 10);
		if (  d < 1 || d > 31 || m < 1 || m > 12 || j < ditjaar - 100 || j > ditjaar - 12 )
		{
			inputobj.style.backgroundColor = BGERR;
			inputobj.onfocus = function() { this.style.backgroundColor = BGOK; }
			return "- Het veld '" + inputname + "' is geen geldige datum.\n";
		}
	}
	else
	{
		inputobj.style.backgroundColor = BGERR;
		inputobj.onfocus = function() { this.style.backgroundColor = BGOK; }
		return "- Het veld '" + inputname + "' is niet van de vorm dd-mm-jjjj.\n";
	}

	return "";
}

function checkPostcode(inputobj, inputname)
{
	if ( !inputname )
		inputname = "Postcode";
	var emp = checkEmpty(inputobj, inputname);

	if ( emp.length )
		return emp;

	var re = /^([1-9][0-9]{3}) ?([A-Z]{2})?$/i;
	if ( inputobj.value.match(re) )
	{
		if ( RegExp.$2 )
			inputobj.value = RegExp.$1 + RegExp.$2.toUpperCase();
		else
			inputobj.value = RegExp.$1;
	}
	else
	{
		inputobj.style.backgroundColor = BGERR;
		inputobj.onfocus = function() { this.style.backgroundColor = BGOK; }
		return "- De postcode is niet van de vorm '1234 AB'.\n";
	}

	return "";
}

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;
		return "- Geen " + radioname + " gekozen.\n";
	}

	return "";
}

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

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

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

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

	if ( formobj.name == "contact" )
	{
		err += checkEmpty(formobj.naam, "Naam", 3);
		err += checkEmail(formobj.email);
		err += checkEmpty(formobj.bericht, "Bericht", 10);
	}
	else
		msg += "Interne fout: onbekend formulier.\n";

	if ( err.length )
	{
		window.alert("Niet alle gegevens waren correct:\n" + err);
		return false;
	}

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

	return true;
}

