

/*
 * Kijkt of alle vragen juist ingevuld zijn en alert de niet juist ingevulde vragen.
 * returnt false of true
 */
validateForm = function(form) {
	var vragen = [];
	var fouten = [];
	var valid = true;
	
	for(var child in form.childNodes) {
		
		/*if(form.childNodes[child].nodeType == 1 && form.childNodes[child].tagName.toLowerCase() == 'div') {
			vragen.push(form.childNodes[child]);
		}*/
		vragen = form.getElementsByClassName('vraagcontainer');
	}
	
	for(var i = 0; i < vragen.length; i++) {
		fouten.push(validateVraag(vragen[i]));
	}
	
	for(var i = 0; i < vragen.length; i++) {
		if($(vragen[i]).getElementsByClassName('foutAntwoord').length > 0) {
			vragen[i].removeChild($(vragen[i]).getElementsByClassName('foutAntwoord')[0]);
		}
		if(fouten[i] !== '') {
			valid = false;
			var errorMessage = document.createElement('div');
			errorMessage.className = 'foutAntwoord';
			errorMessage.innerHTML = fouten[i];
			vragen[i].insert({top: errorMessage});;
			//vragen[i].insertBefore(errorMessage, vragen[i].childNodes[0]);
			//vragen[i].innerHTML = '<div class="foutAntwoord">' + fouten[i] + '</div>' + vragen[i].innerHTML;
		}
	}
	
	if(valid) {
		return true;
	} else {
		return false;
	}
}

validateVraag = function(vraag) {
	var type = $(vraag).classNames().entries()[1].substr(6).toLowerCase();
	var r = '';
	switch(type) {
		case 'meerkeuze':
			var opties = vraag.getElementsByTagName('input');
			var maxopties = parseInt($(vraag).getElementsByClassName('maxopties')[0].value);
			var minopties = parseInt($(vraag).getElementsByClassName('minopties')[0].value);
			var aantalGeselecteerd = 0;
			for(var i = 0; i < opties.length; i++) {
				if(opties[i].type.toLowerCase() == 'checkbox' && opties[i].checked) {
					aantalGeselecteerd++;
					if(opties[i].className == 'andersnamelijk'){
						if($(vraag).getElementsByClassName('andersnamelijkinput')[0].value != ''){
							//return '';//niet returnen, er moet immers wel gewoon geteld worden of min/max antwoorden niet overschreven wordt
						} else {
							return lang['andersnamelijk'];
						}
					}
				}
				
			}
			if(isNaN(maxopties) && isNaN(minopties)) {
				return '';
			}
			if(isNaN(minopties)) {
				minopties = 0;
			}			
			if(aantalGeselecteerd <= maxopties && aantalGeselecteerd >= minopties) {
				return '';
			} else if(aantalGeselecteerd < minopties) {
				r += lang['minimaal'] + minopties + lang['opties'];
				return r;
			} else if(aantalGeselecteerd > maxopties){
				r += lang['maximaal'] + maxopties + lang['opties'];
				return r;
			}else {
				return r;			
			}
			
			break;
		case 'enkelkeuze':
			var opties = vraag.getElementsByTagName('input');
			if(vraag.getElementsByClassName('enkelselect')[0]){
				if(vraag.getElementsByClassName('enkelselect')[0].value != ''){
					return '';
				}
				if(opties[0].className == 'andersnamelijk'){
					if($(opties[0]).next().next().value != '') {
						return '';
					} else {
						return lang['andersnamelijk'];
					}
				}
			} else {
				for(var i = 0; i < opties.length; i++) {
					if(opties[i].type.toLowerCase() == 'radio' && opties[i].checked) {
						if(opties[i].className != 'andersnamelijk') {
							return '';
						} else {
							if($(opties[i]).next().next().value != '') {
								return '';
							} else {
								return lang['andersnamelijk'];
							}
						}
					}
				}
			}
			r += lang['een_antwoord'];
			return r;
			break;
		case 'likert':
			var vragen = $(vraag).getElementsByClassName('vraag_likert_vraag');
			var aantalVragen = 0;
			var aantalIngevuld = 0;
			for(var i = 0; i < vragen.length; i++) {
				aantalVragen++;
				var opties = vragen[i].getElementsByTagName('input');
				for(var j = 0; j < opties.length; j++) {
					if(opties[j].type.toLowerCase() == 'radio' && opties[j].checked) {
						aantalIngevuld++;
					}
				}
			}
			if(aantalVragen != aantalIngevuld) {
				r += lang['deelvragen'];
				return r;
			} else {
				return '';
			}
			break;
		case 'prioriteit':
			var itemsBron = $(vraag).getElementsByClassName('bron')[0].options.length;
			var minopties = $(vraag).getElementsByClassName('minopties')[0].value;
			var maxopties = $(vraag).getElementsByClassName('maxopties')[0].value;
			var doel = $(vraag).getElementsByClassName('doel')[0].options.length;
			if(minopties == '-1' && maxopties == '-1' && itemsBron > 0) {
				var toevoegen = itemsBron;
				r += lang['extraitems']+toevoegen+lang['items'];
				return r;
			}else if(minopties != '-1' && maxopties != '-1' && doel < minopties) {
				var toevoegen = minopties - doel;
				r += lang['extraitems']+toevoegen+lang['items'];
				return r;
			}else if(minopties != '-1' && maxopties != '-1' && doel > maxopties) {
				var verwijderen = doel - maxopties; 
				r += lang['teveelitems']+verwijderen+lang['items2'];
				return r;
				
			}else {
				return '';
			}
			break;
		case 'slider':
			var changed = $$(vraag.id + ' .sliderchanged');
			for(var i = 0; i < changed.length; i++) {
				if(changed[i].value == 0) {
					return lang['slidermove1'] + (i+1) + lang['slidermove2'];
				}
			}
			return '';
			break;
		case 'totaal':
			var items = $$('#' + vraag.id + ' .optieInput');
			var totaal = $$('#' + vraag.id + ' .totaalInput')[0];
			var totaalToegestaan = $$('#' + vraag.id + ' .totaalToegestaanInput')[0].value;
			var totaalAantal = 0;
			items.each(function(s, i) {
				var val = s.value;
				var numregexp = /^[0-9\.]+$/;
				if(!numregexp.test(val) && val != '') {
					r += lang['item'] + (i + 1) + lang['alleen_cijfers'];
				} else {
					if(val == '') val = 0;
					totaalAantal = totaalAantal + parseFloat(val);
				}
			});
			if(totaalAantal != totaalToegestaan) {
				r += lang['totaal_items'] + totaalToegestaan + lang['totaal_items2'];
			}
			return r;;
			break;
		case 'semantisch':
			var vragen = $(vraag).getElementsByClassName('vraag_semantisch_vraag');
			var aantalVragen = 0;
			var aantalIngevuld = 0;
			for(var i = 0; i < vragen.length; i++) {
				aantalVragen++;
				var opties = vragen[i].getElementsByTagName('input');
				for(var j = 0; j < opties.length; j++) {
					if(opties[j].type.toLowerCase() == 'radio' && opties[j].checked) {
						aantalIngevuld++;
					}
				}
			}
			if(aantalVragen != aantalIngevuld) {
				r += lang['deelvragen'];
				return r;
			} else {
				return '';
			}
			break;
		case 'open':
			var format = $(vraag).getElementsByClassName('format')[0].value;
			var verplicht = $(vraag).getElementsByClassName('verplicht')[0].value;			
			var antwoord = trim($(vraag).getElementsByClassName('antwoord')[0].value);
			
			if(verplicht == 'on' && antwoord == '') {
				return lang['verplicht'];
			}else if(verplicht == 'on'){
			
				switch(format) {
					case 'telefoonnummer':
						var re1 = /^0[0-9]\s?-?[0-9]{8}$/i;
						var re2 = /^0[0-9]{2}\s?-?[0-9]{7}$/i;
						var re3 = /^0[0-9]{3}\s?-?[0-9]{6}$/i;
						if(!(re1.test(antwoord) || re2.test(antwoord) || re3.test(antwoord))) {
							r += lang['telefoonnummer'];
							return r;
						} else {
							return '';
						}
						return r;
						break;
					case 'postcode':
						var re = /^[0-9]{4}\s?[A-Za-z]{2}$/i;
						if(!re.test(antwoord)) {
							r += lang['postcode'];
							return r;
						} else {
							return '';
						}
						break;
					case 'postcode_numeriek':
						var re = /^[0-9]{4}$/i;
						if(!re.test(antwoord)) {
							r += lang['postcode_kort'];
							return r;
						} else {
							return '';
						}
						break;
					case 'adres':
						var straat = trim($(vraag).getElementsByClassName('antwoord')[0].value);
						var huisnummer = trim($(vraag).getElementsByClassName('antwoord')[1].value);
						var re = /^[0-9]/i;
						if(!re.test(huisnummer)) {
							r += lang['huisnummer'];
						}else if(straat == ''){
							r += lang['straat'];
						} else {
							return '';
						}
						return r;
						break;
					/*case 'datum':
						var re = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/i;
						var max = parseInt($(vraag).getElementsByClassName('max')[0].value);
						var min = parseInt($(vraag).getElementsByClassName('min')[0].value);
						var jaar = antwoord.substring(antwoord.length - 4, antwoord.length);
						var maand = antwoord.substr(3, 2);
						var dag = antwoord.substr(0, 2);
						var d = new Date();
						var nu = d.getFullYear();
						if(!re.test(antwoord) || maand > 12 || dag > 31) {
							r += lang['datum'];
							return r;
						} else if(!isNaN(min) && (nu-jaar) < min){
							r += lang['tejong']+min;
							return r;
						} else if(!isNaN(max) && (nu-jaar) > max){
							r += lang['teoud']+max;
							return r;					
						} else {
							return '';
						}
						break;*/
					case 'emailadres':
						var re = /^[0-9a-zA-Z\+\.\-\_]+@[0-9a-zA-Z\.\-\_]+\..{2,6}$/i;
						if(!re.test(antwoord)) {
							r += lang['email'];
							return r;
						} else {
							return '';
						}
						break;
					case 'jaar':
						var re = /^[0-9]{4}$/i;
						if(!re.test(antwoord)) {
							r += lang['jaar'];
							return r;
						} else {
							return '';
						}
						break;
					case 'numeriek':
						var re = /^[0-9]+$/i;
						var max = parseInt($(vraag).getElementsByClassName('max')[0].value);
						var min = parseInt($(vraag).getElementsByClassName('min')[0].value);
						if(antwoord == ''){ return ''; }
						if(!re.test(antwoord)){
							r += lang['numeriek'];
							return r;
						} else if(!isNaN(max) && antwoord > max) {
							r += lang['numeriekmax']+max;
							return r;
						} else if(!isNaN(min) && antwoord < min) {
							r += lang['numeriekmin']+min;
							return r;
						} else {
							return '';
						}
						break;
					case 'regelverplicht':
						var re = /[a-z0-9]\b/i;
						if(!re.test(antwoord)){
							r += lang['verplicht'];
							return r;
						} else {
							return '';
						}
						break;
					case 'vlakverplicht':
						var re = /[a-z0-9]\b/i;
						if(!re.test(antwoord)){
							r += lang['verplicht'];
							return r;
						} else {
							return '';
						}
						break;
					default:
						return r;
						break;
				}
			}else {
				return '';
			}
				break;
			default:
				return '';
				break;
			}
}


prioriteitAddItem = function(vraagId) {
	var vraag = $(vraagId);
	var selected = [];
	var bron = vraag.getElementsByClassName('bron')[0];
	var doel = vraag.getElementsByClassName('doel')[0];
	var maxopties = vraag.getElementsByClassName('maxopties')[0].value;
	for(var i = 0; i < bron.options.length; i++) {
		if(bron.options[i].selected) {
			selected.unshift(bron.options[i]);
		}
	}
	if(selected.length > 0) {
		for(var i = 0; i < selected.length; i++) {
			doel.insertBefore(selected[i], doel.options.nextSibling);
			selected[i].selected = false;
		}
	}
	if(maxopties != '-1' && doel.options.length >= maxopties) {
		var plaatje = vraag.getElementsByClassName('pijlrechts')[0];
		plaatje.innerHTML = '<img style="padding-bottom:8px;" src="images/rightdisabled.png" alt="Kan maar '+maxopties+' items naar rechts verplaatsen">';		
	}
};

prioriteitRemoveItem = function(vraagId) {
	var vraag = $(vraagId);
	var selected = [];
	var doel = vraag.getElementsByClassName('bron')[0];
	var bron = vraag.getElementsByClassName('doel')[0];
	var maxopties = vraag.getElementsByClassName('maxopties')[0].value;
	for(var i = 0; i < bron.options.length; i++) {
		if(bron.options[i].selected) {
			selected.unshift(bron.options[i]);
		}
	}
	if(selected.length > 0) {
		for(var i = 0; i < selected.length; i++) {
			doel.insertBefore(selected[i], doel.options.nextSibling);
			selected[i].selected = false;
		}
	}
	if(maxopties != '-1' && bron.options.length < maxopties) {
		var plaatje = vraag.getElementsByClassName('pijlrechts')[0];
		plaatje.innerHTML = '<img src="images/right.png" style="padding-bottom:8px; cursor: pointer;" onclick="prioriteitAddItem(\''+vraagId+'\');" alt="Item naar rechts verplaatsen">';		
	}
};

prioriteitItemUp = function(vraagId) {
	var vraag = $(vraagId);
	var selected = [];
	var doel = vraag.getElementsByClassName('doel')[0];
	for(var i = 0; i < doel.options.length; i++) {
		if(doel.options[i].selected) {
			selected.push(doel.options[i]);
		}
	}
	if(selected.length > 0) {
		for(var i = 0; i < selected.length; i++) {
			if(selected[i].previousSibling) {
				doel.insertBefore(selected[i], selected[i].previousSibling);
			}
		}
	}
}

prioriteitItemDown = function(vraagId) {
	var vraag = $(vraagId);
	var selected = [];
	var doel = vraag.getElementsByClassName('doel')[0];
	for(var i = 0; i < doel.options.length; i++) {
		if(doel.options[i].selected) {
			selected.unshift(doel.options[i]);
		}
	}
	if(selected.length > 0) {
		for(var i = 0; i < selected.length; i++) {
			if(selected[i].nextSibling) {
				doel.insertBefore(selected[i], selected[i].nextSibling.nextSibling);
			}
		}
	}
}

disableAndersNamelijkEK = function(vraagId, element) {
	if(element.checked && document.getElementById('andersNamelijkInput' + vraagId)) {
		$('andersNamelijkInput' + vraagId).disable();
		$('andersNamelijkRadio' + vraagId).checked = false;
		$('andersNamelijkInput' + vraagId).className = 'disabled';
	}
}

enableAndersNamelijkEK = function(vraagId, element) {
	if(element.checked && document.getElementById('andersNamelijkInput' + vraagId)) {
		$('andersNamelijkInput' + vraagId).enable();
		$('andersNamelijkInput' + vraagId).focus();
		$('andersNamelijkInput' + vraagId).className = '';
		var radios = $$('div.optie input[name=' + vraagId + ']');
		for(var i = 0; i < radios.length; i++) {
			radios[i].checked = false;
		}
	}
}

toggleAndersNamelijkMK = function(vraagId, element) {
	if(element.checked && document.getElementById('andersNamelijkInput' + vraagId)) {
		$('andersNamelijkInput' + vraagId).enable();
		$('andersNamelijkInput' + vraagId).focus();
		$('andersNamelijkInput' + vraagId).className = 'andersnamelijkinput';
	} else if(document.getElementById('andersNamelijkInput' + vraagId)) {
		$('andersNamelijkInput' + vraagId).disable();
		$('andersNamelijkInput' + vraagId).className = 'disabled';
	}
}

updateTotaal = function(vraagid) {
	var items = $$('#' + vraagid + ' .optieInput');
	var totaal = $$('#' + vraagid + ' .totaalInput')[0];
	var totaalAantal = 0;
	items.each(function(s, i) {
		var val = s.value;
		var numregexp = /^[0-9\.]+$/;
		if(numregexp.test(val)) {
			totaalAantal = totaalAantal + parseFloat(val);
		}
	});
	totaal.value = totaalAantal;
}

trim = function(value) {
  value = value.replace(/^\s+/,'');
  value = value.replace(/\s+$/,'');
  return value;
}


// -->