
var W3CDOM = (document.getElementsByTagName && document.createElement);
//zet op false wanneer een alertwindow moet worden getoond ipv meldingen achter de velden
W3CDOM = true;
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


// Contactform
config['reactieform'] = new Array();
if (jsTaal == 'en')
{
	config['reactieform'][0] = new Array('required','onderwerp','this field is required.');
	config['reactieform'][1] = new Array('required','email','this field is required.');
	config['reactieform'][2] = new Array('isemail','email','not a valid e-mailaddress.');
	config['reactieform'][3] = new Array('required','tekst','this field is required.');
	config['reactieform'][4] = new Array('required','fileCV','this field is required.');
	config['reactieform'][5] = new Array('isdocument','fileCV','only documents of type .doc, .docx or .pdf are allowed.');
	config['reactieform'][6] = new Array('isdocument','fileBrief','only documents of type .doc, .docx or .pdf are allowed.');
}
else
{
	config['reactieform'][0] = new Array('required','onderwerp','dit veld is verplicht.');
	config['reactieform'][1] = new Array('required','email','dit veld is verplicht.');
	config['reactieform'][2] = new Array('isemail','email','geen juist emailadres.');
	config['reactieform'][3] = new Array('required','tekst','dit veld is verplicht.');
	config['reactieform'][4] = new Array('required','fileCV','dit veld is verplicht.');
	config['reactieform'][5] = new Array('isdocument','fileCV','alleen documenten van het type .doc, .docx of .pdf toegestaan.');
	config['reactieform'][6] = new Array('isdocument','fileBrief','alleen documenten van het type .doc, .docx of .pdf toegestaan.');
}



// Contactform
config['contactform'] = new Array();
if (jsTaal == 'en')
{
	config['contactform'][0] = new Array('required','Voornaam','this field is required.');
	config['contactform'][1] = new Array('required','Achternaam','this field is required.');
	config['contactform'][2] = new Array('required','Email','this field is required.');
	config['contactform'][3] = new Array('isemail','Email','not a valid e-mailaddress.');
	config['contactform'][4] = new Array('required','Functie','this field is required.');
}
else
{
	config['contactform'][0] = new Array('required','Voornaam','dit veld is verplicht.');
	config['contactform'][1] = new Array('required','Achternaam','dit veld is verplicht.');
	config['contactform'][2] = new Array('required','Email','dit veld is verplicht.');
	config['contactform'][3] = new Array('isemail','Email','geen juist emailadres.');
	config['contactform'][4] = new Array('required','Functie','dit veld is verplicht.');
}

//TAF
config['tafform'] = new Array();
if (jsTaal == 'en')
{
	config['tafform'][0] = new Array('required','uwnaam','this field is required.');
	config['tafform'][1] = new Array('required','uwemail','this field is required.');
	config['tafform'][2] = new Array('isemail','uwemail','not a valid e-mailaddress.');
	config['tafform'][3] = new Array('required','ontvnaam','this field is required.');
	config['tafform'][4] = new Array('required','ontvemail','this field is required.');
	config['tafform'][5] = new Array('isemail','ontvemail','not a valid e-mailaddress.');
}
else
{
	config['tafform'][0] = new Array('required','uwnaam','dit veld is verplicht.');
	config['tafform'][1] = new Array('required','uwemail','dit veld is verplicht.');
	config['tafform'][2] = new Array('isemail','uwemail','geen juist emailadres.');
	config['tafform'][3] = new Array('required','ontvnaam','dit veld is verplicht.');
	config['tafform'][4] = new Array('required','ontvemail','dit veld is verplicht.');
	config['tafform'][5] = new Array('isemail','ontvemail','geen juist emailadres.');
}


//werkgeverInschrijvenForm
config['werkgeverInschrijvenForm'] = new Array();
config['werkgeverInschrijvenForm'][0] = new Array('required', 'bedrijf', 'dit veld is verplicht.');
config['werkgeverInschrijvenForm'][1] = new Array('required', 'voornaam', 'dit veld is verplicht.');
config['werkgeverInschrijvenForm'][2] = new Array('required', 'achternaam', 'dit veld is verplicht.');
config['werkgeverInschrijvenForm'][3] = new Array('required', 'functie', 'dit veld is verplicht.');
config['werkgeverInschrijvenForm'][4] = new Array('required', 'Email', 'dit veld is verplicht.');
config['werkgeverInschrijvenForm'][5] = new Array('isemail', 'Email', 'geen juist emailadres.');
config['werkgeverInschrijvenForm'][6] = new Array('required', 'telefoonnummer', 'dit veld is verplicht.');

//sendmailbedrijfwachtwoord
config['sendmailbedrijfwachtwoord'] = new Array();
config['sendmailbedrijfwachtwoord'][0] = new Array('required','Email','dit veld is verplicht.');
config['sendmailbedrijfwachtwoord'][1] = new Array('isemail','Email','geen juist emailadres.');

//vacatureInvoer
config['mainform'] = new Array();
config['mainform'][0] = new Array('isemailorhyperlink','emailreactie','geen juist emailadres of websiteadres.');
config['mainform'][1] = new Array('required','titel','dit veld is verplicht.');
config['mainform'][2] = new Array('required','tmponline','dit veld is verplicht.');
config['mainform'][3] = new Array('required','branche','dit veld is verplicht.');
config['mainform'][4] = new Array('required','fte','dit veld is verplicht.');
config['mainform'][5] = new Array('required','dienstverband','dit veld is verplicht.');
config['mainform'][6] = new Array('required','opleiding','dit veld is verplicht.');
//config['mainform'][6] = new Array('required','text','dit veld is verplicht.');
//config['mainform'][7] = new Array('today','tmponline','dit veld is verplicht.');

function validate(formname)
{
	firstError = null;
	validForm = true;
	errorstring = '';
	formname = formname.name;
	var x = document.forms[formname].elements;
	
	//alert(formname);
	
	for (var i=0;i<config[formname].length;i++)
	{
		for (var j=0;j<x.length - 1;j++)
		{
			if (config[formname][i][1] == x[j].name) 
			{
				//alert(x[j].name + ': ' + getValue(x[j]));
				
				switch (config[formname][i][0])
				{
					case 'required':
						if (!getValue(x[j])) writeError(x[j],config[formname][i][2]);	break;
					
					case 'isemail':
						var err2 = new RegExp("^[a-z]+([.]?[a-z0-9_-]+)*[@]([a-z0-9_-]+[.])+([a-z]{2,4})$").exec(x[j].value.toLowerCase());
						if(!err2 && !x[j].value=='') writeError(x[j],config[formname][i][2]);	break; 
						
					case 'isdocument':
						if (getValue(x[j]))
							if (!(getValue(x[j]).match(new RegExp(".(docx?|pdf)$"))))
								writeError(x[j],config[formname][i][2]);
						break;
					
					case 'isemailorhyperlink':
					
						if (getValue(x[j]))
						{
							// controleren of het een e-mail adres is
							var err2 = new RegExp("^[a-z]+([.]?[a-z0-9_-]+)*[@]([a-z0-9_-]+[.])+([a-z]{2,4})$").exec(x[j].value.toLowerCase());
							
							if (!err2)
							{
								// controleren of het een url is
								if ((x[j].value.indexOf('http://') == -1) && (x[j].value.indexOf('https://') == -1))
								{
									writeError(x[j],config[formname][i][2]);
								}
							}
						}
						
						break;
											
					/*case 'today':
						var curDate = new Date();
						var selDat = (x[j].value );
						var selDat2 = selDat.replace(/-/g, "/");
						
						alert(selDat2.getDay());
						
					*/	
					
					/*	var one_day=1000*60*60*24
						var selDateNum = Date.parse(selDat2)
						var CurDateNum = Date.parse(curDate)
						
						//var CurDateNum = curDate.toDateString();
						
						
						
						var Uitkomst = Math.ceil((selDateNum - CurDateNum)/one_day)

						alert(selDat2 + " parsdate: " + selDateNum);
						alert(curDate + " parsdate: " + CurDateNum);
						alert(Uitkomst)
						
						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;
		default:
			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 += ' 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;
	}	
}

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;
					}	
				}
				
			}
		}
	}
}
