
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['frmMedewerker'] = new Array();
/*config['frmMedewerker'][0] = new Array('required','Naam','Dit veld is verplicht.');
config['frmMedewerker'][1] = new Array('required','voorletters','Dit veld is verplicht.');*/
config['frmMedewerker'][0] = new Array('required','Soort','Maak een keuze.');
/*config['frmMedewerker'][3] = new Array('required0','Status','Maak een keuze.');
config['frmMedewerker'][4] = new Array('required','Indienst1','Dit veld is verplicht.');
config['frmMedewerker'][5] = new Array('required','Uitdienst1','Dit veld is verplicht.');
config['frmMedewerker'][6] = new Array('required','Uitdienst1','Dit veld is verplicht.');
config['frmMedewerker'][7] = new Array('required','Adres','Dit veld is verplicht.');
config['frmMedewerker'][8] = new Array('required','Postcode','Dit veld is verplicht.');
config['frmMedewerker'][9] = new Array('required','Woonplaats','Dit veld is verplicht.');
config['frmMedewerker'][10] = new Array('required','Telefoon','Dit veld is verplicht.');
config['frmMedewerker'][11] = new Array('required','Emailadres','Dit veld is verplicht.');
config['frmMedewerker'][12] = new Array('isemail','Emailadres','Geen juist emailadres.');
config['frmMedewerker'][13] = new Array('required','Geslacht','Dit veld is verplicht.');
config['frmMedewerker'][14] = new Array('required','Geboortedatum','Dit veld is verplicht.');
config['frmMedewerker'][15] = new Array('required','Opleiding','Maak een keuze.');*/
config['contactform'] = new Array();
config['contactform'][0] = new Array('required','email','Dit veld is verplicht.');
config['contactform'][1] = new Array('isemail','email','Geen juist emailadres.');


function validate(formname)
{
	Fout = false;
	Test = false;
	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 'required0':
						if (!getValue0(x[j])) writeError(x[j],config[formname][i][2]);	break;
					case 'isemail':
						if (x[j].value.indexOf('@') == -1) 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;
	
	
	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) Fout = true } }
		else { if (obj.hasError) Fout = true	}	
	}
	
	/*********/
	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) Test = true 
		} 
	}
	if (Fout && !(Test)) { errorstring += obj.name + ': ' + message + '\n'; return }
	/*********/
	
	if (W3CDOM)
	{
		obj.className += ' error';
		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 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 += ' error';
		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;
	}	
}

//Extra features
function getValue0(ele) 
{
	el = ele.form.elements[ele.name], i = el.length
	switch (ele.type)
	{
		case 'select-one':
			if (el.options[el.selectedIndex].value && !(el.options[el.selectedIndex].value==0)) return el.options[el.selectedIndex].value
			break;
	}
	return false;
}
