var numericcheck = '0123456789';
var checkb = 'abcdefghijklmnopqrstuvwxyz';

// file 30/5 verherbouwd door tijs@netlinq.nl

// de Functie die onSubmit door elk formulier wordt aangeroepen

// var verplicht = <'veldnaam1, veldnaam2'>;
// var numeric = 'houseNumber';
// var notnumeric = 'houseNrVisisbleInd,streetVisibleInd';
// <FORM NAME="Ojnnew1" action="Ojnnew2.html"
//       METHOD="" onSubmit="if (self.formcheck)return formcheck()">




function formcheck()
{

    // we gaan een voor een alle formuliervelden af en kijken wat er gecheckt 
    // moet worden en doen dan de check
    for (i=0;i<document.forms[0].length;i++)
    {

    // begin; laad formelement in 'box'
	box = document.forms[0].elements[i];

	// verplicht-check: is er wel iets ingevuld?
	if (self.verplicht && (verplicht.indexOf('<'+box.name+'>') != -1) && !box.value)
	{
 	    alert('U heeft niet voldoende ingevuld bij:\n\n\t- '+box.name+'.\n');
// 	    alert('U heeft niet alle verplichte informatie ingevuld.');
	    if (window.focus) box.focus();
	    return false;
	}

	// numeric-check; zijn er uitsluitend nummers gebruikt?
	if (self.numeric && (numeric.indexOf('<'+box.name+'>') != -1) && box.name && box.value.length)
	{
	    for (j=0;j<box.value.length;j++)
	    {
	        if (numericcheck.indexOf(box.value.charAt(j)) == -1)
		{
		    alert(box.name + ' U mag alleen maar getallen invullen');
		    if (window.focus) box.focus();
 		    return false;
		}
	    }
	}

	// notnumeric-check; hier mogen geen nummers gebruikt worden. 
        // Precies het omgekeerde van de voorgaande.

	if (self.notnumeric && (notnumeric.indexOf('<'+box.name+'>') != -1) && box.name)
	{
	    for (j=0;j<box.value.length;j++)
	    {
		if (numericcheck.indexOf(box.value.charAt(j)) != -1)
		{
		    alert('U mag hier geen getallen invullen');
		    if (window.focus) box.focus();
		    return false;
		}
	    }
	}

	// telefoonnummer-check; is het nummer correct 
        // geformatteerd (ggg[ -]ggggggg; g=getal)


	if (self.telnrs && box.value && (telnrs.indexOf('<'+box.name+'>') != -1) && box.name)
	{
		if ((numericcheck.indexOf(box.value.charAt(0)) == -1) || box.value.length > 11)
		{
		    alert ('Nummer incorrect.');
		    if (window.focus) box.focus();
		    return false;
		}
		teller = 0;
		for (j=0;j<box.value.length;j++)
		{
		    var tmp = box.value.charAt(j);
		    if (tmp == '-' || tmp == ' ') teller++;
		    else if (numericcheck.indexOf(tmp) == -1)
		    {
			alert ('Nummer incorrect.');
			if (window.focus) box.focus();
			return false;
		    }
		}
		if (teller > 1)
		{
		    alert ('Nummer incorrect.');
		    if (window.focus) box.focus();
		    return false;
		}
	}

        // toekomstcheck; ligt de datum in de toekomst? Datum komt uit 1 box                    // geformatteerd volgens gg-gg-gggg

	if (self.toekomstcheck && box.value && (toekomstcheck.indexOf('<'+box.name+'>') != -1) && box.name)
	{
	    var tmp = new Array;
	    tmp = box.value.split('-');
	    var dan = (Date.UTC((tmp[2]*1),(tmp[1]*1)-1,(tmp[0]*1),0,0,0))/86400000;
	    var today = new Date();
	    Year = takeYear(today);
	    Month = today.getMonth();
	    Day = today.getDate();
	    var nu = (Date.UTC(Year,Month,Day,0,0,0))/86400000;
	    if (nu > dan)
	    {
		alert('U mag geen datums uit het verleden invullen!');
		if (window.focus) box.focus();
		return false;
	    }
	}

        // prijscheck; is 1e karakter een cijfer? Staan er 3 cijfers achter een 
        // eventuele punt of komma? Zijn er decimalen?

	if (self.prijscheck && box.name && box.value && (prijscheck.indexOf('<'+box.name+'>') != -1))
	{
	    if (numericcheck.indexOf(box.value.charAt(0)) == -1)
	    {
		alert ('Onjuiste prijs');
		if (window.focus) box.focus();
		return false;
	    }
			teller=0;
			checkit = false;
			for (j=1;j<box.value.length;j++)
			{
				tmp = box.value.charAt(j);
				teller++;
				if (tmp == '.' || tmp == ',')
				{
					teller = 0;
					checkit = true;
				}
				else if (numericcheck.indexOf(tmp) == -1)
				{
					alert ('Onjuiste prijs');
					if (window.focus) box.focus();
					return false;
				}
				if (checkit && teller > 3)
				{
					alert ('Onjuiste prijs');
					if (window.focus) box.focus();
					return false;
				}
			}
			if (checkit && teller && teller < 3)
			{
				alert ('Decimalen zijn niet toegestaan');
				if (window.focus) box.focus();
				return false;
			}
		}

		// tweede datumcheck. Is het geformatteerd gg-gg-gggg? Bestaat de datum?


		if (self.datumklopt2 && box.name && box.value && (datumklopt2.indexOf('<'+box.name+'>') != -1))
		{
			datecheck = 'nn-nn-nnnn';
			check = true;
			if (box.value.length != 10) check = false;
			for (j=0;j<datecheck.length;j++)
			{
				if (datecheck.charAt(j) == 'n' && numericcheck.indexOf(box.value.charAt(j)) == -1)
				{
					check = false;
				}
				if ((datecheck.charAt(j) == '-') && (box.value.charAt(j) != '-'))
				{
					check = false;
				}
			}
			if (!check)
			{
				alert('U heeft deze datum niet correct ingevuld.');
				if (window.focus) box.focus();
				return false;
			}
			var matchArray = new Array();
			matchArray = box.value.split('-');
			day = matchArray[0];
			month = matchArray[1];
			year = matchArray[2];
			if (month < 1 || month > 12)
			{ // check month range
				alert('Maand moet een getal zijn tussen 01 en 12.');
				if (window.focus) box.focus();
				return false;
			}
			if (day < 1 || day > 31)
			{
				alert('Dag moet een getal zijn tussen 01 en 31.');
				if (window.focus) box.focus();
				return false;
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31)
			{
				alert('Maand '+month+' heeft geen 31 dagen!')
				if (window.focus) box.focus();
				return false;
			}
			if (month == 2)
			{ // check for february 29th
				var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
				if (day>29 || (day==29 && !isleap))
				{
					alert('Februari ' + year + ' heeft niet ' + day + ' dagen!');
					if (window.focus) box.focus();
					return false;
		   		}
		   	}
		}

		// Postcode check; Is het geformatteerd gggg[ ]?ll  (l=letter)

		if (self.postcodeklopt && (postcodeklopt.indexOf('<'+box.name+'>') != -1) && box.name && box.value)
		{
			box.value = box.value.toLowerCase();
			if (!box.value)
			{
				alert('U dient hier een postcode in te vullen.');
				if (window.focus) box.focus();
				return false;
			}
			if (box.value.length < 6 || box.value.length > 7)
			{
				alert('Deze postcode is incorrect');
				if (window.focus) box.focus();
				return false;
			}
			for (t=0;t<4;t++)
			{
				if (numericcheck.indexOf(box.value.substring(t,t+1)) == -1)
				{
					alert('Deze postcode is incorrect');
					if (window.focus) box.focus();
					return false;
				}
			}
			if (box.value.length == 7 && (box.value.substring(4,5) != ' '))
			{
					alert('Deze postcode is incorrect');
					if (window.focus) box.focus();
					return false;
			}
			for (t=box.value.length;t>box.value.length-2;t--)
			{
				if (checkb.indexOf(box.value.substring(t,t+1)) == -1)
				{
					alert('Deze postcode is incorrect');
					if (window.focus) box.focus();
					return false;
				}
			}
		}


	}

	// alles OK, submit formulier

	return true;
}

function formcheckUK()
{

    // we gaan een voor een alle formuliervelden af en kijken wat er gecheckt 
    // moet worden en doen dan de check
    for (i=0;i<document.forms[0].length;i++)
    {

    // begin; laad formelement in 'box'
	box = document.forms[0].elements[i];

	// verplicht-check: is er wel iets ingevuld?
	if (self.verplicht && (verplicht.indexOf('<'+box.name+'>') != -1) && !box.value)
	{
 	    alert('Not all compulsary fields are filled out.');
	    if (window.focus) box.focus();
	    return false;
	}

    }
	
	return true;
}


// extra functie voor millennium-proof jaar berekenen
function takeYear(today)
{
	if (today.getFullYear) Year = today.getFullYear();
	else
	{
		Year = today.getYear();
		if (Year < 1999) Year += 1900;
	}
	return Year;
}

// functie voor de help-popups. Aanroep: showhide('naam_van_layer','visible | hidden');

function showhide(naam,value)
{
	if (document.getElementById)
	{
		document.getElementById(naam).style.visibility = value;
	}
	else if (document.all)
	{
		document.all[naam].style.visibility = value;
	}
	else if (document.layers)
	{
		document.layers[naam].visibility = value;
	}
}
