
var W3CDOM = (document.getElementsByTagName && document.createElement);
//zet op false wanneer een alertwindow moet worden getoond ipv meldingen achter de velden
//W3CDOM = false;
var MultipleErrors = false
//zet op true om per radiobutton een foutmelding te geven (alleen handig wanneer de radiobuttons ONDER elkaar staan
//MultipleErrors = true

var config = new Array();
//type rule,elementnaam,foutmelding
config['cform'] = new Array();
config['cform'][0] = new Array('required','zorg','Maak een keuze.');
config['cform'][1] = new Array('required','naam','Dit veld is verplicht.');
config['cform'][2] = new Array('required','adres','Dit veld is verplicht.');
config['cform'][3] = new Array('required','postcode','Dit veld is verplicht.');
config['cform'][4] = new Array('required','woonplaats','Dit veld is verplicht.');
config['cform'][5] = new Array('required','telefoonnummer','Dit veld is verplicht.');
config['cform'][6] = new Array('required','email','Dit veld is verplicht.');
config['cform'][7] = new Array('isemail','email','Geen juist emailadres.');


config['iform'] = new Array();
config['iform'][0] = new Array('required','txtVoorlettersKraamvrouw','Dit veld is verplicht.');
config['iform'][1] = new Array('required','txtMeisjesnaamKraamvrouw','Dit veld is verplicht.');
config['iform'][2] = new Array('required','txtGeboortedatumKraamvrouw','Dit veld is verplicht.');
config['iform'][3] = new Array('required','txtNaamPartner','Dit veld is verplicht.');
config['iform'][4] = new Array('required','txtAdres','Dit veld is verplicht.');
config['iform'][5] = new Array('required','txtPostcode','Dit veld is verplicht.');
config['iform'][6] = new Array('required','txtWoonplaats','Dit veld is verplicht.');
config['iform'][7] = new Array('required','txtTelefoonnummer1','Dit veld is verplicht.');
config['iform'][8] = new Array('required','txtBevallingsdatum','Dit veld is verplicht.');
config['iform'][9] = new Array('required','txtNaamVerzekeraar','Dit veld is verplicht.');
config['iform'][10] = new Array('required','txtPolisnummer','Dit veld is verplicht.');
config['iform'][11] = new Array('required','txtservicenummer','Dit veld is verplicht.');

config['iform2'] = new Array();
config['iform2'][0] = new Array('required','txtVoorletters','Dit veld is verplicht.');
config['iform2'][1] = new Array('required','txtNaam','Dit veld is verplicht.');
config['iform2'][2] = new Array('required','txtStraat','Dit veld is verplicht.');
config['iform2'][3] = new Array('required','txtHuisnummer','Dit veld is verplicht.');
config['iform2'][4] = new Array('required','txtPostcode','Dit veld is verplicht.');
config['iform2'][5] = new Array('required','txtWoonplaats','Dit veld is verplicht.');
config['iform2'][6] = new Array('required','txtGeboortedatum','Dit veld is verplicht.');
config['iform2'][7] = new Array('required','txtEmail','Dit veld is verplicht.');
config['iform2'][8] = new Array('required','txtTelPriv','Dit veld is verplicht.');




config['aform'] = new Array();
config['aform'][0] = new Array('required','txtGebNaamKraamvrouw','Dit veld is verplicht.');
config['aform'][1] = new Array('required','txtGeboortedatumKraamvrouw','Dit veld is verplicht.');
//config['aform'][2] = new Array('required','txtVoornaam','Dit veld is verplicht.');
//config['aform'][3] = new Array('required','txtAchternaam','Dit veld is verplicht.');
config['aform'][2] = new Array('required','txtVoorletters','Dit veld is verplicht.');
config['aform'][3] = new Array('required','txtStraat','Dit veld is verplicht.');
config['aform'][4] = new Array('required','txtHuisnummer','Dit veld is verplicht.');
config['aform'][5] = new Array('required','txtPostcode','Dit veld is verplicht.');
config['aform'][6] = new Array('required','txtWoonplaats','Dit veld is verplicht.');
config['aform'][7] = new Array('required','txtTelPriv','Dit veld is verplicht.');
config['aform'][8] = new Array('required','txtNationaliteit','Dit veld is verplicht.');
config['aform'][9] = new Array('required','txtBurgStaat','Dit veld is verplicht.');
config['aform'][10] = new Array('required','txtBevalDatum','Dit veld is verplicht.');
config['aform'][11] = new Array('required','txtBevalPlaats','Dit veld is verplicht.');
config['aform'][12] = new Array('required','txtNaamVerloskundige','Dit veld is verplicht.');
config['aform'][13] = new Array('required','txtHoeveel','Dit veld is verplicht.');
config['aform'][14] = new Array('required','txtAantalKinderen','Dit veld is verplicht.');
config['aform'][15] = new Array('required','txtMedIn','Dit veld is verplicht.');
config['aform'][16] = new Array('required','txtNaamHuisarts','Dit veld is verplicht.');
config['aform'][17] = new Array('required','txtZiektekostenverzekeraar','Dit veld is verplicht.');
config['aform'][18] = new Array('required','txtVezekeringsnummer','Dit veld is verplicht.');
config['aform'][19] = new Array('required','txtBSN','Dit veld is verplicht.');



var firstError;
var validForm;
var errorstring;
var el;
var i;

function validate(formname)
{
	
	
	firstError = null;
	validForm = true;
	errorstring = '';
	formname = formname.name;

	var x = document.forms[formname].elements;
	for (var i=0;i<config[formname].length;i++)
	{
		for (var j=0;j<x.length;j++)
		{
			if (config[formname][i][1] == x[j].name) 
			{
				switch (config[formname][i][0])
				{
					case 'required':
						if (!getValue(x[j])) writeError(x[j],config[formname][i][2]);	break;
					case 'isemail':
						var mailcorrect = new RegExp("^[a-z]+([.]?[a-z0-9_-]+)*[@]([a-z0-9_-]+[.])+([a-z]{2,4})$").exec(x[j].value);
						if (!mailcorrect) writeError(x[j],config[formname][i][2]); break;
					case 'ishyperlink':
						if (x[j].value.indexOf('http://') == -1) writeError(x[j],config[formname][i][2]);	break;
				}
			}
		}		
	}
	if (!W3CDOM && errorstring != '') alert(errorstring);
	if (firstError)	firstError.focus();
	return validForm;
}

function getValue(ele) 
{
	el = ele.form.elements[ele.name], i = el.length
	switch (ele.type)
	{
		case 'text':
			if (el.value) return el.value;
			break;
		case 'password':
			if (el.value) return el.value;
			break;
		case 'radio':
			if (i) { while (i--) { if (el[i].checked) return el[i].value; }	}
			else { if(el.checked) return el.value; }
			break;
		case 'checkbox':
			if (i) { while (i--) { if (el[i].checked) return el[i].value; }	}
			else { if(el.checked) return el.value; }
			break;
		case 'select-one':
			if (el.options[el.selectedIndex].value) return el.options[el.selectedIndex].value
			break;
		case 'select-multiple':
			if (el.value) return el.value;
			break;
		case 'textarea':
			if (el.value) return el.value;
			break;
	}
	return false;
}

function writeError(obj,message)
{
	if (firstError==null) firstError = obj;
	validForm = false;
	errorstring += obj.name + ': ' + message + '\n';	
	if (MultipleErrors) {	if (obj.hasError) return }
	else
	{
		var el = obj.form.elements[obj.name], i = el.length;
		if (i && obj.type != 'select-one' && obj.type != 'select-multiple') { while (i--) { if (el[i].hasError) return } }
		else { if (obj.hasError) return	}	
	}
	if (W3CDOM)
	{
		obj.className += ' errorborder';
		if (obj.type=='radio' || obj.type=='checkbox') {
			var el = obj.form.elements[obj.name], i = el.length;
			if (i) { while (i--) el[i].onclick = removeError;	}
			else el.onclick = removeError;
		}
		else obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = 'error';
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);		
		obj.hasError = sp;
	}
	else obj.hasError = true;
}

function removeError() 
{
	if (this.type=='radio' || this.type=='checkbox') 
	{
		var el = this.form.elements[this.name], i = el.length;
		if (i)
		{
			while (i--) 
			{
				obj = el[i];
				if (obj.className.lastIndexOf(' ')!=-1) obj.className = obj.className.substring(0,obj.className.lastIndexOf(' '));
				if (obj.hasError) obj.parentNode.removeChild(obj.hasError);
				obj.hasError = null; obj.onclick = null;
			}
		}
		else
		{
			obj = el;
			if (obj.className.lastIndexOf(' ')!=-1) obj.className = obj.className.substring(0,obj.className.lastIndexOf(' '));
			if (obj.hasError) obj.parentNode.removeChild(obj.hasError);
			obj.hasError = null; obj.onclick = null;
		}
	}
	else 
	{
		this.className = this.className.substring(0,this.className.lastIndexOf(' '));
		this.parentNode.removeChild(this.hasError);
		this.hasError = null; this.onchange = null;
	}	
}

function RemoveAllErrors(formname){
	formname = formname.name;
	var x = document.forms[formname].elements;
	var s = '';
	if (config[formname]) {
		for (var i=0;i<config[formname].length;i++)
		{
			for (var j=0;j<x.length;j++)
			{
				if (config[formname][i][1] == x[j].name) 
				{
					if (x[j].type=='radio' || x[j].type=='checkbox') 
					{
						var el = document.forms[formname].elements[x[j].name], k = el.length;
						if (k)
						{
							while (k--) 
							{
								obj = el[k];
								if (obj.className.lastIndexOf(' ')!=-1) obj.className = obj.className.substring(0,obj.className.lastIndexOf(' '));
								if (obj.hasError) obj.parentNode.removeChild(obj.hasError);
								obj.hasError = null; obj.onclick = null;
							}
						}
						else
						{
							obj = el;
							if (obj.className.lastIndexOf(' ')!=-1) obj.className = obj.className.substring(0,obj.className.lastIndexOf(' '));
							if (obj.hasError) obj.parentNode.removeChild(obj.hasError);
							obj.hasError = null; obj.onclick = null;
						}
					}
					else 
					{
						x[j].className = x[j].className.substring(0,x[j].className.lastIndexOf(' '));
						if (x[j].hasError) x[j].parentNode.removeChild(x[j].hasError);
						x[j].hasError = null; x[j].onchange = null;
					}	
				}
				
			}
		}
	}
}
