// JavaScript Document

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

function checkEmpty(inputobj, inputname)
{
	if ( !inputobj.value.length )
	{
		inputobj.style.backgroundColor = BGERR;
		return "- Geen " + inputname + " ingevuld.\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;
		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;
			return "- Het veld '" + inputname + "' is geen geldige datum.\n";
		}
	}
	else
	{
		inputobj.style.backgroundColor = BGERR;
		return "- Het veld '" + inputname + "' is niet van de vorm dd-mm-jjjj.\n";
	}

	return "";
}

function checkPostcodeNL(inputobj)
{
	var inputname = "postcode";
	var emp = checkEmpty(inputobj, inputname);

	if ( emp.length )
		return emp;

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

	return "";
}

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

	if ( !chk )
	{
		return "- Geen " + radioname + " gekozen.\n";
	}

	return "";
}

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

	if ( formobj.name == "sollicitatie" )
	{
		err += checkEmpty(formobj.voorl, "voorletters");
		err += checkEmpty(formobj.naam, "achternaam");
		err += checkOneChecked(formobj.sex, "geslacht");
		err += checkDateNL(formobj.geboren, "geboortedatum");
		err += checkEmpty(formobj.straat, "straatnaam");
		err += checkEmpty(formobj.huisnr, "huisnummer");
		err += checkPostcodeNL(formobj.postcode);
		err += checkEmpty(formobj.plaats, "woonplaats");
		err += checkEmail(formobj.email);
		err += checkEmpty(formobj.telefoon, "telefoonnummer");
		err += checkEmpty(formobj.cv, "CV dokument");
	}
	else if ( formobj.name == "poll" || formobj.name.substring(0, 4) == "poll" )
	{
		err += checkOneChecked(formobj.pollaid, "optie");
	}
	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;
}

function pad(x)
{
	if ( x < 10 ) return "0" + x;
	return "" + x;
}

function writetime(txtobj, plusmonths, plusdays)
{
	var now = new Date();
	var d = new Date(
		now.getFullYear(),
		now.getMonth() + plusmonths,
		now.getDate() + plusdays,
		now.getHours(),
		now.getMinutes(),
		now.getSeconds());
	txtobj.value =
		d.getFullYear()
		+ "-" + pad(1 + d.getMonth())
		+ "-" + pad(d.getDate())
		+ " " + pad(d.getHours())
		+ ":" + pad(d.getMinutes())
		+ ":" + pad(d.getSeconds());
}

function nu(txtobj)
{
	writetime(txtobj, 0, 0);
}

function dag(txtobj)
{
	writetime(txtobj, 0, 1);
}

function week(txtobj)
{
	writetime(txtobj, 0, 7);
}

function maand(txtobj)
{
	writetime(txtobj, 1, 0);
}

