var arrMaanden = ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"];

var focusedElement = new Object();
focusedElement["id_bouwmaand"] = false;
focusedElement["id_bouwjaar"] = false;

var sendingMail = false;

if (offline == undefined)
{
	var offline = false;
}

function rerouteLinks()
{
	var links = $$('a[href^="http://"]', 'a[href$=".pdf"]');

	links.each(function(link)
		{
			$(link).writeAttribute("onclick", "openNewWindow(this); return false;");
		});
}

function linkWegVanAanvraag(event)
{
	if (!confirm("Als u deze pagina verlaat, gaan de reeds ingevulde gegevens op deze pagina verloren.\nWeet u zeker dat u deze pagina wilt verlaten?")) Event.stop(event);
}

function checkIE6()
{
	var ie6 = $("iemelding_container");
	var menu = $("header_menu").down("ul");
	if ((ie6 != null) && (menu != null))
	{
		menu.childElements("li").each(function (li)
			{
				var ins = li.down("ins");

				if (ins != null)
				{
					a = li.down("a");

					// vul a met de huidige inhoud, plus de ins, plus de inhoud van de ins
					a.update(a.innerHTML + "<ins>" + ins.innerHTML + "</ins>");

					// verwijder de ins
					ins.remove();
				}
			});
	}
}

function initPopup()
{
	img = new Element("img");
	img.src = "images/pop-up-1.png";
	img = null;

	if ($("disclaimer"))
	{
		$("disclaimer").observe("click", puDisclaimer);
	}
}

function puDisclaimer(event)
{
	Event.stop(event);

	/* Haal content van disclaimer op uit html */
	new Ajax.Request("disclaimer-content.php",
		{
			onSuccess: function(response)
				{
					showPopup("Disclaimer", response.responseText, 1);
				}
		});
}

/* pop-up */
var popupVisible = false;

function showPopup(title, text, type)
{
	if (popupVisible == false)
	{
		var w = "530", h = "306", c = "pu1";
		switch(type)
		{
			case 1:w = "900";h = "367";c = "dc";break;
			case 2:w = "900";h = "488";c = "pv";break;
		}

		Event.observe(document.onresize ? document : window, "resize", resizeLayer);
		document.observe("keyup", checkKeyUp);

		body = $("page").up("body");

		div_layer = new Element("div", {"id": "pu_layer", "class": "png_bg"}).setOpacity(0);
		body.insert({bottom: div_layer});
		resizeLayer();

		div_content = new Element("div", {"id": "pu_content", "class": "pbg"}).update('<img id="pu_close" src="images/close.png" alt="Sluit venster"><h1 id="pu_title">' + title + '</h1><div id="pu_text">' + text + '</div>');
		div_content.addClassName(c);
		body.insert({bottom: div_content});
		[$("pu_close"), $("pu_layer")].invoke("observe", "click", hidePopup);
		[$("pu_close"), $("pu_title"), $("pu_text")].invoke("hide");
		rerouteLinks();

		new Effect.Opacity("pu_layer", {duration: 0.8, fps: 35, from: 0, to: 0.75, queue: {position: "end", scope: "pop-up"}});
		new Effect.Morph("pu_content", {duration: 0.8, fps: 50, style: "height: " + h + "px; margin-top: -" + Math.round(h / 2) + "px;", queue: {position: "end", scope: "pop-up"}});
		new Effect.Morph("pu_content", {duration: 0.8, fps: 50, style: "width: " + w + "px; margin-left: -" + Math.round(w / 2) + "px;", queue: {position: "end", scope: "pop-up"}});
		popupVisible = new Effect.Parallel(
			[new Effect.Appear($("pu_close"), {sync: true}),
			 new Effect.Appear($("pu_title"), {sync: true}),
			 new Effect.Appear($("pu_text"), {sync: true, afterFinish: function() {popupVisible = true;}})],
			{duration: 0.3, queue: {position: "end", scope: "pop-up"}});
	}
}

function hidePopup()
{
	if (popupVisible == true)
	{
		Event.stopObserving(document.onresize ? document : window, "resize", resizeLayer);
		document.stopObserving("keyup", checkKeyUp);
		$("pu_close").stopObserving();
		$$("#pv .pm").invoke("stopObserving");

		popupVisible = new Effect.Parallel(
			[new Effect.Opacity("pu_content", {sync: true, from: 1, to: 0, afterFinish: function() {$("pu_content").remove();}}),
			 new Effect.Opacity("pu_layer", {sync: true, from: 0.75, to: 0, afterFinish: function() {$("pu_layer").remove();popupVisible = false;}})],
			{duration: 1, fps: 35, queue: {scope: "pop-up"}});
	}
}

function checkKeyUp(e)
{
	if (e.keyCode == Event.KEY_ESC) hidePopup();
}

function resizeLayer()
{
	doc_vp_dim = document.viewport.getDimensions();
	$("pu_layer").setStyle({"width": doc_vp_dim.width + "px", "height": doc_vp_dim.height + "px"});
}
/* pop-up */

function cancelLink(event)
{
	Event.stop(event);
}

function setFieldZero()
{
	if (this.value === "") this.value = "0";
}

function togglePV()
{
	nr = this.up("tr").id.substr(3);

	if (this.hasClassName("dicht"))
	{
		this.addClassName("open").removeClassName("dicht").writeAttribute("title", "Klik hier voor minder details");
		$$("tr.row" + nr).invoke("show");
	}
	else if (this.hasClassName("open"))
	{
		this.addClassName("dicht").removeClassName("open").writeAttribute("title", "Klik hier voor meer details");
		$$("tr.row" + nr).invoke("hide");
	}
}

function openNewWindow(anker)
{
	loc = anker.href;
	newWin = window.open(loc);
	newWin.focus();
}

function resizeOfferte()
{
	if ($("content_container") && $("offerte_bottom") && $("offerte"))
	{
		bottom1 = $("content_container").cumulativeOffset().top + $("content_container").getHeight();
		bottom2 = $("offerte_bottom").cumulativeOffset().top + $("offerte_bottom").getHeight();
		verschil = bottom1 - bottom2;

		if (verschil != 0)
		{
			$("offerte").setStyle({"height": ($("offerte").getHeight() + verschil) + "px"});
			setTimeout(resizeOfferte, 100);
		}
	}
}

function filterKenteken()
{
	veld = $("id_kenteken");
	var kenteken = $F($$(".txtKenteken")[0]).toUpperCase();
	var kenteken_stripped = kenteken.replace(/[^0-9A-Z]/g, "");

	if (kenteken.strip().length > 0)
	{
		if (kenteken != kenteken_stripped)
		{
			kenteken = kenteken_stripped;
			veld.value = kenteken;
		}

		if (veld.up("form").id == "frmPremieBerekenen")
		{
			if ((kenteken.strip().length >= 6) && (kenteken.replace(/-/g, "").strip().length == 6))
			{
				veld.blur();
				getTypenBijKenteken(kenteken, true);
			}
		}
	}
}

function filterPostcode()
{
	var postcode = $F(this).toUpperCase().substr(0, 6);
	this.value = postcode;
	var postcode_stripped = postcode.replace(/[^\dA-Z-]/g, "");

	if (postcode.strip().length > 0)
	{
		if (postcode != postcode_stripped)
		{
			postcode = postcode_stripped;
			this.value = postcode;
		}

		var re;
		switch (postcode.strip().length)
		{
			case 1:re = new RegExp("[1-9]");break;
			case 2:re = new RegExp("[1-9][0-9]{1}");break;
			case 3:re = new RegExp("[1-9][0-9]{2}");break;
			case 4:re = new RegExp("[1-9][0-9]{3}");break;
			case 5:re = new RegExp("[1-9][0-9]{3}[A-Z]{1}");break;
			case 6:re = new RegExp("[1-9][0-9]{3}[A-Z]{2}");break;
		}

		if (!re.test(postcode))
		{
			if (postcode.strip().length <= 1)
			{
				postcode = "";
			}
			else
			{
				postcode = postcode.substr(0, (postcode.strip().length - 1));
			}

			this.value = postcode.toUpperCase();
		}

		if (postcode.strip().length == 6)
		{
			toggleWijzigen(this.id, false);
		}
	}
}

function filterPostcode2()
{
	var postcode = $F(this).toUpperCase().substr(0, 6);
	this.value = postcode;
	var postcode_stripped = postcode.replace(/[^\dA-Z-]/g, "");

	if (postcode.strip().length > 0)
	{
		if (postcode != postcode_stripped)
		{
			postcode = postcode_stripped;
			this.value = postcode;
		}

		var re;
		switch (postcode.strip().length)
		{
			case 1:re = new RegExp("[1-9]");break;
			case 2:re = new RegExp("[1-9][0-9]{1}");break;
			case 3:re = new RegExp("[1-9][0-9]{2}");break;
			case 4:re = new RegExp("[1-9][0-9]{3}");break;
			case 5:re = new RegExp("[1-9][0-9]{3}[A-Z]{1}");break;
			case 6:re = new RegExp("[1-9][0-9]{3}[A-Z]{2}");break;
		}

		if (!re.test(postcode))
		{
			if (postcode.strip().length <= 1)
			{
				postcode = "";
			}
			else
			{
				postcode = postcode.substr(0, (postcode.strip().length - 1));
			}

			this.value = postcode.toUpperCase();
		}

		if (postcode.strip().length == 6)
		{
			if ($(this).id.startsWith("id_rep"))
			{
				$("id_rep_woonplaats").focus();
			}
			else if ($(this).id.endsWith("_hb"))
			{
				$("id_woonplaats_hb").focus();
			}
			else if ($(this).id.endsWith("_kh"))
			{
				$("id_woonplaats_kh").focus();
			}
			else
			{
				$("id_woonplaats").focus();
			}
		}
	}
}

function filterGeboortedatum()
{
	var gebdat = $F(this).strip().substr(0, 10);
	var gebdat_stripped = gebdat.replace(/[^\d-]/g, "");

	var re1, re2;
	if ((gebdat.length > 0) && (gebdat != "dd-mm-jjjj"))
	{
		if (gebdat != gebdat_stripped)
		{
			gebdat = (gebdat_stripped != "--") ? gebdat_stripped : "";
			this.value = gebdat;
		}
		else
		{
			if (gebdat.length == 8)
			{
				re1 = /^\d-\d-\d{4}$/;
				re2 = /^\d{2}\d{2}\d{4}$/;
				if (re1.test(gebdat) || re2.test(gebdat))
				{
					if (re2.test(gebdat))
					{
						gebdat = gebdat.substr(0, 2) + "-" + gebdat.substr(2, 2) + "-" + gebdat.substr(4);
						$(this).value = gebdat;
					}

					checkGeboortedatum(this);
				}
			}
			else if (gebdat.length == 9)
			{
				re1 = /^\d-\d{2}-\d{4}$/;
				re2 = /^\d{2}-\d-\d{4}$/;
				if (re1.test(gebdat) || re2.test(gebdat))
				{
					checkGeboortedatum(this);
				}
			}
			else if (gebdat.length == 10)
			{
				re1 = /^\d{2}-\d{2}-\d{4}$/;
				if (re1.test(gebdat))
				{
					checkGeboortedatum(this);
				}
			}
		}
	}
}

function filterTelefoonnummer()
{
	var telefoonnummer = $F(this).substr(0, 10);
	var telefoonnummer_stripped = telefoonnummer.replace(/[^0-9]/g, "");

	if (telefoonnummer.strip().length > 0)
	{
		if (telefoonnummer != telefoonnummer_stripped)
		{
			telefoonnummer = telefoonnummer_stripped;
			this.value = telefoonnummer;
		}
	}
}

function checkDatum(temp_this)
{
	datum_veld = temp_this.tagName ? temp_this : this;
	var datum = $F(datum_veld);
	if (datum == "dd-mm-jjjj") return false;

	var re1 = /^\d{2}\d{2}\d{4}$/, re2;
	if (re1.test(datum))
	{
		datum = datum.substr(0, 2) + "-" + datum.substr(2, 2) + "-" + datum.substr(4);
		$(datum_veld).value = datum;
	}

	// onjuist format
	if (datum.length == 8)
	{
		re1 = /^\d-\d-\d{4}$/;
		if (!re1.test(datum))
		{
			throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", datum_veld);
			$(datum_veld).clear();
			return false;
		}
	}
	else if (datum.length == 9)
	{
		re1 = /^\d-\d{2}-\d{4}$/;
		re2 = /^\d{2}-\d-\d{4}$/;
		if (!re1.test(datum) && !re2.test(datum))
		{
			throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", datum_veld);
			$(datum_veld).clear();
			return false;
		}
	}
	else if (datum.length == 10)
	{
		re1 = /^\d{2}-\d{2}-\d{4}$/;
		if (!re1.test(datum))
		{
			throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", datum_veld);
			$(datum_veld).clear();
			return false;
		}
	}

	var arrDatum = $A(datum.split("-", 3));
	var dag = parseInt(arrDatum[0], 10);
	var mnd = parseInt(arrDatum[1], 10);
	var jr  = parseInt(arrDatum[2], 10);
	if (isNaN(dag))	dag	= 0;
	if (isNaN(mnd))	mnd	= 0;
	if (isNaN(jr))	jr	= 0;
	datumCheck = new Date(jr, (mnd - 1), dag, 0, 0, 0);

	// ongeldige waardes (3)
	if (((mnd < 1) || (mnd > 12)) || ((dag < 1) || (dag > getDagenInJaar(mnd, jr))))
	{
		throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", datum_veld);
		$(datum_veld).clear();
		return false;
	}

	return datumCheck;
}

function checkGeboortedatum(temp_this)
{
	datum_veld = temp_this.tagName ? temp_this : this;
	var datum = $F(datum_veld);
	var pv = ($("id_schadevrije_jaren") != null);

	if (datum == "dd-mm-jjjj")
	{
		throwError("", datum_veld);
		return true;
	}

	gebdat = checkDatum(datum_veld);
	datum = $F(datum_veld);
	if (gebdat == false) return false;

	// ongeldige leeftijd < 18 (4)
	var min18 = new Date();
	min18.setFullYear(min18.getFullYear() - 18);
	min18.setHours(0);min18.setMinutes(0);min18.setSeconds(0);min18.setMilliseconds(0);

	if (min18 < gebdat)
	{
		if (pv)
		{
			throwError("<b>Sorry!</b> We kunnen geen premievergelijking maken, omdat u nog geen 18 bent.", datum_veld);
		}
		else
		{
			throwError("<b>Sorry!</b> U kunt geen autoverzekering afsluiten, omdat u nog geen 18 bent.", datum_veld);
		}
		return false;
	}

	// ongeldige leeftijd >= 109 (5)
	var tot109 = new Date();
	tot109.setFullYear(tot109.getFullYear() - 109)
	tot109.setHours(0);tot109.setMinutes(0);tot109.setSeconds(0);tot109.setMilliseconds(0);

	if (tot109 >= gebdat)
	{
		throwError("<b>Sorry!</b> We kunnen geen premievergelijking maken, omdat u ouder bent dan 108 jaar.", datum_veld);
		return false;
	}

	// ongeldige schadevrije jaren i.c.m. de leeftijd van de bestuurder
	if (pv && ($("id_schadevrije_jaren").selectedIndex > 0))
	{
		if (!checkGebdatSvj()) return false;
	}

	// goed (1)
	throwError("", datum_veld);
	$(datum_veld).value = mooieDatum(datum);
	if (pv)
	{
		toggleWijzigen("id_geboortedatum", false);
	}
	return true;
}

function checkDatumHedenToekomst(temp_this)
{
	datum_veld = temp_this.tagName ? temp_this : this;
	var datum = $F(datum_veld);
	if (datum == "dd-mm-jjjj") return true;

	datumCheck = checkDatum(datum_veld);
	datum = $F(datum_veld);
	if (datumCheck == false) return false;

	// ongeldige datum, voor vandaag (4)
	var vandaag = new Date();
	vandaag.setHours(0);vandaag.setMinutes(0);vandaag.setSeconds(0);vandaag.setMilliseconds(0);

	if (vandaag > datumCheck)
	{
		throwError("<b>Sorry!</b> De ingangsdatum van de verzekering moet op of na vandaag liggen.", datum_veld);
		return false;
	}

	// goed (1)
	throwError("", datum_veld);
	$(datum_veld).value = mooieDatum(datum);
	return true;
}

function checkDatumHedenVerleden(datum_veld)
{
	var datum = $F(datum_veld);
	if (datum == "dd-mm-jjjj") return true;

	datumCheck = checkDatum(datum_veld);
	datum = $F(datum_veld);
	if (datumCheck == false) return false;

	// ongeldige datum, na vandaag (4)
	var vandaag = new Date();
	vandaag.setHours(0);vandaag.setMinutes(0);vandaag.setSeconds(0);vandaag.setMilliseconds(0);

	if (vandaag < datumCheck)
	{
		throwError("<b>Sorry!</b> De einddatum van de vorige verzekering moet op of voor vandaag liggen.", datum_veld);
		return false;
	}

	// goed (1)
	throwError("", datum_veld);
	$(datum_veld).value = mooieDatum(datum);
	return true;
}

function berekenVerschil(datum1, datum2)
{
	arrDatum = $A(datum1.split("-", 3));
	dag = parseInt(arrDatum[0], 10);
	mnd = parseInt(arrDatum[1], 10);
	jr  = parseInt(arrDatum[2], 10);
	if (isNaN(dag))	dag	= 0;
	if (isNaN(mnd))	mnd	= 0;
	if (isNaN(jr))	jr	= 0;
	datum1 = new Date(jr, (mnd - 1), dag, 0, 0, 0);

	arrDatum = $A(datum2.split("-", 3));
	dag = parseInt(arrDatum[0], 10);
	mnd = parseInt(arrDatum[1], 10);
	jr  = parseInt(arrDatum[2], 10);
	if (isNaN(dag))	dag	= 0;
	if (isNaN(mnd))	mnd	= 0;
	if (isNaN(jr))	jr	= 0;
	datum2 = new Date(jr, (mnd - 1), dag, 0, 0, 0);

	return Math.round((datum2 - datum1) / (24 * 60 * 60 * 1000), 2);
}

function checkRelatieHBAnders()
{
	throwError("", this);
	if (($F("id_relatie_hb") == "a") && $F(this).blank())
	{
		this.clear();
		throwError("Verplicht veld: geef aan wat de relatie van de hoofdbestuurder met de aanvrager is", this);
	}
}

function checkRelatieKHAnders()
{
	throwError("", this);
	if (($F("id_relatie_kh") == "a") && $F(this).blank())
	{
		this.clear();
		throwError("Verplicht veld: geef aan wat de relatie van de kentekenhouder met de aanvrager is", this);
	}
}

function checkRedenOnverzekerdAnders()
{
	throwError("", this);
	if (($F("id_reden_onverzekerd") == "a") && $F(this).blank())
	{
		throwError("Verplicht veld: geef aan waarom de auto een periode onverzekerd was", this);
	}
}

function checkRedenRijontzeggingAnders()
{
	throwError("", this);
	if (($F("id_reden_rijontzegging") == "a") && $F(this).blank())
	{
		throwError("De reden van de rijontzegging moet opgegeven worden.", this);
	}
}

function mooieDatum(datum)
{
	arrDatum = $A(datum.split("-", 3));
	dag = parseInt(arrDatum[0], 10);
	mnd = parseInt(arrDatum[1], 10);
	jr  = parseInt(arrDatum[2], 10);
	if (isNaN(dag))	dag	= 0;
	if (isNaN(mnd))	mnd	= 0;
	if (isNaN(jr))	jr	= 0;

	return pad(dag, 2) + "-" + pad(mnd, 2) + "-" + pad(jr, 4);
}

function getDagenInJaar(maand, jaar)
{
	var aantal = -1;
	switch(maand)
	{
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			aantal = 31;break;
		case 4: case 6: case 9: case 11:
			aantal = 30;break;
		case 2:
			aantal = ((jaar % 4 == 0) && ((!(jaar % 100 == 0)) || (jaar % 400 == 0))) ? 29 : 28;break;
	}
	return aantal;
}

function checkGebdatSvj()
{
	throwError("", $("id_geboortedatum"));

	var re = /^\d{1,2}-\d{1,2}-\d{4}$/;
	var datum = $F("id_geboortedatum");

	if (!datum.empty() && (datum != "dd-mm-jjjj"))
	{
		if (re.test(datum))
		{
			var arrDatum = $A(datum.split("-", 3));
			var dag = parseInt(arrDatum[0], 10);
			var mnd = parseInt(arrDatum[1], 10) - 1;
			var jr  = parseInt(arrDatum[2], 10);
			var gebdat = new Date(jr, mnd, dag, 0, 0, 0);

			svj = $F("id_schadevrije_jaren");
			svj = ((svj == "30+") ? 31 : parseInt(svj, 10)) + 18;
			var totsvj = new Date();
			totsvj.setFullYear(totsvj.getFullYear() - svj)
			totsvj.setHours(0);
			totsvj.setMinutes(0);
			totsvj.setSeconds(0);
			totsvj.setMilliseconds(0);

			if (totsvj < gebdat)
			{
				throwError("De leeftijd van de hoofdbestuurder min het aantal schadevrije jaren is lager dan 18 jaar.\nControleer de geboortedatum en het aantal schadevrije jaren.", $("id_geboortedatum"));
				toggleWijzigen("id_schadevrije_jaren", true);
				return false;
			}
		}
	}
	toggleWijzigen("id_schadevrije_jaren", false);
	return true;
}

function selectGebdat()
{
	var gebdat = $F(this);

	if (gebdat == "dd-mm-jjjj")
	{
		$(this).select();
	}
}

function fillGebdat()
{
	var gebdat = $F(this);

	if (gebdat.blank())
	{
		$(this).value = "dd-mm-jjjj";
	}
}

function formatGeld(getal, valuta, komma)
{
	if (!Object.isString(getal)) getal = getal.toString();

	getal = getal.replace(".", ",");
	var euros = 0, centen = 0;

	if (getal.indexOf(",") == -1)
	{
		euros  = isNaN(parseInt(getal, 10)) ? 0 : parseInt(getal, 10);
	}
	else
	{
		strGetal = getal.split(",");
		strGetal[1] = strGetal[1].substring(0, 2); // eerste twee karakters achter komma vasthouden

		euros  = isNaN(parseInt(strGetal[0], 10)) ? 0 : parseInt(strGetal[0], 10);
		centen = isNaN(parseInt(strGetal[1], 10)) ? 0 : parseInt(strGetal[1], 10);

		if (strGetal[1].length == 1) centen = centen * 10;
	}

	var getalInCenten = euros * 100 + centen;

	euros  = euros.toString();
	centen = pad(centen, 2);

	return {bedrag: (getalInCenten / 100), bedrag_mooi: (valuta + " " + getalInDuizenden(euros) + komma + centen)};
}

function getalInDuizenden(getal)
{
	if (!Object.isString(getal)) getal = getal.toString();

	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(getal))
	{
		getal = getal.replace(rgx, "$1" + "." + "$2");
	}
	return getal;
}

function pad(number, length)
{
	str = number.toString();
	return "0".times(length - str.length) + str;
}

function throwError(txt, event)
{
	if (event && (event.tagName == undefined) && event[0])
	{
		event = event[0];
	}

	if (event && event.hasClassName("frmNew") && txt.empty())
	{
		event.select("p.error").invoke("remove");
	}
	else if (event && event.up(".frmNew"))
	{
		throwErrorFrmNew(txt, event);
		return;
	}
	else if ($("flds_error"))
	{
		if (txt.empty())
		{
			$("flds_error").hide().down("p").update("");
		}
		else
		{
			$("flds_error").show().down("p").update(txt);
			window.scrollTo(0, 0);
		}
	}
}

function throwErrorFrmNew(txt, event)
{
	flds = event.up("fieldset");
	p = $(flds).down("p.error");

	if (p)
	{
		if (txt.empty())
		{
			p.remove();
		}
		else if (p.innerHTML.indexOf(txt) == -1)
		{
			p.update(p.innerHTML + "<br>\n" + txt);
		}
	}
	else if (!txt.empty())
	{
		error = new Element("p", {"class": "error"}).update(txt);
		flds.insert({bottom: error});
		error = null;
	}
}

function saveSession(params, callback)
{
	new Ajax.Request("functions/saveSession.php",
		{
			method: "POST",
			parameters:
				{
					params: Object.toJSON(params)
				},
			onException: function(req, e)
				{
					if (offline && console)
					{
						alert("See console: " + e.message + " on line " + e.lineNumber);
						console.log(e);
					}
				},
			onSuccess: function(response)
				{
					if (callback !== "") callback();
				},
			on418: function(response)
				{
					alert(response.responseText);
				},
			onFailure: function(response)
				{
					alert("Fout\n\nCode: " + response.status + "\nStatus: " + response.statusText);
				}
		});
}

function sendMail(type)
{
	if (sendingMail == false)
	{
		new Ajax.Request("functions/send_mail.php",
			{
				method: "POST",
				parameters:
					{
						type: Object.toJSON(type)
					},
				onCreate: function()
					{
						sendingMail = true;
					},
				onSuccess: function()
					{
						sendingMail = false;
					}
			});
	}
	else
	{
		setTimeout("sendMail('" + type + "')", 10);
	}
}

function showLoad(fkey, soort)
{
	setRequest(fkey, soort, true);
	var id = getIdBijFKey(fkey, soort);

	if ($(id))
	{
		loader = (fkey.substr(0, 7) != "KS30070") ? $(id).up().next("div.loader") : $(id).show();

		if (loader)
		{
			loader.update('<img src="images/loader.gif">').show();
		}
	}
	else if (id == "id_premies")
	{
		if ($("loader"))
		{
			$("loader").show();
		}

		$$("#id_bt_m, #id_bt_k, #id_bt_h, #id_bt_j").invoke("disable");
		$$("a.offerte, a.aanvraag, div.voorwaarden").each(function(a)
			{
				a.addClassName("disabled");
			});

		$$("#div_wa .premies, #div_bc .premies, #div_vc .premies").invoke("update", '<img src="images/loader.gif">');
		$$("#div_wa .premies, #div_bc .premies, #div_vc .premies").invoke("addClassName", "center");
		$$("#div_wa .premie, #div_bc .premie, #div_vc .premie").invoke("removeClassName", "geen_premie");
		$$("#div_wa .aanvragen, #div_bc .aanvragen, #div_vc .aanvragen").invoke("show");
		$$(".dekking_regel .premie_ass_bel").invoke("hide");
		$$(".dekking_regel .premie_ass_bel").invoke("removeClassName", "maand");
		$$(".dekking_regel .premie_ass_bel").invoke("removeClassName", "kwartaal");
		$$(".dekking_regel .premie_ass_bel").invoke("removeClassName", "halfjaar");
		$$(".dekking_regel .premie_ass_bel").invoke("removeClassName", "jaar");
	}
	else if (id == "id_avs")
	{
		$("loader").show();
		[$("div_product"), $("div_avs"), $("div_av_tot")].invoke("hide");
	}
}

function hideLoad(fkey, soort)
{
	setRequest(fkey, soort, false);
	var id = getIdBijFKey(fkey, soort);

	if ($(id))
	{
		loader = (fkey.substr(0, 7) != "KS30070") ? $(id).up().next("div.loader") : x = null;

		if (loader)
		{
			loader.update("").hide();
		}
	}
	else if (id == "id_premies")
	{
		if ($("loader"))
		{
			$("loader").hide().remove();
		}
	}
	else if (id == "id_avs")
	{
		$("loader").hide();
		[$("div_product"), $("div_avs"), $("div_av_tot")].invoke("show");
	}
}

function getIdBijFKey(fkey, soort)
{
	switch(fkey.substr(0, 7))
	{
		case "KS30000":return "id_" + ids[soort];break;
		case "KS30010":return "id_merk";break;
		case "KS30020":return "id_model";break;
		case "KS30030":return "id_typen";break;
		case "KS30070":return "id_premies";break;
		case "KS30290":return "id_avs";break;
		case "KS30300":return "id_kenteken";break;
	}
}

function toggleWijzigen(id, wijzig)
{
	input = $(id);

	if (wijzig)
	{
		input.up().next("div.div_answer").update("").hide();
		input.up().show();
		input.up().next("div.wijzigen").update("");

		if (id == "id_kenteken")
		{
			$("flds_merkmodel").hide();
		}
		else if (id == "id_typen")
		{
			$$("#flds_nieuwwaarde, #flds_dagwaarde, #flds_beveiliging").invoke("hide");
			$("id_nieuwwaarde").disable().value = "";
			$("id_dagwaarde").disable().value = "";
			$("id_beveiligingsklasse").disable().selectedIndex = 0;
			toggleWijzigen("id_nieuwwaarde", true);
			toggleWijzigen("id_dagwaarde", true);
			toggleWijzigen("id_beveiligingsklasse", true);
		}

		setTimeout(function()
			{
				try
				{
					input.focus();
				}
				catch(e) {}
			}, 1);
	}
	else
	{
		if (in_array(id, ["id_soort_voertuig_pa", "id_soort_voertuig_ba"]))
		{
			soort_voertuig_paba = $RF("frmPremieBerekenen", "soort_voertuig");

			switch (soort_voertuig_paba)
			{
				case "Personenauto":
					$("frmPremieBerekenen")["pa_ba"].value = "pa";
					break;
				case "Bestelauto":
					$("frmPremieBerekenen")["pa_ba"].value = "ba";
					break;
				default:
					$("frmPremieBerekenen")["pa_ba"].value = "";
					break;
			}

			input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
			input.up().hide();
			input.up().next("div.div_answer").update(soort_voertuig_paba).show();

			$("id_bouwmaand").enable();
			$("id_bouwjaar").enable();

			getMerken();
			toggleWijzigen("id_merk", true);
		}
		else if (id == "id_typen")
		{
			type = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!type.empty())
			{
				$$("#flds_nieuwwaarde, #flds_dagwaarde, #flds_beveiliging").invoke("show");
				setOverigeInfo();

				bouwmaand = $F($("frmPremieBerekenen")["bouwmaand"]);
				bouwjaar = $F($("frmPremieBerekenen")["bouwjaar"]);

				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(type).show();
				type_begin = type.substr(0, type.indexOf(", "));
				$("frmPremieBerekenen")["type_naam"].value = type_begin;

				$("id_nieuwwaarde").enable();
				$("id_dagwaarde").enable();
				$("id_beveiligingsklasse").enable();

				getProducten();
			}
		}
		else if (id == "id_schadevrije_jaren")
		{
			schadevrije_jaren = $F(input);

			if (!schadevrije_jaren.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(schadevrije_jaren + " jaar").show();

				$("id_postcode").enable();
			}
		}
		else if (id == "id_postcode")
		{
			postcode = $F(id);

			if (!postcode.empty() && (postcode.length == 6))
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(postcode).show();

				$("id_kilometers").enable();
			}
		}
		else if (id == "id_kilometers")
		{
			kilometers = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!kilometers.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(kilometers + " kilometers").show();

				$("id_geboortedatum").enable();
			}
		}
		else if (id == "id_geboortedatum")
		{
			geboortedatum = $F(id);

			if (!geboortedatum.empty() && (geboortedatum.length >= 8) && (geboortedatum.length <= 10))
			{
				arrDatum = geboortedatum.split("-");

				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(arrDatum[0] + " " + arrMaanden[parseInt(arrDatum[1], 10) - 1] + " " + arrDatum[2]).show();

				getProducten();
			}
		}
		else if (id == "id_accessoires")
		{
			accessoires = $F(id);

			if (!accessoires.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				geld = formatGeld(accessoires, "€", ",");
				$(id).value = geld.bedrag;
				input.up().next("div.div_answer").update(geld.bedrag_mooi).show();

				$("id_geluidsapparatuur").enable();
			}
		}
		else if (id == "id_geluidsapparatuur")
		{
			geluidsapparatuur = $F(id);

			if (!geluidsapparatuur.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				geld = formatGeld(geluidsapparatuur, "€", ",");
				$(id).value = geld.bedrag;
				input.up().next("div.div_answer").update(geld.bedrag_mooi).show();

				$("id_schadevrije_jaren").enable();
			}
		}
		else if (in_array(id, ["id_gebruik_p", "id_gebruik_z"]))
		{
			gebruik_jn = $RF("frmPremieBerekenen", "gebruik");

			input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
			input.up().hide();
			input.up().next("div.div_answer").update(gebruik_jn).show();

			$("id_btw_j").enable();
			$("id_btw_n").enable();
			$("frmPremieBerekenen")["gebruik_particulier"].value = (gebruik_jn == "Particulier") ? "ja" : "nee";
		}
		else if (in_array(id, ["id_btw_j", "id_btw_n"]))
		{
			btw_jn = $RF("frmPremieBerekenen", "btw");
			setOverigeInfo();

			input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
			input.up().hide();
			input.up().next("div.div_answer").update(btw_jn).show();

			$("id_accessoires").enable();
			$("frmPremieBerekenen")["incl_btw"].value = (btw_jn == "Ja") ? "nee" : "ja";

			toggleWijzigen("id_nieuwwaarde", true);
			toggleWijzigen("id_nieuwwaarde", false);
			toggleWijzigen("id_dagwaarde", true);
			toggleWijzigen("id_dagwaarde", false);
		}
		else if (id == "id_kenteken")
		{
			kenteken = $F(input).replace(/-/g, "").toUpperCase();

			input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
			input.up().hide();
			input.up().next("div.div_answer").update(kenteken).show();

			$("id_typen").enable();
			setTimeout(function()
				{
					try
					{
						$("id_typen").focus();
					}
					catch(e) {}
				}, 1);
		}
		else if (id == "id_bouwmaand")
		{
			bouwmaand = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";
			selBouwjaar = input.next("select#id_bouwjaar");
			bouwjaar = (selBouwjaar.selectedIndex >= 0) ? selBouwjaar.options[selBouwjaar.selectedIndex].text : "";

			input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
			input.up().hide();
			input.up().next("div.div_answer").update(bouwmaand + " " + bouwjaar).show();

			$("id_merk").enable();
		}
		else if (id == "id_merk")
		{
			merk = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!merk.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(merk).show();

				$("id_model").enable();
				$("frmPremieBerekenen")["merk_naam"].value = merk;
				toggleWijzigen("id_model", true);
			}
		}
		else if (id == "id_model")
		{
			model = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!model.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(model).show();

				$("id_brandstof").enable();
				$("frmPremieBerekenen")["model_naam"].value = model;

				getProducten();

				toggleWijzigen("id_typen", false);
			}
		}
		else if (id == "id_brandstof")
		{
			brandstof = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!brandstof.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(brandstof).show();
				$("frmPremieBerekenen")["brandstof_naam"].value = brandstof;

				$("id_transmissie").enable();
			}
		}
		else if (id == "id_transmissie")
		{
			transmissie = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!transmissie.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(transmissie).show();
				$("frmPremieBerekenen")["transmissie_naam"].value = transmissie;

				$("id_koetswerk").enable();
			}
		}
		else if (id == "id_koetswerk")
		{
			koetswerk = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!koetswerk.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(koetswerk).show();
				$("frmPremieBerekenen")["koetswerk_naam"].value = koetswerk;

				input = $("id_brandstof");
				brandstof = input.options[input.selectedIndex].text;

				input = $("id_transmissie");
				transmissie = input.options[input.selectedIndex].text;
				if (!brandstof.empty() && !transmissie.empty())
				{
					$("id_typen").enable();
				}
			}
		}
		else if (id == "id_nieuwwaarde")
		{
			nieuwwaarde = $F(id);

			if (!nieuwwaarde.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				geld = formatGeld(nieuwwaarde, "€", ",");
				$(id).value = geld.bedrag;
				input.up().next("div.div_answer").update(geld.bedrag_mooi).show();
			}
		}
		else if (id == "id_dagwaarde")
		{
			dagwaarde = $F(id);

			if (!dagwaarde.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				geld = formatGeld(dagwaarde, "€", ",");
				$(id).value = geld.bedrag;
				input.up().next("div.div_answer").update(geld.bedrag_mooi).show();
			}
		}
		else if (id == "id_beveiligingsklasse")
		{
			beveiliging = (input.selectedIndex >= 0) ? input.options[input.selectedIndex].text : "";

			if (!beveiliging.empty())
			{
				input.up().next("div.wijzigen").update("<a href=\"\" onclick=\"toggleWijzigen('" + id + "', true); return false;\">Wijzigen</a>");
				input.up().hide();
				input.up().next("div.div_answer").update(beveiliging).show();
				$("frmPremieBerekenen")["beveiligingsklasse_naam"].value = beveiliging;

				$("id_gebruik_p").enable();
				$("id_gebruik_z").enable();
			}
		}
	}

	toggleFieldsets();
	checkAllesIngevuld(id);
}

function toggleFieldsets()
{
	var blue;
	$$("fieldset.flds_main").each(function(flds_main)
		{
			blue = false;
			flds_main.select("fieldset").each(function(fieldset)
				{
					if ((fieldset.getStyle("display") != "none") && !fieldset.hasClassName("flds_sc1") && !fieldset.hasClassName("flds_sc2"))
					{
						if (!blue && fieldset.hasClassName("blue")) fieldset.removeClassName("blue");
						else if (blue && !fieldset.hasClassName("blue")) fieldset.addClassName("blue");

						blue = !blue;
					}
				});
		});
}

function checkAllesIngevuld(id)
{
	var gevuld = 0, teller = 0, indexCurrent = -1, indexFirstEmpty = -1, indexFirstEmptyAfter = -1;
	var arrAntwoorden = $$(".div_answer");
	arrAntwoorden.each(function(antwoord)
		{
			if (antwoord.descendantOf($(id).up().up()))
			{
				indexCurrent = teller;
			}

			if (!antwoord.innerHTML.empty())
			{
				gevuld += 1;
			}
			else
			{
				if (indexFirstEmpty == -1)
				{
					indexFirstEmpty = teller;
				}

				if ((teller > indexCurrent) && (indexFirstEmptyAfter == -1) && (indexCurrent >= 0))
				{
					indexFirstEmptyAfter = teller;
				}
			}

			teller += 1;
		});

	if (teller == gevuld)
	{
		$("volgende").show();

		setTimeout(function()
			{
				$("volgende").focus();
			}, 1);
	}
	else
	{
		$("volgende").hide();

		if (indexFirstEmptyAfter >= 0)
		{
			input = $(arrAntwoorden[indexFirstEmptyAfter]).previous().firstDescendant();

			if (input)
			{
				var input_id = input.id;
				var input_value = null;

				if (input.type.toLowerCase() == "radio")
				{
					pos = input_id.lastIndexOf("_");
					input_name = input_id.substring(3, pos);
					input_value = $RF("frmPremieBerekenen", input_name);
				}
				else if ((input.type.toLowerCase() == "text") || (input.tagName.toLowerCase() == "select"))
				{
					input_value = $F(input);

					if ((input_id == "id_geboortedatum") && (input_value == "dd-mm-jjjj"))
					{
						input_value = "";
					}
				}

				if ((input_value != null) && !input_value.blank())
				{
					toggleWijzigen(input_id, false);
				}
				else
				{
					setTimeout(function()
						{
							try
							{
								input.focus();
							}
							catch(e) {}
						}, 1);
				}
			}
		}
		else if (indexFirstEmpty >= 0)
		{
			input = $(arrAntwoorden[indexFirstEmpty]).previous().firstDescendant();
			if (input)
			{
				setTimeout(function()
					{
						try
						{
							input.focus();
						}
						catch(e) {}
					}, 1);
			}
		}
	}
}

function setFocused()
{
	focusedElement[this.id] = true;
}

function unsetFocused()
{
	focusedElement[this.id] = false;
	getMerken();
}

function toggleAntwoord(id)
{
	var vraag = (id.hasClassName("icon")) ? id.up() : id;
	var i = 0, nextVraag = false;

	$$(".antwoord").invoke("hide");
	$$(".icon").each(function(icon)
		{
			icon.src = "images/vraag.jpg";
		});

	resizeOfferte();

	if (vraag.hasClassName("open"))
	{
		vraag.toggleClassName("open");
		return;
	}

	$$(".vraag.open").invoke("removeClassName", "open");

	while ((antwoord = vraag.next(i)) && !nextVraag)
	{
		if (antwoord.hasClassName("antwoord"))
		{
			if (!vraag.hasClassName("open"))
			{
				vraag.toggleClassName("open");
			}

			vraag.down("img").src = "images/antwoord.jpg";
			antwoord.show();
			resizeOfferte();
			i++;
		}
		else
		{
			nextVraag = true;
		}
	}
}

function submitKenteken(event)
{
	Event.stop(event);
	var f = $("frmZoekKenteken");

	if (this.href)
	{
		if (this.href.indexOf("kenteken=onbekend") !== -1)
		{
			f["iwhk"].value = "nee";
		}
	}

	f.submit();
}

function submitPremieBerekenen(event)
{
	Event.stop(event);
	$("frmPremieBerekenen").submit();
}

function submitBerekening(event)
{
	Event.stop(event);

	if (this.hasClassName("disabled")) return;

	var f = $("frmPremies");
	var dekking = this.up("div", 1).id.substr(4);

	if ($F(f["kenteken"]).blank() && this.hasClassName("aanvraag"))
	{
		alert("De weergegeven premies zijn berekend zonder gebruik te maken van een kenteken.\nHet is niet mogelijk een verzekering aan te vragen, zonder een berekening op basis van een kenteken.")
		return;
	}

	f["dekking"].value = dekking;
	f["product"].value = $F(f["keuze_product_" + dekking]);
	f["productid"].value = $F(f["keuze_product_" + dekking + "_pid"]);
	f["maatschappijnaam"].value = $F(f["keuze_product_" + dekking + "_mn"]);
	f["premie"].value = $F(f["keuze_product_" + dekking + "_premie"]);
	f["eigenrisico"].value = $F(f["keuze_product_" + dekking + "_er"]);
	f["poliskosten"].value = $F(f["keuze_product_" + dekking + "_pk"]);

	f.action = this.href;
	f.submit();
}

function submitOfferte(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmOfferte");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Aanvrager */
		if ($F(f["emailadres"]).blank())
		{
			f["emailadres"].clear();
			throwError("Verplicht veld: vul uw e-mailadres in", f["emailadres"]);
			if (!fField) fField = "id_emailadres";
		}
		else if (!checkEmailadres($F(f["emailadres"])))
		{
			throwError("Geen geldige invoer: vul een geldig e-mailadres in bij 'Uw e-mailadres'", f["emailadres"]);
			if (!fField) fField = "id_emailadres";
		}

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.error(e);
	}
}

function submitAV(event)
{
	Event.stop(event);

	var f = $("frmAVs");

	if (this.href)
	{
		if (f.action !== this.href)
		{
			f.action = this.href;
		}
	}

	f.submit();
}

function submitGegevensAanvrager(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmGegevensAanvrager");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Aanvrager */
		if ($("id_bedrijfsnaam") != null)
		{
			if ($F(f["bedrijfsnaam"]).blank())
			{
				f["bedrijfsnaam"].clear();
				throwError("Verplicht veld: vul uw bedrijfsnaam in", f["bedrijfsnaam"]);
				if (!fField) fField = "id_bedrijfsnaam";
			}
		}

		if (!$RF(f, "geslacht"))
		{
			throwError("Verplicht veld: selecteer uw geslacht", f["geslacht"]);
			if (!fField) fField = "id_geslacht_m";
		}

		if ($F(f["achternaam"]).blank())
		{
			f["achternaam"].clear();
			throwError("Verplicht veld: vul uw achternaam in", f["achternaam"]);
			if (!fField) fField = "id_achternaam";
		}

		if ($F(f["voorletters"]).blank())
		{
			f["voorletters"].clear();
			throwError("Verplicht veld: vul uw voorletters in", f["voorletters"]);
			if (!fField) fField = "id_voorletters";
		}

		if ($F(f["straatnaam"]).blank())
		{
			f["straatnaam"].clear();
			throwError("Verplicht veld: vul uw achternaam in", f["straatnaam"]);
			if (!fField) fField = "id_straatnaam";
		}

		if ($F(f["huisnummer"]).blank())
		{
			f["huisnummer"].clear();
			throwError("Verplicht veld: vul uw huisnummer in", f["huisnummer"]);
			if (!fField) fField = "id_huisnummer";
		}

		if ($F(f["postcode_av"]).blank())
		{
			f["postcode_av"].clear();
			throwError("Verplicht veld: vul uw postcode in", f["postcode_av"]);
			if (!fField) fField = "id_postcode_av";
		}
		else if (!checkPostcode($F(f["postcode_av"])))
		{
			throwError("Geen geldige invoer: vul een geldige postcode (1111XX) in", f["postcode_av"]);
			if (!fField) fField = "id_postcode_av";
		}

		if ($F(f["woonplaats"]).blank())
		{
			f["woonplaats"].clear();
			throwError("Verplicht veld: vul uw woonplaats in", f["woonplaats"]);
			if (!fField) fField = "id_woonplaats";
		}

		if ($F(f["telefoonnummer"]).blank() && $F(f["mobielnummer"]).blank())
		{
			throwError("Verplicht veld: vul uw telefoonnummer óf uw mobiele telefoonnummer in", f["telefoonnummer"]);
			throwError("Verplicht veld: vul uw telefoonnummer óf uw mobiele telefoonnummer in", f["mobielnummer"]);
			if (!fField) fField = "id_telefoonnummer";
		}
		else
		{
			if (!$F(f["telefoonnummer"]).blank() && !checkTelefoonnummer($F(f["telefoonnummer"]), false))
			{
				throwError("Geen geldige invoer: vul een geldig telefoonnummer (10 cijfers, beginnend met een 0) in", f["telefoonnummer"]);
				if (!fField) fField = "id_telefoonnummer";
			}
			else if (!$F(f["mobielnummer"]).blank() && !checkTelefoonnummer($F(f["mobielnummer"]), true))
			{
				throwError("Geen geldige invoer: vul een geldig mobiel telefoonnummer (10 cijfers, beginnend met 06) in", f["mobielnummer"]);
				if (!fField) fField = "id_mobielnummer";
			}
		}

		if ($F(f["geboortedatum_av"]).blank() || ($F(f["geboortedatum_av"]) == "dd-mm-jjjj"))
		{
			throwError("Verplicht veld: vul uw geboortedatum in", f["geboortedatum_av"]);
			f["geboortedatum_av"].value = "dd-mm-jjjj";
			if (!fField) fField = "id_geboortedatum_av";
		}

		if ($F(f["emailadres"]).blank())
		{
			f["emailadres"].clear();
			throwError("Verplicht veld: vul uw e-mailadres in", f["emailadres"]);
			if (!fField) fField = "id_emailadres";
		}
		else if (!checkEmailadres($F(f["emailadres"])))
		{
			throwError("Geen geldige invoer: vul een geldig e-mailadres in bij 'Uw e-mailadres'", f["emailadres"]);
			if (!fField) fField = "id_emailadres";
		}

		if ($F(f["emailadres_tc"]).blank())
		{
			f["emailadres_tc"].clear();
			throwError("Verplicht veld: vul nogmaals uw e-mailadres in", f["emailadres_tc"]);
			if (!fField) fField = "id_emailadres_tc";
		}
		else if (!checkEmailadres($F(f["emailadres_tc"])))
		{
			throwError("Geen geldige invoer: vul een geldig e-mailadres in bij 'Nogmaals uw e-mailadres'", f["emailadres_tc"]);
			if (!fField) fField = "id_emailadres_tc";
		}
		else if ($F(f["emailadres"]) != $F(f["emailadres_tc"]))
		{
			throwError("Geen geldige invoer: de ingevoerde e-mailadressen komen niet overeen.", f["emailadres_tc"]);
			if (!fField) fField = "id_emailadres_tc";
		}

		if (($F(f["beroep"]) == -1) || f["beroep"].disabled)
		{
			throwError("Verplicht veld: kies uw beroep", f["beroep"]);
			if (!fField) fField = "id_beroep";
		}
		/* Aanvrager */

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function submitGegevensAuto(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmGegevensAuto");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Gegevens auto */
		if ($F(f["meldcode"]).blank())
		{
			f["meldcode"].clear();
			throwError("Verplicht veld: vul de meldcode van de auto in", f["meldcode"]);
			if (!fField) fField = "id_meldcode";
		}
		else if (!checkMeldcode($F(f["meldcode"])))
		{
			throwError("Geen geldige invoer: vul een geldige meldcode (1111) in", f["meldcode"]);
			if (!fField) fField = "id_meldcode";
		}

		if (!$F(f["kilometerstand"]).blank())
		{
			if (!checkKilometerstand($F(f["kilometerstand"])))
			{
				throwError("Geen geldige invoer: vul een geldige kilometerstand (1 - 9999999) in", f["kilometerstand"]);
				if (!fField) fField = "id_kilometerstand";
			}
		}
		/* Gegevens auto */


		/* Gebruik */
		if ($F(f["gebruik"]) == -1)
		{
			throwError("Verplicht veld: geef aan waar de auto voornamelijk voor gebruikt wordt", f["gebruik"]);
			if (!fField) fField = "id_gebruik";
		}
		/* Gebruik */


		/* Hoofdbestuurder */
		if (!$RF(f, "hoofdbestuurder"))
		{
			throwError("Verplicht veld: geef aan of u de hoofdbestuurder van de auto bent", f["hoofdbestuurder"]);
			if (!fField) fField = "id_hoofdbestuurder_j";
		}
		else if ($RF(f, "hoofdbestuurder") == "nee")
		{
			if (!$RF(f, "geslacht_hb"))
			{
				throwError("Verplicht veld: selecteer het geslacht van de hoofdbestuurder", f["geslacht_hb"]);
				if (!fField) fField = "id_geslacht_hb_m";
			}

			if ($F(f["achternaam_hb"]).blank())
			{
				f["achternaam_hb"].clear();
				throwError("Verplicht veld: vul de achternaam van de hoofdbestuurder in", f["achternaam_hb"]);
				if (!fField) fField = "id_achternaam_hb";
			}

			if ($F(f["voorletters_hb"]).blank())
			{
				f["voorletters_hb"].clear();
				throwError("Verplicht veld: vul de voorletters van de hoofdbestuurder in", f["voorletters_hb"]);
				if (!fField) fField = "id_voorletters_hb";
			}

			if ($F(f["straatnaam_hb"]).blank())
			{
				f["straatnaam_hb"].clear();
				throwError("Verplicht veld: vul de achternaam van de hoofdbestuurder in", f["straatnaam_hb"]);
				if (!fField) fField = "id_straatnaam_hb";
			}

			if ($F(f["huisnummer_hb"]).blank())
			{
				f["huisnummer_hb"].clear();
				throwError("Verplicht veld: vul het huisnummer van de hoofdbestuurder in", f["huisnummer_hb"]);
				if (!fField) fField = "id_huisnummer_hb";
			}

			if ($F(f["postcode_hb"]).blank())
			{
				f["postcode_hb"].clear();
				throwError("Verplicht veld: vul de postcode van de hoofdbestuurder in", f["postcode_hb"]);
				if (!fField) fField = "id_postcode_hb";
			}
			else if (!checkPostcode($F(f["postcode_hb"])))
			{
				throwError("Geen geldige invoer: vul een geldige postcode (1111XX) in", f["postcode_hb"]);
				if (!fField) fField = "id_postcode_hb";
			}

			if ($F(f["woonplaats_hb"]).blank())
			{
				f["woonplaats_hb"].clear();
				throwError("Verplicht veld: vul de woonplaats van de hoofdbestuurder in", f["woonplaats_hb"]);
				if (!fField) fField = "id_woonplaats_hb";
			}

			if ($F(f["geboortedatum_hb"]).blank() || ($F(f["geboortedatum_hb"]) == "dd-mm-jjjj"))
			{
				throwError("Verplicht veld: vul de geboortedatum van de hoofdbestuurder in", f["geboortedatum_hb"]);
				f["geboortedatum_hb"].value = "dd-mm-jjjj";
				if (!fField) fField = "id_geboortedatum_hb";
			}

			if ($F(f["relatie_hb"]) == -1)
			{
				throwError("Verplicht veld: geef aan wat de relatie van de hoofdbestuurder met de aanvrager is", f["relatie_hb"]);
				if (!fField) fField = "id_relatie_hb";
			}
			else if (($F(f["relatie_hb"]) == "a") && $F("id_relatie_hb_anders").blank())
			{
				f["relatie_hb_anders"].clear();
				throwError("Verplicht veld: geef aan wat de relatie van de hoofdbestuurder met de aanvrager is", f["relatie_hb_anders"]);
				if (!fField) fField = "id_relatie_hb_anders";
			}
		}

		if (!$RF(f, "geldig_rijbewijs_hb"))
		{
			throwError("Verplicht veld: geef aan of de hoofdbestuurder in het bezit is van een geldig Nederlands rijbewijs", f["geldig_rijbewijs_hb"]);
			if (!fField) fField = "id_geldig_rijbewijs_hb_j";
		}
		else if ($RF(f, "geldig_rijbewijs_hb") == "nee")
		{
			if (!$RF(f, "ander_land_hb_gr"))
			{
				throwError("Verplicht veld: geef aan of de hoofdbestuurder in het bezit is van een geldig rijbewijs uit een ander land", f["ander_land_hb_gr"]);
				if (!fField) fField = "id_ander_land_hb_gr_j";
			}
			else if ($RF(f, "ander_land_hb_gr") == "ja")
			{
				if ($F(f["land_rijbewijs_hb_lr"]) == -1)
				{
					throwError("Verplicht veld: kies een land", f["land_rijbewijs_hb_lr"]);
					if (!fField) fField = "id_land_rijbewijs_hb_lr";
				}
			}
		}
		/* Hoofdbestuurder */


		/* Kentekenhouder */
		if (!$RF(f, "kentekenhouder"))
		{
			throwError("Verplicht veld: geef aan of het kenteken op uw naam staat of komt", f["kentekenhouder"]);
			if (!fField) fField = "id_kentekenhouder_j";
		}
		else if ($RF(f, "kentekenhouder") == "nee")
		{
			if (!$RF(f, "geslacht_kh"))
			{
				throwError("Verplicht veld: selecteer het geslacht van de kentekenhouder", f["geslacht_kh"]);
				if (!fField) fField = "id_geslacht_kh_m";
			}

			if ($F(f["achternaam_kh"]).blank())
			{
				f["achternaam_kh"].clear();
				throwError("Verplicht veld: vul de achternaam van de kentekenhouder in", f["achternaam_kh"]);
				if (!fField) fField = "id_achternaam_kh";
			}

			if ($F(f["voorletters_kh"]).blank())
			{
				f["voorletters_kh"].clear();
				throwError("Verplicht veld: vul de voorletters van de kentekenhouder in", f["voorletters_kh"]);
				if (!fField) fField = "id_voorletters_kh";
			}

			if ($F(f["straatnaam_kh"]).blank())
			{
				f["straatnaam_kh"].clear();
				throwError("Verplicht veld: vul de achternaam van de kentekenhouder in", f["straatnaam_kh"]);
				if (!fField) fField = "id_straatnaam_kh";
			}

			if ($F(f["huisnummer_kh"]).blank())
			{
				f["huisnummer_kh"].clear();
				throwError("Verplicht veld: vul het huisnummer van de kentekenhouder in", f["huisnummer_kh"]);
				if (!fField) fField = "id_huisnummer_kh";
			}

			if ($F(f["postcode_kh"]).blank())
			{
				f["postcode_kh"].clear();
				throwError("Verplicht veld: vul de postcode van de kentekenhouder in", f["postcode_kh"]);
				if (!fField) fField = "id_postcode_kh";
			}
			else if (!checkPostcode($F(f["postcode_kh"])))
			{
				throwError("Geen geldige invoer: vul een geldige postcode (1111XX) in", f["postcode_kh"]);
				if (!fField) fField = "id_postcode_kh";
			}

			if ($F(f["woonplaats_kh"]).blank())
			{
				f["woonplaats_kh"].clear();
				throwError("Verplicht veld: vul de woonplaats van de kentekenhouder in", f["woonplaats_kh"]);
				if (!fField) fField = "id_woonplaats_kh";
			}

			if ($F(f["geboortedatum_kh"]).blank() || ($F(f["geboortedatum_kh"]) == "dd-mm-jjjj"))
			{
				throwError("Verplicht veld: vul de geboortedatum van de kentekenhouder in", f["geboortedatum_kh"]);
				f["geboortedatum_kh"].value = "dd-mm-jjjj";
				if (!fField) fField = "id_geboortedatum_kh";
			}

			if ($F(f["relatie_kh"]) == -1)
			{
				throwError("Verplicht veld: geef aan wat de relatie van de kentekenhouder met de aanvrager is", f["relatie_kh"]);
				if (!fField) fField = "id_relatie_kh";
			}
			else if (($F(f["relatie_kh"]) == "a") && $F("id_relatie_kh_anders").blank())
			{
				f["relatie_kh_anders"].clear();
				throwError("Verplicht veld: geef aan wat de relatie van de kentekenhouder met de aanvrager is", f["relatie_kh_anders"]);
				if (!fField) fField = "id_relatie_kh_anders";
			}
		}

		if (checkDatum(f["tenaamstelling"]) === false)
		{
			throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", f["tenaamstelling"]);
			f["tenaamstelling"].value = "dd-mm-jjjj";
			if (!fField) fField = "id_tenaamstelling";
		}

		if (checkDatum(f["ingangsdatum"]) === false)
		{
			throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", f["ingangsdatum"]);
			f["ingangsdatum"].value = "dd-mm-jjjj";
			if (!fField) fField = "id_ingangsdatum";
		}
		else if (checkDatumHedenToekomst(f["ingangsdatum"]) === false)
		{
			if (!fField) fField = "id_ingangsdatum";
		}
		else
		{
			toggleVerschilTenaamstellingIngangsdatum();
		}

		verschil = berekenVerschil($F(f["tenaamstelling"]), $F(f["ingangsdatum"]));
		if (verschil > 14)
		{
			if (!$RF(f, "eerder_verzekerd_tl"))
			{
				throwError("Verplicht veld: geef aan u deze auto eerder verzekerd heeft gehad", f["eerder_verzekerd_tl"]);
				if (!fField) fField = "id_eerder_verzekerd_j";
			}
			else if ($RF(f, "eerder_verzekerd_tl") == "ja")
			{
				if (checkDatum(f["einddatum_ev"]) === false)
				{
					throwError("Geen geldige invoer: vul een geldige datum (dd-mm-jjjj) in", f["einddatum_ev"]);
					f["einddatum_ev"].value = "dd-mm-jjjj";
					if (!fField) fField = "id_einddatum_ev";
				}
				else
				{
					toggleControleIngangsdatumEinddatum();
				}
			}
			else
			{
				toggleEerderVerzekerd();
			}

			if (($RF(f, "eerder_verzekerd_tl") == "nee") || (($RF(f, "eerder_verzekerd_tl") == "ja") && (checkDatum(f["einddatum_ev"]) !== false) && (checkDatum(f["ingangsdatum"]) !== false) && (berekenVerschil($F(f["einddatum_ev"]), $F(f["ingangsdatum"])) > 14)))
			{
				if ($F(f["reden_onverzekerd"]) == -1)
				{
					throwError("Verplicht veld: geef aan waarom de auto een periode onverzekerd was", f["reden_onverzekerd"]);
					if (!fField) fField = "id_reden_onverzekerd";
				}
				else if (($F(f["reden_onverzekerd"]) == "a") && $F("id_reden_onverzekerd_anders").blank())
				{
					f["reden_onverzekerd_anders"].clear();
					throwError("Verplicht veld: geef aan waarom de auto een periode onverzekerd was", f["reden_onverzekerd_anders"]);
					if (!fField) fField = "id_reden_onverzekerd_anders";
				}
			}
		}
		else if (verschil < 0)
		{
			throwError("Geen geldige invoer: de ingangsdatum moet op of na de tenaamstellingsdatum liggen", f["ingangsdatum"]);
		}
		/* Kentekenhouder */

		if ($F(f["geboortedatum_kh"]) == "dd-mm-jjjj") f["geboortedatum_kh"].value = "";
		if ($F(f["tenaamstelling"]) == "dd-mm-jjjj") f["tenaamstelling"].value = "";
		if ($F(f["ingangsdatum"]) == "dd-mm-jjjj") f["ingangsdatum"].value = "";
		if ($F(f["einddatum_ev"]) == "dd-mm-jjjj") f["einddatum_ev"].value = "";

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function submitAcceptatieVragen(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmAcceptatieVragen");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Heeft u of een van de bestuurders */
		if (!$RF(f, "ooit_rijontzegging"))
		{
			throwError("Verplicht veld: geef aan of u of een van de bestuurders ooit een ontzegging van de rijbevoegdheid gehad heeft", f["ooit_rijontzegging"]);
			if (!fField) fField = "id_ooit_rijontzegging_j";
		}
		else if ($RF(f, "ooit_rijontzegging") == "ja")
		{
			if ($F(f["jaar_rijontzegging"]) == -1)
			{
				throwError("Verplicht veld: geef aan in welk jaar de rijontzegging opgelegd is", f["jaar_rijontzegging"]);
				if (!fField) fField = "id_jaar_rijontzegging";
			}

			if ($F(f["reden_rijontzegging"]) == -1)
			{
				throwError("Verplicht veld: geef aan wat de reden van deze rijontzegging is", f["reden_rijontzegging"]);
				if (!fField) fField = "id_reden_rijontzegging";
			}

			if ($F(f["duur_rijontzegging"]) == -1)
			{
				throwError("Verplicht veld: geef aan wat de duur van deze rijontzegging is", f["duur_rijontzegging"]);
				if (!fField) fField = "id_duur_rijontzegging";
			}
		}

		if (!$RF(f, "lichamelijke_gebreken"))
		{
			throwError("Verplicht veld: geef aan of u of een van de bestuurders lichamelijke gebreken die de rijvaardigheid beïnvloeden heeft", f["lichamelijke_gebreken"]);
			if (!fField) fField = "id_lichamelijke_gebreken_j";
		}
		else if ($RF(f, "lichamelijke_gebreken") == "ja")
		{
			if (!$RF(f, "aantekening_gebrek"))
			{
				throwError("Verplicht veld: geef aan of er een aantekening op het rijbewijs inzake dit lichamelijk gebrek staat ", f["aantekening_gebrek"]);
				if (!fField) fField = "id_aantekening_gebrek_j";
			}
		}

		if (!$RF(f, "strafrechtelijk_verleden"))
		{
			throwError("Verplicht veld: geef aan of u of een van de bestuurders de afgelopen 8 jaar een strafrechtelijk verleden opgebouwd heeft", f["strafrechtelijk_verleden"]);
			if (!fField) fField = "id_strafrechtelijk_verleden_j";
		}
		else if ($RF(f, "strafrechtelijk_verleden") == "ja")
		{
			if ($F(f["jaar_veroordeling"]) == -1)
			{
				throwError("Verplicht veld: geef aan in welk jaar de veroordeling plaats heeft gevonden", f["jaar_veroordeling"]);
				if (!fField) fField = "id_jaar_veroordeling";
			}

			if ($F(f["toelichting_sv"]).blank())
			{
				f["toelichting_sv"].clear();
				throwError("Verplicht veld: geef een toelichting op het strafrechtelijke verleden", f["toelichting_sv"]);
				if (!fField) fField = "id_toelichting_sv";
			}
		}

		if (!$RF(f, "schadeverleden"))
		{
			throwError("Verplicht veld: geef aan of u of een van de bestuurders de afgelopen 5 jaar schade met een motorvoertuig (ongeacht de schuldvraag) heeft gehad", f["schadeverleden"]);
			if (!fField) fField = "id_schadeverleden_j";
		}
		else if ($RF(f, "schadeverleden") == "ja")
		{
			if ($F(f["aantal_schaden"]) == -1)
			{
				throwError("Verplicht veld: geef aan hoeveel schaden u in de afgelopen 5 jaar met een motorvoertuig (ongeacht de schuldvraag) heeft gehad", f["aantal_schaden"]);
				if (!fField) fField = "id_aantal_schaden";
			}
			else
			{
				if (in_array($F(f["aantal_schaden"]), [1, 2]))
				{
					if ($F(f["schadejaar_1"]) == -1)
					{
						throwError("Verplicht veld: geef aan in welk jaar de schade plaatsvond", f["schadejaar_1"]);
						if (!fField) fField = "id_schadejaar_1";
					}

					if ($F(f["schadebedrag_1"]) == -1)
					{
						throwError("Verplicht veld: geef aan wat de hoogte van het schadebedrag was", f["schadebedrag_1"]);
						if (!fField) fField = "id_schadebedrag_1";
					}

					if ($F(f["schadeoorzaak_1"]) == -1)
					{
						throwError("Verplicht veld: geef aan wat de oorzaak van de schade was", f["schadeoorzaak_1"]);
						if (!fField) fField = "id_schadeoorzaak_1";
					}

					if ($F(f["omschrijving_schade_1"]).blank())
					{
						f["omschrijving_schade_1"].clear();
						throwError("Verplicht veld: geef een omschrijving van de schadegebeurtenis", f["omschrijving_schade_1"]);
						if (!fField) fField = "id_omschrijving_schade_1";
					}
				}

				if ($F(f["aantal_schaden"]) == 2)
				{
					if ($F(f["schadejaar_2"]) == -1)
					{
						throwError("Verplicht veld: geef aan in welk jaar de schade plaatsvond", f["schadejaar_2"]);
						if (!fField) fField = "id_schadejaar_2";
					}

					if ($F(f["schadebedrag_2"]) == -1)
					{
						throwError("Verplicht veld: geef aan wat de hoogte van het schadebedrag was", f["schadebedrag_2"]);
						if (!fField) fField = "id_schadebedrag_2";
					}

					if ($F(f["schadeoorzaak_2"]) == -1)
					{
						throwError("Verplicht veld: geef aan wat de oorzaak van de schade was", f["schadeoorzaak_2"]);
						if (!fField) fField = "id_schadeoorzaak_2";
					}

					if ($F(f["omschrijving_schade_2"]).blank())
					{
						f["omschrijving_schade_2"].clear();
						throwError("Verplicht veld: geef een omschrijving van de schadegebeurtenis", f["omschrijving_schade_2"]);
						if (!fField) fField = "id_omschrijving_schade_2";
					}
				}
			}
		}
		/* Heeft u of een van de bestuurders */

		/* Is het voorgekomen dat een verzekeraar u of een van de bestuurders */
		if (!$RF(f, "geweigerd_opgezegd"))
		{
			throwError("Verplicht veld: geef aan of een verzekeraar u of een van de bestuurders een verzekering geweigerd of opgezegd heeft", f["geweigerd_opgezegd"]);
			if (!fField) fField = "id_geweigerd_opgezegd_j";
		}
		else if ($RF(f, "geweigerd_opgezegd") == "ja")
		{
			if ($F(f["jaar_geweigerd_opgezegd"]) == -1)
			{
				throwError("Verplicht veld: geef aan in welk jaar dat was", f["jaar_geweigerd_opgezegd"]);
				if (!fField) fField = "id_jaar_geweigerd_opgezegd";
			}

			if ($F(f["reden_geweigerd_opgezegd"]).blank())
			{
				f["reden_geweigerd_opgezegd"].clear();
				throwError("Verplicht veld: geef aan wat de reden van weigering of opzegging is", f["reden_geweigerd_opgezegd"]);
				if (!fField) fField = "id_reden_geweigerd_opgezegd";
			}
		}

		if (!$RF(f, "acc_bijz_vwd"))
		{
			throwError("Verplicht veld: geef aan of een verzekeraar u of een van de bestuurders alleen onder bijzondere voorwaarden heeft willen accepteren", f["acc_bijz_vwd"]);
			if (!fField) fField = "id_acc_bijz_vwd_j";
		}
		else if ($RF(f, "acc_bijz_vwd") == "ja")
		{
			if ($F(f["jaar_acc_bijz_vwd"]) == -1)
			{
				throwError("Verplicht veld: geef aan in welk jaar dat was", f["jaar_acc_bijz_vwd"]);
				if (!fField) fField = "id_jaar_acc_bijz_vwd";
			}

			if ($F(f["toelichting_acc_bijz_vwd"]).blank())
			{
				f["toelichting_acc_bijz_vwd"].clear();
				throwError("Verplicht veld: geef een toelichting van de bijzondere voorwaarden", f["toelichting_acc_bijz_vwd"]);
				if (!fField) fField = "id_toelichting_acc_bijz_vwd";
			}
		}
		/* Is het voorgekomen dat een verzekeraar u of een van de bestuurders */

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function submitPremiebetaling(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmPremiebetaling");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Premiebetaling */
		bw = ($("id_betalingswijze_ai") && $("id_betalingswijze_ag")) ? $RF(f, "betalingswijze") : bw = $F(f["betalingswijze"]);
		if (!bw)
		{
			if (!$RF(f, "betalingswijze"))
			{
				throwError("Verplicht veld: geef aan op welke manier u de premie wilt betalen", f["betalingswijze"]);
				if (!fField) fField = "id_betalingswijze_ai";
			}
		}

		if ($F(f["rekeningnummer"]).blank())
		{
				f["rekeningnummer"].clear();
				throwError("Verplicht veld: vul een rekeningnummer in", f["rekeningnummer"]);
				if (!fField) fField = "id_rekeningnummer";
		}
		else
		{
			bnr = $F(f["rekeningnummer"]).toUpperCase();
			if ((bnr.length > 0) && (bnr.length <= 7))
			{
				if (bnr.charAt(0) != "P")
				{
					bnr = "P" + bnr;
				}
			}
			f["rekeningnummer"].value = bnr;

			if (!elfproef(bnr))
			{
				throwError("Geen geldige invoer: vul een geldig rekeningnummer (bankrekening: 123456789 - giro: P1 tot en met P9999999) in", f["rekeningnummer"]);
				if (!fField) fField = "id_rekeningnummer";
			}
		}

		if (bw == "ai")
		{
			if (!$RF(f, "akkoord_incasso"))
			{
				throwError("Verplicht veld: geef aan of u toestemming geeft om de premie van uw rekening te incasseren", f["akkoord_incasso"]);
				if (!fField) fField = "id_akkoord_incasso_j";
			}
			else if ($RF(f, "akkoord_incasso") == "nee")
			{
				throwError("Indien u niet akkoord gaat met het incasseren van de premie van uw rekening door de verzekeraar, kunt u geen verzekering afsluiten", f["akkoord_incasso"]);
				if (!fField) fField = "id_akkoord_incasso_j";
			}
		}
		/* Premiebetaling */

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function submitSlotverklaring(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmSlotverklaring");

		if (this.href)
		{
			if (f.action !== this.href)
			{
				f.action = this.href;
				f.submit();
				return;
			}
		}

		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		/* Slotverklaring en akkoord */
		if (!$RF(f, "mededeling"))
		{
			throwError("Verplicht veld: geef aan of u nog iets relevants mede te delen heeft wat u hiervoor nog niet gemeld heeft", f["mededeling"]);
			if (!fField) fField = "id_mededeling_j";
		}
		else if ($RF(f, "mededeling") == "ja")
		{
			if ($F(f["toelichting_mededeling"]).blank())
			{
				f["toelichting_mededeling"].clear();
				throwError("Verplicht veld: geef aan wat u voor relevants mede te delen heeft wat u hiervoor nog niet gemeld heeft", f["toelichting_mededeling"]);
				if (!fField) fField = "id_toelichting_mededeling";
			}
		}

		if (f["eind_akkoord"].checked !== true)
		{
				throwError("Verplicht veld: geef aan of u akkoord gaat met de slotverklaring", f["eind_akkoord"]);
				if (!fField) fField = "id_eind_akkoord";
		}
		/* Slotverklaring en akkoord */

		if (fField != false)
		{
			fField = $(fField);
			window.scrollTo(0, fField.cumulativeOffset().top - 20);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function submitNeemContactOp(event)
{
	Event.stop(event);

	try
	{
		var f = $("frmNeemContactOp");
		var fField = false;
		var fElement = fr.getCurrentFocus();

		f.down("a#volgende").focus();
		fElement.focus();

		throwError("", f);

		if ($F(f["naam"]).blank())
		{
			f["naam"].clear();
			throwError("Verplicht veld: vul uw naam in", f["naam"]);
			if (!fField) fField = "id_naam";
		}

		if ($F(f["telefoonnummer"]).blank())
		{
			throwError("Verplicht veld: vul uw telefoonnummer in", f["telefoonnummer"]);
			if (!fField) fField = "id_telefoonnummer";
		}
		else if (!$F(f["telefoonnummer"]).blank() && !checkTelefoonnummer($F(f["telefoonnummer"]), null))
		{
			throwError("Geen geldige invoer: vul een geldig telefoonnummer (10 cijfers, beginnend met een 0) in", f["telefoonnummer"]);
			if (!fField) fField = "id_telefoonnummer";
		}

		if ($F(f["wanneer"]) == -1)
		{
			throwError("Verplicht veld: kies wanneer u gebeld wilt worden", f["wanneer"]);
			if (!fField) fField = "id_wanneer";
		}

		if (fField != false)
		{
			resizeOfferte();
			fField = $(fField);
			fField.focus();
		}
		else
		{
			f.submit();
		}
	}
	catch(e)
	{
		if (offline && console) console.log(e);
	}
}

function elfproef(bnr)
{
	if ((bnr.charAt(0) == "P") && (bnr.length >= 2) && (bnr.length <= 8))
	{
		return true;
	}
	else
	{
		// verwijder alle tekens die geen cijfers zijn
		nr = bnr.replace(/\D/g, "");
		var som = 0;

		// loop door de 9 cijfers met de 11 proef formule
		for (i = 1; i < 10; i++)
		{
			getal = nr.charAt(i - 1);
			som += getal * (10 - i);
		}

		// geef resultaat van check terug
		return (((som % 11) == 0) && (nr.length == 9));
	}
}

function showNextReactie()
{
	currentReactie++;
	if (currentReactie >= reacties.length)
	{
		currentReactie = 0;
	}

	$("footer_reacties").update(reacties[currentReactie]);

	setTimeout(showNextReactie, 10000);
}

function checkEmailadres(email)
{
	var pattern = /\n/;
	if (pattern.test(email)) return false;

	pattern = /\r/;
	if (pattern.test(email)) return false;

	pattern = /^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/;
	return pattern.test(email);
}

function checkEmailadres2()
{
	var email = $F(this).toLowerCase();
	var melding = "Geen geldige invoer: vul een geldig e-mailadres in bij " + ((this.id == "id_emailadres") ? "'Uw e-mailadres'" : "'Nogmaals uw e-mailadres'");

	if (email.blank()) return;

	var pattern = /\n/;
	if (pattern.test(email))
	{
		throwError(melding, this);
		return;
	}

	pattern = /\r/;
	if (pattern.test(email))
	{
		throwError(melding, this);
		return;
	}

	pattern = /^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/;
	if (pattern.test(email))
	{
		throwError("", this);
		if (!$F("id_emailadres").blank() && !$F("id_emailadres_tc").blank() && ($F("id_emailadres") != $F("id_emailadres_tc")))
		{
			throwError("Geen geldige invoer: de ingevoerde e-mailadressen komen niet overeen.", this);
		}
	}
	else
	{
		throwError(melding, this);
	}
}

function checkTelefoonnummer(telnr, mobiel)
{
	pattern = /\n/;
	if (pattern.test(telnr)) return false;

	pattern = /\r/;
	if (pattern.test(telnr)) return false;

	if (mobiel == null)				pattern = /^0((([1-5]|[7-9])[0-9]{8})|(6[1-9][0-9]{7}))$/;
	else if (mobiel == false)	pattern = /^0([1-5]|[7-9])[0-9]{8}$/;
	else											pattern = /^06[1-9][0-9]{7}$/;

	return pattern.test(telnr);
}

function checkPostcode(pc)
{
	re = new RegExp("^[1-9][0-9]{3}[A-Z]{2}$");
	return re.test(pc);
}

function checkMeldcode(mc)
{
	re = new RegExp("^[0-9]{4}$");
	return re.test(mc);
}

function checkKilometerstand(km)
{
	re = new RegExp("^[0-9]{0,7}$");
	if (re.test(km))
	{
		kms = parseInt(km, 10);
		if ((kms > 0) && (kms <= 9999999)) return true;
	}

	return false;
}

function sortByPremie(arr)
{
	function sortNumeric(a, b)
	{
		return a.premie - b.premie;
	}

	return arr.sort(sortNumeric);
}

function checkTEV()
{
	var f = $("frmTEV");
	var msg = "";
	var focusField = false;

	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["email"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_email";
	}
	else if (!checkEmailadres($F(f["email"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_email";
	}
	if ($F(f["email1"]).empty())
	{
		msg = msg + "\n - E-mailadres 1";
		if (!focusField) focusField = "id_email1";
	}
	else if (!checkEmailadres($F(f["email1"])))
	{
		msg = msg + "\n - E-mailadres 1 (geen geldige invoer)";
		if (!focusField) focusField = "id_email1";
	}
	if (!$F(f["email2"]).empty() && !checkEmailadres($F(f["email2"])))
	{
		msg = msg + "\n - E-mailadres 2 (geen geldige invoer)";
		if (!focusField) focusField = "id_email2";
	}
	if (!$F(f["email3"]).empty() && !checkEmailadres($F(f["email3"])))
	{
		msg = msg + "\n - E-mailadres 3 (geen geldige invoer)";
		if (!focusField) focusField = "id_email3";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkNCO()
{
	var f = $("frmNCO");
	var msg = "";
	var focusField = false;

	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["telnr"]).empty())
	{
		msg = msg + "\n - Telefoonnummer";
		if (!focusField) focusField = "id_telnr";
	}
	if ($F(f["tijd"]).empty())
	{
		msg = msg + "\n - Tijdstip";
		if (!focusField) focusField = "id_tijd";
	}
	if ($F(f["dag"]).empty())
	{
		msg = msg + "\n - Dag";
		if (!focusField) focusField = "id_dag";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkCNT()
{
	var f = $("frmCNT");
	var msg = "";
	var focusField = false;

	if ($F(f["contact"]).empty())
	{
		msg = msg + "\n - Contactpersoon";
		if (!focusField) focusField = "id_contact";
	}
	if ($F(f["adres"]).empty())
	{
		msg = msg + "\n - Adres";
		if (!focusField) focusField = "id_adres";
	}
	if ($F(f["postcode"]).empty())
	{
		msg = msg + "\n - Postcode";
		if (!focusField) focusField = "id_postcode";
	}
	if ($F(f["woonplaats"]).empty())
	{
		msg = msg + "\n - Woonplaats";
		if (!focusField) focusField = "id_woonplaats";
	}
	if ($F(f["email"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_email";
	}
	else if (!checkEmailadres($F(f["email"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_email";
	}
	if ($F(f["telnr"]).empty())
	{
		msg = msg + "\n - Telefoonnummer";
		if (!focusField) focusField = "id_telnr";
	}
	else if (!checkTelefoonnummer($F(f["telnr"]), false))
	{
		msg = msg + "\n - Telefoonnummer (geen geldige invoer, 10 cijfers vereist)";
		if (!focusField) focusField = "id_telnr";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkAdresWijzigen()
{
	var f = $("frmAdresWijzigen");
	var msg = "";
	var focusField = false;

	if ($F(f["verhuisdatum"]).empty())
	{
		msg = msg + "\n - Verhuisdatum";
		if (!focusField) focusField = "id_verhuisdatum";
	}
	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["adres"]).empty())
	{
		msg = msg + "\n - Straatnaam + huisnummer";
		if (!focusField) focusField = "id_adres";
	}
	if ($F(f["postcode"]).empty())
	{
		msg = msg + "\n - Postcode";
		if (!focusField) focusField = "id_postcode";
	}
	if ($F(f["woonplaats"]).empty())
	{
		msg = msg + "\n - Woonplaats";
		if (!focusField) focusField = "id_woonplaats";
	}
	if ($F(f["telefoonnummer"]).empty())
	{
		msg = msg + "\n - Telefoonnummer";
		if (!focusField) focusField = "id_telefoonnummer";
	}
	else if (!checkTelefoonnummer($F(f["telefoonnummer"]), false))
	{
		msg = msg + "\n - Telefoonnummer (geen geldige invoer, 10 cijfers vereist)";
		if (!focusField) focusField = "id_telefoonnummer";
	}
	if ($F(f["emailadres"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_emailadres";
	}
	else if (!checkEmailadres($F(f["emailadres"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_emailadres";
	}
	if (!$RF("frmAdresWijzigen", "kopie"))
	{
		msg = msg + "\n - Of u een kopie per e-mail wilt ontvangen van de wijziging";
		if (!focusField) focusField = "id_kopie_ja";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkAutoWijzigen()
{
	var f = $("frmAutoWijzigen");
	var msg = "";
	var focusField = false;

	if ($F(f["wijzigingsdatum"]).empty())
	{
		msg = msg + "\n - Wijzigingsdatum";
		if (!focusField) focusField = "id_wijzigingsdatum";
	}
	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["merk_type"]).empty())
	{
		msg = msg + "\n - Merk + type";
		if (!focusField) focusField = "id_merk_type";
	}
	if ($F(f["kenteken"]).empty())
	{
		msg = msg + "\n - Kenteken";
		if (!focusField) focusField = "id_kenteken";
	}
	if ($F(f["meldcode"]).empty())
	{
		msg = msg + "\n - Meldcode";
		if (!focusField) focusField = "id_meldcode";
	}
	if ($F(f["gewicht"]).empty())
	{
		msg = msg + "\n - Ledig gewicht (kg)";
		if (!focusField) focusField = "id_gewicht";
	}
	if ($F(f["kilometerstand"]).empty())
	{
		msg = msg + "\n - Kilometerstand";
		if (!focusField) focusField = "id_kilometerstand";
	}
	if ($F(f["bouwjaar"]).empty())
	{
		msg = msg + "\n - Bouwjaar";
		if (!focusField) focusField = "id_bouwjaar";
	}
	if ($F(f["brandstof"]).empty())
	{
		msg = msg + "\n - Brandstof";
		if (!focusField) focusField = "id_brandstof";
	}
	if ($F(f["nieuwprijs"]).empty())
	{
		msg = msg + "\n - Nieuwprijs";
		if (!focusField) focusField = "id_nieuwprijs";
	}
	if ($F(f["dagwaarde"]).empty())
	{
		msg = msg + "\n - Dagwaarde";
		if (!focusField) focusField = "id_dagwaarde";
	}
	if ($F(f["beveiliging"]).empty())
	{
		msg = msg + "\n - Beveiliging";
		if (!focusField) focusField = "id_beveiliging";
	}
	if (($F(f["beveiliging"]) != "geen") && (!$RF("frmAutoWijzigen", "beveiliging_af_fabriek")))
	{
		msg = msg + "\n - Of de beveiliging af-fabriek gemonteerd is";
		if (!focusField) focusField = "id_beveiliging_af_fabriek_ja";
	}
	if (!$RF("frmAutoWijzigen", "dekking"))
	{
		msg = msg + "\n - Of welke dekking u wilt";
		if (!focusField) focusField = "id_dekking_wa";
	}
	if ($F(f["emailadres"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_emailadres";
	}
	else if (!checkEmailadres($F(f["emailadres"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_emailadres";
	}
	if (!$RF("frmAutoWijzigen", "kopie"))
	{
		msg = msg + "\n - Of u een kopie per e-mail wilt ontvangen van de wijziging";
		if (!focusField) focusField = "id_kopie_ja";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkDekkingWijzigen()
{
	var f = $("frmDekkingWijzigen");
	var msg = "";
	var focusField = false;

	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if (!$RF("frmDekkingWijzigen", "dekking"))
	{
		msg = msg + "\n - Of welke dekking u wilt";
		if (!focusField) focusField = "id_dekking_wa";
	}
	if ($F(f["telefoonnummer"]).empty())
	{
		msg = msg + "\n - Telefoonnummer";
		if (!focusField) focusField = "id_telefoonnummer";
	}
	if ($F(f["emailadres"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_emailadres";
	}
	else if (!checkEmailadres($F(f["emailadres"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_emailadres";
	}
	if (!$RF("frmDekkingWijzigen", "kopie"))
	{
		msg = msg + "\n - Of u een kopie per e-mail wilt ontvangen van de wijziging";
		if (!focusField) focusField = "id_kopie_ja";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkOverigeZakenWijzigen()
{
	var f = $("frmOverigeZakenWijzigen");
	var msg = "";
	var focusField = false;

	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["kenteken"]).empty())
	{
		msg = msg + "\n - Kenteken";
		if (!focusField) focusField = "id_kenteken";
	}
	if ($F(f["toelichting"]).empty())
	{
		msg = msg + "\n - Toelichting wijziging(en)";
		if (!focusField) focusField = "id_toelichting";
	}
	if ($F(f["telefoonnummer"]).empty())
	{
		msg = msg + "\n - Telefoonnummer";
		if (!focusField) focusField = "id_telefoonnummer";
	}
	if ($F(f["emailadres"]).empty())
	{
		msg = msg + "\n - E-mailadres";
		if (!focusField) focusField = "id_emailadres";
	}
	else if (!checkEmailadres($F(f["emailadres"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_emailadres";
	}
	if (!$RF("frmOverigeZakenWijzigen", "kopie"))
	{
		msg = msg + "\n - Of u een kopie per e-mail wilt ontvangen van de wijziging";
		if (!focusField) focusField = "id_kopie_ja";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function checkSchadeMelden()
{
	var f = $("frmSchadeMelden");
	var msg = "";
	var focusField = false;

	if ($F(f["kenteken"]).empty())
	{
		msg = msg + "\n - Kenteken";
		if (!focusField) focusField = "id_kenteken";
	}
	if ($F(f["naam"]).empty())
	{
		msg = msg + "\n - Naam";
		if (!focusField) focusField = "id_naam";
	}
	if ($F(f["adres"]).empty())
	{
		msg = msg + "\n - Straatnaam + huisnummer";
		if (!focusField) focusField = "id_adres";
	}
	if ($F(f["postcode"]).empty())
	{
		msg = msg + "\n - Postcode";
		if (!focusField) focusField = "id_postcode";
	}
	if ($F(f["woonplaats"]).empty())
	{
		msg = msg + "\n - Woonplaats";
		if (!focusField) focusField = "id_woonplaats";
	}
	if ($F(f["schadedatum"]).empty())
	{
		msg = msg + "\n - Schadedatum";
		if (!focusField) focusField = "id_schadedatum";
	}
	if ($F(f["schadebedrag"]).empty())
	{
		msg = msg + "\n - Geschat schadebedrag";
		if (!focusField) focusField = "id_schadebedrag";
	}
	if ($F(f["omschrijving"]).empty())
	{
		msg = msg + "\n - Omschrijving schade";
		if (!focusField) focusField = "id_omschrijving";
	}
	if (!$RF("frmSchadeMelden", "aansprakelijkheid"))
	{
		msg = msg + "\n - Wie is aansprakelijk?";
		if (!focusField) focusField = "id_aansprakelijkheid_tp";
	}
	if (!$RF("frmSchadeMelden", "toesturen"))
	{
		msg = msg + "\n - Toesturen schadeformulier";
		if (!focusField) focusField = "id_toesturen_ja";
	}
	if (!$RF("frmSchadeMelden", "dekking"))
	{
		msg = msg + "\n - Hoe bent u verzekerd?";
		if (!focusField) focusField = "id_dekking_wa";
	}
	if ($F(f["rep_naam"]).empty())
	{
		msg = msg + "\n - Naam reparateur";
		if (!focusField) focusField = "id_rep_naam";
	}
	if ($F(f["rep_adres"]).empty())
	{
		msg = msg + "\n - Straatnaam + huisnummer reparateur";
		if (!focusField) focusField = "id_rep_adres";
	}
	if ($F(f["rep_postcode"]).empty())
	{
		msg = msg + "\n - Postcode reparateur";
		if (!focusField) focusField = "id_rep_postcode";
	}
	if ($F(f["rep_woonplaats"]).empty())
	{
		msg = msg + "\n - Plaatsnaam reparateur";
		if (!focusField) focusField = "id_rep_woonplaats";
	}
	if ($F(f["rep_telefoonnummer"]).empty())
	{
		msg = msg + "\n - Telefoonnummer reparateur";
		if (!focusField) focusField = "id_rep_telefoonnummer";
	}

	if (!$RF("frmSchadeMelden", "wanneer_reparatie"))
	{
		msg = msg + "\n - Wanneer gaat de auto naar de reparateur?";
		if (!focusField) focusField = "id_wanneer_reparatie_ja";
	}
	if ($F(f["telefoonnummer"]).empty())
	{
		msg = msg + "\n - Uw telefoonnummer";
		if (!focusField) focusField = "id_telefoonnummer";
	}
	if ($F(f["emailadres"]).empty())
	{
		msg = msg + "\n - Uw e-mailadres";
		if (!focusField) focusField = "id_emailadres";
	}
	else if (!checkEmailadres($F(f["emailadres"])))
	{
		msg = msg + "\n - E-mailadres (geen geldige invoer)";
		if (!focusField) focusField = "id_emailadres";
	}
	if (!$RF("frmSchadeMelden", "kopie"))
	{
		msg = msg + "\n - Of u een kopie per e-mail wilt ontvangen van de wijziging";
		if (!focusField) focusField = "id_kopie_ja";
	}

	if (!msg.empty())
	{
		alert("U bent verplicht de volgende velden in te vullen: " + msg);
		$(focusField).focus();
		return false;
	}
	return true;
}

function blurDatum(did)
{
	datum = $(did);

	if ($F(datum).blank())
	{
		datum.value = "dd-mm-jjjj";
	}
}

function focusDatum(did)
{
	datum = $(did);

	if ($F(datum) == "dd-mm-jjjj")
	{
		datum.value = "";
	}
}

function leesMeer(txt)
{
	$$("." + txt).invoke("show");
	$(txt).hide();
	resizeOfferte();
}

function in_array(needle, haystack, argStrict)
{
	var key = "", strict = !!argStrict;

	if (strict)
	{
		for (key in haystack)
		{
			if (haystack[key] === needle) return true;
		}
	}
	else
	{
		for (key in haystack)
		{
			if (haystack[key] == needle) return true;
		}
	}

	return false;
}

function toggleAkkoordIncasso()
{
	if ($RF("frmPremiebetaling", "betalingswijze") == "ai")
	{
		$$(".flds_ai").invoke("show");
	}
	else
	{
		$$(".flds_ai").invoke("hide");
		$("id_akkoord_incasso_j").checked = false;
		$("id_akkoord_incasso_n").checked = false;
	}
}

function akkoordIncasso()
{
	id = $("id_akkoord_incasso_j");
	throwError("", id);

	var bw = (($F($("frmPremiebetaling")["betalingstermijn"]) == "maand") || ($F($("frmPremiebetaling")["productid"]) == "7080")) ? $F($("frmPremiebetaling")["betalingswijze"]) : $RF("frmPremiebetaling", "betalingswijze");
	if ((bw == "ai") && ($RF("frmPremiebetaling", "akkoord_incasso") == "nee"))
	{
		throwError("Indien u niet akkoord gaat met het incasseren van de premie van uw rekening door de verzekeraar, kunt u geen verzekering afsluiten", id);
	}
}

function toggleRelatieHB()
{
	throwError("", $("id_relatie_hb"));
	if ($F("id_relatie_hb") != "a")
	{
		$("id_relatie_hb_anders").clear();
		$("id_relatie_hb_anders").hide();
	}
	else
	{
		$("id_relatie_hb_anders").show();
	}
}

function writeRelatieHBAnders()
{
	if (!$F("id_relatie_hb_anders").blank())
	{
		$("id_relatie_hb_anders").show();
		$("id_relatie_hb").value = "a";
	}
	else if ($F("id_relatie_hb") != "a")
	{
		$("id_relatie_hb_anders").hide();
	}
}

function toggleRelatieKH()
{
	throwError("", $("id_relatie_kh"));
	if ($F("id_relatie_kh") != "a")
	{
		$("id_relatie_kh_anders").clear();
		$("id_relatie_kh_anders").hide();
	}
	else
	{
		$("id_relatie_kh_anders").show();
	}
}

function writeRelatieKHAnders()
{
	if (!$F("id_relatie_kh_anders").blank())
	{
		$("id_relatie_kh_anders").show();
		$("id_relatie_kh").value = "a";
	}
	else if ($F("id_relatie_kh") != "a")
	{
		$("id_relatie_kh_anders").hide();
	}
}

function toggleRedenOnverzekerd()
{
	throwError("", $("id_reden_onverzekerd"));
	if ($F("id_reden_onverzekerd") != "a")
	{
		$("id_reden_onverzekerd_anders").clear();
		$("id_reden_onverzekerd_anders").hide();
	}
	else
	{
		$("id_reden_onverzekerd_anders").show();
	}
}

function writeRedenOnverzekerdAnders()
{
	if (!$F("id_reden_onverzekerd_anders").blank())
	{
		$("id_reden_onverzekerd_anders").show();
		$("id_reden_onverzekerd").value = "a";
	}
	else if ($F("id_reden_onverzekerd") != "a")
	{
		$("id_reden_onverzekerd_anders").hide();
	}
}

function toggleRedenRijontzegging()
{
	throwError("", $("id_reden_rijontzegging"));
	if ($F("id_reden_rijontzegging") != "a")
	{
		$("id_reden_rijontzegging_anders").clear();
		$("id_reden_rijontzegging_anders").hide();
	}
	else
	{
		$("id_reden_rijontzegging_anders").show();
	}
}

function writeRedenRijontzeggingAnders()
{
	if (!$F("id_reden_rijontzegging_anders").blank())
	{
		$("id_reden_rijontzegging_anders").show();
		$("id_reden_rijontzegging").value = "a";
	}
	else if ($F("id_reden_rijontzegging") != "a")
	{
		$("id_reden_rijontzegging_anders").hide();
	}
}

function toggleHoofdbestuurder()
{
	if ($RF("frmGegevensAuto", "hoofdbestuurder") == "nee")
	{
		$$(".flds_hb").invoke("show");
	}
	else
	{
		$$(".flds_hb").invoke("hide");
		clearFormPart("hb");
	}

	toggleFieldsets();
}

function toggleHbGeldigRijbewijs()
{
	if ($RF("frmGegevensAuto", "geldig_rijbewijs_hb") == "nee")
	{
		$$(".flds_hb_gr").invoke("show");
	}
	else
	{
		$$(".flds_hb_gr").invoke("hide");
		clearFormPart("hb_gr");

		$$(".flds_hb_lr").invoke("hide");
		clearFormPart("hb_lr");
	}

	toggleFieldsets();
}

function toggleHbLandRijbewijs()
{
	if ($RF("frmGegevensAuto", "ander_land_hb_gr") == "ja")
	{
		$$(".flds_hb_lr").invoke("show");
	}
	else
	{
		$$(".flds_hb_lr").invoke("hide");
		clearFormPart("hb_lr");
	}

	toggleFieldsets();
}

function toggleKentekenhouder()
{
	if ($RF("frmGegevensAuto", "kentekenhouder") == "nee")
	{
		$$(".flds_kh").invoke("show");
	}
	else
	{
		$$(".flds_kh").invoke("hide");
		clearFormPart("kh");
	}

	toggleFieldsets();
}

function toggleVerschilTenaamstellingIngangsdatum()
{
	if ((checkDatum($("frmGegevensAuto")["tenaamstelling"]) != false) && (checkDatumHedenToekomst($("frmGegevensAuto")["ingangsdatum"]) != false))
	{
		verschil = berekenVerschil($F($("frmGegevensAuto")["tenaamstelling"]), $F($("frmGegevensAuto")["ingangsdatum"]));

		if (verschil > 14)
		{
			$$(".flds_tl").invoke("show");
		}
		else
		{
			$$(".flds_tl").invoke("hide");
			clearFormPart("tl");
		}
	}
	else
	{
		$$(".flds_tl").invoke("hide");
		clearFormPart("tl");
	}

	toggleEerderVerzekerd();
}

function toggleEerderVerzekerd()
{
	if ($RF("frmGegevensAuto", "eerder_verzekerd_tl") == "ja")
	{
		if (checkDatum($("frmGegevensAuto")["einddatum_ev"]) == false)
		{
			$$(".flds_ro").invoke("hide");
			clearFormPart("ro");
		}

		$$(".flds_ev").invoke("show");
	}
	else if ($RF("frmGegevensAuto", "eerder_verzekerd_tl") == "nee")
	{
		$$(".flds_ev").invoke("hide");
		clearFormPart("ev");

		$$(".flds_ro").invoke("show");
	}
	else
	{
		$$(".flds_ev").invoke("hide");
		clearFormPart("ev");

		$$(".flds_ro").invoke("hide");
		clearFormPart("ro");
	}

	toggleFieldsets();
}

function toggleControleIngangsdatumEinddatum()
{
	if ($RF("frmGegevensAuto", "eerder_verzekerd_tl") == "ja")
	{
		if (checkDatum($("frmGegevensAuto")["einddatum_ev"]) && (berekenVerschil($F($("frmGegevensAuto")["einddatum_ev"]), $F($("frmGegevensAuto")["ingangsdatum"])) > 14))
		{
			$$(".flds_ro").invoke("show");
		}
		else
		{
			$$(".flds_ro").invoke("hide");
			clearFormPart("ro");
		}
	}

	toggleFieldsets();
}

function toggleVerzekerdGeweest()
{
	if ($RF("frmGegevensAuto", "verzekerd_geweest") == "ja")
	{
		$$(".flds_vg").invoke("show");
	}
	else
	{
		$$(".flds_vg").invoke("hide");
		clearFormPart("vg");
	}
}

function toggleOoitRijontzegging()
{
	if ($RF("frmAcceptatieVragen", "ooit_rijontzegging") == "ja")
	{
		$$(".flds_oo").invoke("show");
	}
	else
	{
		$$(".flds_oo").invoke("hide");
		clearFormPart("oo");
	}

	toggleFieldsets();
}

function toggleLichamelijkeGebreken()
{
	if ($RF("frmAcceptatieVragen", "lichamelijke_gebreken") == "ja")
	{
		$$(".flds_lg").invoke("show");
	}
	else
	{
		$$(".flds_lg").invoke("hide");
		clearFormPart("lg");
	}

	toggleFieldsets();
}

function toggleStrafrechtelijkVerleden()
{
	if ($RF("frmAcceptatieVragen", "strafrechtelijk_verleden") == "ja")
	{
		$$(".flds_sv").invoke("show");
	}
	else
	{
		$$(".flds_sv").invoke("hide");
		clearFormPart("sv");
	}

	toggleFieldsets();
}

function toggleSchadeverleden()
{
	if ($RF("frmAcceptatieVragen", "schadeverleden") == "ja")
	{
		$$(".flds_sl").invoke("show");
	}
	else
	{
		$$(".flds_sl").invoke("hide");
		clearFormPart("sl");
	}

	toggleAantalSchaden();
}

function toggleAantalSchaden()
{
	$$(".flds_sc1").invoke("hide");
	$$(".flds_sc2").invoke("hide");
	aantal = parseInt($F("id_aantal_schaden"), 10);

	if (aantal == 1)
	{
		$$(".flds_sc1").invoke("show");
		clearFormPart("sc2");
	}
	else if (aantal == 2)
	{
		$$(".flds_sc1").invoke("show");
		$$(".flds_sc2").invoke("show");
	}

	toggleFieldsets();
}

function toggleGeweigerdOpgezegd()
{
	if ($RF("frmAcceptatieVragen", "geweigerd_opgezegd") == "ja")
	{
		$$(".flds_go").invoke("show");
	}
	else
	{
		$$(".flds_go").invoke("hide");
		clearFormPart("go");
	}

	toggleFieldsets();
}

function toggleAccBijzVwd()
{
	if ($RF("frmAcceptatieVragen", "acc_bijz_vwd") == "ja")
	{
		$$(".flds_bv").invoke("show");
	}
	else
	{
		$$(".flds_bv").invoke("hide");
		clearFormPart("bv");
	}

	toggleFieldsets();
}

function toggleMededeling()
{
	if ($RF("frmSlotverklaring", "mededeling") == "ja")
	{
		$$(".flds_md").invoke("show");
	}
	else
	{
		$$(".flds_md").invoke("hide");
		clearFormPart("md");
	}

	toggleFieldsets();
}

function clearFormPart(selector)
{
	$$("fieldset.flds_" + selector + " input, fieldset.flds_" + selector + " select, fieldset.flds_" + selector + " textarea, fieldset.flds_" + selector + " p.error").each(function(input)
		{
			tn = input.tagName.toLowerCase();
			if (tn == "input")
			{
				if (input.type.toLowerCase() == "text")
				{
					input.clear();

					if (input.name.indexOf("datum") >= 0)
					{
						input.value = "dd-mm-jjjj";
					}
				}
				else if (input.type.toLowerCase() == "radio")
				{
					input.checked = false;
				}
			}
			else if (tn == "select")
			{
				input.selectedIndex = 0;
			}
			else if (tn == "textarea")
			{
				input.clear();
			}
			else if (tn == "p")
			{
				input.remove();
			}
		});

	$$("fieldset.flds_" + selector + " p.error").invoke("remove");
}

var FocusReader = Class.create(
	{
		initialize: function()
			{
				this.currentFocus = null;
				var focusRead = this.focusRead.bindAsEventListener(this);
				if (!Prototype.Browser.IE)
				{
					document.addEventListener("focus", focusRead, true);
				}
				/* Also add the listener for IE which does not support capturing */
				document.onfocusin = focusRead;
			},
		focusRead: function(e)
			{
				/* Need to force extending the event since it won't be extended by default */
				e = Event.extend(e);
				this.currentFocus = e.element();
			},
		getCurrentFocus: function()
			{
				return this.currentFocus;
			}
	});

var fr;
document.observe("dom:loaded", function()
	{
		fr = new FocusReader();
	});

