//global vars
var disabledForm = false;
var force_kvk_s = false;
var brancheWin;

function toggleMV() {
	var mvValue = document.forms.vermelding.manvrouw;
	var mvText = document.forms.vermelding.aanhef;

	if (disabledForm) { return; }

	if (mvValue.value=='M') {
		mvValue.value = 'V';
		mvText.value = 'Mw.';
	} else {
		mvValue.value = 'M';
		mvText.value = 'Dhr.';
	}	
}

function disableForm(elm, dBool) {
	var elm, dBool;
	var x = false;

	for (var i = 0; i < elm.form.elements.length; i++) {
		if (elm.form.elements[i]==elm) { x = true; }
		if (x && dBool) {
			if (elm.form.elements[i].type != 'checkbox') { elm.form.elements[i].style.backgroundColor = '#D4D0C8'; }
			elm.form.elements[i].setAttribute('disabled','disabled');
		} else if (x && !dBool) {
			elm.form.elements[i].style.backgroundColor = '';
			elm.form.elements[i].removeAttribute('disabled');
		}			
	}
	disabledForm = dBool;
}

String.prototype.trim = function () {
	return this.replace(/^[ \t\n\r\0\x0B]+|[ \t\n\r\0\x0B]+$/g,'');
}

function trimForm(cForm) {
	var cForm;

	for (var i = 0; i < cForm.elements.length; i++) {
		if (cForm.elements[i].type == 'text') {
			cForm.elements[i].value = cForm.elements[i].value.trim();
		}
	}
}

function checkForm(cForm) {
	var cForm, field, required;
	var nok = false;
	var fieldCheck = new Array();
	var comboCheck = new Array();

	trimForm(cForm);	//remove whitespace from beginning and ending of every field

	//			   field	regex	required (bool or string with field which holds the bool)
	fieldCheck[0] = new Array('kvknr', /^[0-9]{8}$/, true);
	fieldCheck[1] = new Array('kvknr_s', /^[0-9]{4}$/, 'use_kvknr_s');
	fieldCheck[2] = new Array('bedrijfsnaam', /^.{3,80}$/, true);
	fieldCheck[3] = new Array('handelsnaam', /^.{3,80}$/, false);
	fieldCheck[4] = new Array('postcode_c', /^[1-9]{1}[0-9]{3}$/, true);
	fieldCheck[5] = new Array('postcode_l', /^[A-Za-z]{2}$/, true);
	fieldCheck[6] = new Array('huisnr', /^[1-9]{1}[0-9]{0,4}$/, true);
	fieldCheck[7] = new Array('toevoeg', /^.{1,26}$/, false);
	fieldCheck[8] = new Array('p_postcode_c', /^[1-9]{1}[0-9]{3}$/, new Array('p_postcode_l', 'p_huisnr'));
	fieldCheck[9] = new Array('p_postcode_l', /^[A-Za-z]{2}$/, new Array('p_postcode_c', 'p_huisnr'));
	fieldCheck[10] = new Array('p_huisnr', /^[1-9]{1}[0-9]{0,4}$/, new Array('p_postcode_c', 'p_postcode_l'));
	fieldCheck[11] = new Array('p_toevoeg', /^.{1,26}$/, false);
	fieldCheck[12] = new Array('tel_r', /^0(6|800|90(6|9|0)|([1-5]|7)[0-9]{2}|([1-5]|[7-9])[0-9])$/, 'tel_a');
	fieldCheck[13] = new Array('tel_a', /^([0-9]{4}|[0-9]{7}|[1-9][0-9]{5,7})$/, 'tel_r');
	fieldCheck[14] = new Array('fax_r', /^0(6|800|90(6|9|0)|([1-5]|7)[0-9]{2}|([1-5]|[7-9])[0-9])$/, 'fax_a');
	fieldCheck[15] = new Array('fax_a', /^([0-9]{4}|[0-9]{7}|[1-9][0-9]{5,7})$/, 'fax_r');
	fieldCheck[16] = new Array('www', /^(http:\/\/)?([a-zA-Z0-9]{2}|[a-zA-Z0-9]{1}[-\.a-zA-Z0-9]+[a-zA-Z0-9]{1})\.[a-zA-Z]{2,4}(|\/|\/.*)$/, false);
	fieldCheck[17] = new Array('email', /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/, false);
	fieldCheck[18] = new Array('vnaam', /^.{1,40}$/, true);
	fieldCheck[19] = new Array('tussen', /^.{2,15}$/, false);
	fieldCheck[20] = new Array('anaam', /^.{2,40}$/, true);
	fieldCheck[21] = new Array('c_email', /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/, true);
	fieldCheck[22] = new Array('c_tel_r', /^0(6|800|90(6|9|0)|([1-5]|7)[0-9]{2}|([1-5]|[7-9])[0-9])$/, true);
	fieldCheck[23] = new Array('c_tel_a', /^([0-9]{4}|[0-9]{7}|[1-9][0-9]{5,7})$/, true);

	for (var i = 0; i < fieldCheck.length; i++) {
		field = eval('cForm.' + fieldCheck[i][0]);
		if (typeof fieldCheck[i][2] == 'string') {
			required = eval('cForm.' + fieldCheck[i][2] + '.value');
		} else if (typeof fieldCheck[i][2] == 'object') {
			required = false;
			for (var x = 0; x < fieldCheck[i][2].length; x++) {
				if (eval('cForm.' + fieldCheck[i][2][x] + '.value')) { required = true; }
			}
		} else { required = fieldCheck[i][2]; }

		if ((field.value == '' && required) || (field.value != '' && !field.value.match(fieldCheck[i][1]))) {
			field.style.backgroundColor = '#FFFF00'; nok = true;
		} else { field.style.backgroundColor = ''; }
	}

	comboCheck[0] = 'tel';
	comboCheck[1] = 'fax';
	comboCheck[2] = 'c_tel';

	for (var i = 0; i < comboCheck.length; i++) {
		var infonr = eval('cForm.' + comboCheck[i] + '_r').value.match(/^0(800|90(6|9|0))$/);
		var nr = eval('cForm.' + comboCheck[i] + '_r').value + eval('cForm.' + comboCheck[i] + '_a').value;

		if (nr.length > 0 && ((infonr && !(nr.length == 8 || nr.length == 11)) || (!infonr && nr.length != 10))) {
			eval('cForm.' + comboCheck[i] + '_r').style.backgroundColor = '#FFFF00';
			eval('cForm.' + comboCheck[i] + '_a').style.backgroundColor = '#FFFF00';
			nok = true;
		}
	}

	if (nok) { alert('Enkele (verplichte) velden zijn niet of niet juist ingevoerd!'); return false; }

	if (cForm.card_keuze && cForm.card_keuze[2]) {
		if (!(cForm.card_keuze[0].checked || cForm.card_keuze[1].checked || cForm.card_keuze[2].checked)) { alert('U dient een keuze te maken tussen een basis- of uitgebreide vermelding!'); return false; }
	}
	if (cForm.pid) {
		if (cForm.pid.value == '') { alert('U dient een product te selecteren'); return false; }
	}

	if (!cForm.akkoord_voorwaarden.checked) { alert('U dient akkoord te gaan met de algemene voorwaarden!'); return false; }

	return true;
}

function clearForm(no_kvknr_s) {
	var elm, no_kvknr_s;

	form = document.forms.vermelding;
	for (var i = 0; i < form.elements.length; i++) {
		elm = form.elements[i];
		if (elm.type != 'radio' && elm.type != 'submit' && elm.name != 'aanhef' && elm.name != 'manvrouw' && elm.name != 'kvknr' && !(elm.name == 'kvknr_s' && no_kvknr_s == true)) { elm.value = ''; }
		if (no_kvknr_s != true && elm.name == 'hoofdvestiging' && elm.value == 'J') { elm.checked = 'checked'; }
	}
	clearAdres(); clearAdres(true);
	if (no_kvknr_s != true) { force_kvk_s = false; view_kvknr_s(false); }

	//remove extra branche input fields
	for (var i = 1; i < 6; i++) { document.getElementById('branche' + i).style.display = 'none'; }

	disableForm(document.forms.vermelding.bedrijfsnaam, true)
}

function clearAdres(post) {
	var post;

	if (post) { document.getElementById('p_adres').innerHTML = '&nbsp;'; }
	else { document.getElementById('adres').innerHTML = '&nbsp;'; }
}

function view_kvknr_s(view) {
	var view;

	if (view || force_kvk_s) {
		document.getElementById('view_kvknr_s').style.display = 'inline';
		document.forms.vermelding.use_kvknr_s.value = 'on';
	} else {
		document.getElementById('view_kvknr_s').style.display = 'none';
		document.forms.vermelding.use_kvknr_s.value = '';
	}
}

var cField;
function editBranche(field) {
	var field;

	brancheWin = window.open('/branche?rid=' + field.previousSibling.value, 'brancheWin', 'width=600,height=350,top=125,dependent');
	cField = field;		//remember calling field (it will be read by the new window)
}

function removeBranche(field) {
	var field;

	if (!confirm('Weet u zeker dat u de branche wilt verwijderen?')) { return; }

	field.value = '';
	field.previousSibling.value = '';
	if (field.parentNode.id) { field.parentNode.style.display = 'none'; }

	brancheWin.close();
}

function setBik(field, cAnchor, aValue) {
	var field, cSelect, cAnchor, aValue;

	if (cAnchor) {
		//called from anchor
		field.value = cAnchor.childNodes[0].nodeValue;
		field.previousSibling.value = '1' + aValue;
	} else {
		//called from branche selector
		cSelect = brancheWin.document.getElementById('branche');

		if (cSelect.selectedIndex==0) {
			alert(cSelect.options[0].childNodes[0].nodeValue);
			brancheWin.focus();
			return;
		}

		field.value = cSelect.options[cSelect.selectedIndex].text;
		field.previousSibling.value = '1' + cSelect.options[cSelect.selectedIndex].value;
	}
	while (field.previousSibling.value.length < 7) { field.previousSibling.value += '0'; }

	brancheWin.close();
}
