var kapMax = 10000;
var kapMin = 500;
var kapStart = 7000;
var classes = ['level2','level3','level4','actief'];
var mode;
var ajaxPad = 'premie.php?hash='+hash+'&klantnummer='+klantnummer;
var betaalTermijn = 1;
var stapAfgemaakt = [];
var aantalKinderen = 1;
var premieTermijnen = ['','maand','kwartaal','jaar','halfjaar'];
var afgesloten = false;
var tabHuidig = 1;
var melding_nietmeerterug = 'Uw verzekering is aangevraagd, u kunt uw gegevens opvragen bij uw tussenpersoon.';

var formulierGecheckt = false;
var formulierGeslaagd = false;
var formulierenGeslaagd = {'VN':true,'VZ1':true,'VZ2':true,'kinderen':true,'begunstigden':true,'betaling':true};

var samenvatting = '';
var samengevat = 0;
var calculatorUrl = 'http://www.conservatrix.nl/apiondersteuning/uitvaartcalculator/';
var kleur = '#FF9900';
var slideControl;

Event.observe(document,'dom:loaded',function(){
	// horizontaal of verticaal?
	mode = $('module').hasClassName('horizontaal') ? 'horizontaal' : 'verticaal';

	// De tabjes bovenin
	var tabs = $$('.tabs li');
	var contents = $$('div.content-item');
	
	tabs.each(function(tab){
		tab.down('a').observe('click',function(){
			var id = parseInt(get_id(tab.id));
			if(id == 1){
				naarStap1();
			}
			if(id == 2){
				naarStap2();
			}
			if(id == 3){
				naarStap3();
			}
			if(id == 4){
				naarStap4();
			}
		});
	});
	
	// layout aanpassen?
	//wijzigOrientatie(mode);
	
	// slider voor hoogte kapitaal
	var slider = $('slider');
    slideControl = new Control.Slider(slider.down('.handle'), slider, {
		range: $R(kapMin, kapMax),
		step: 1,
		sliderValue: parseInt($F('verzekerdeKapitaal')),
		width:200,
		onSlide: function(value) {
			updateKapitaal(value)
		},
		onChange: function(value) { 
			updateKapitaal(value)
		}
    });
    $('kapitaal').update(valuta($F('verzekerdeKapitaal')));
    
    // bij premie: partner meeverzekeren?
    $('verzekerdePartner').observe('click',function(){
    	$('partnerKapitaal').value = $F('verzekerdeKapitaal');
    	$('partnerDetails').toggle();
    	
    	var geslacht = $RF('verzekerdeGeslacht') == 'M' ? 'V' : 'M';
    	$$('input[type="radio"][name="partnerGeslacht"]').invoke('setAttribute','checked','');
    	$$('input[type="radio"][name="partnerGeslacht"][value="'+geslacht+'"]')[0].setAttribute('checked','checked');
    });
    
    // bij verversen kan het zijn dat het partnerding blijft staan -> partnerdetails openzetten dan
    if($('verzekerdePartner').checked){
    	$('partnerDetails').show();
    }
    
    // open calculator in popup
    $('calculatorLink').observe('click',function(){
    	window.open(calculatorUrl + '&kleur='+kleur,'calculator','height=620,width=430,toolbar=0,status=0,location=0,menubar=0,directories=0');
    });
    
    // geboortedatum - doorgaan bij geboortedatum
    var gebdatvelden = [
    	['verzekerdeGD_dag','verzekerdeGD_maand'],
    	['verzekerdeGD_maand','verzekerdeGD_jaar'],
    	['verzekerdeGD_jaar',false],
    	['partnerGD_dag','partnerGD_maand'],
    	['partnerGD_maand','partnerGD_jaar'],
    	['partnerGD_jaar',false]
    ];
    gebdatvelden.each(function(veld){
    	$(veld[0]).observe('keyup',function(){
	    	$(veld[0]).value = $F(veld[0]).replace(/[^\d]/g, "");
	    	if(veld[1] && $F(veld[0]).length == 2){
		    	$(veld[1]).focus();
		    }    		
    	});
    });
    
    // partnerkapitaal in de gaten houden 
	$('partnerKapitaal').observe('keyup',function(){
		$('partnerKapitaal').value = $F('partnerKapitaal').replace(/[^\d]/g, "");
	});
    
    // Tabblad 2: Verzekerde: Welke looptijd?
    var looptijden = $$('div#verzekerdePremieResultaat ul.looptijden a')
    looptijden.each(function(lt){
    	lt.observe('click',function(){
	    	$('verzekerdePremieLooptijd').value = get_id(this.id);
	    	looptijden.invoke('removeClassName','actief');
	    	this.addClassName('actief');
	    	naarStap2();
	    });
    });

    // Tabblad 2: Partner: Welke looptijd?
	var looptijden2 = $$('div#partnerPremieResultaat ul.looptijden a')
    looptijden2.each(function(lt){
    	lt.observe('click',function(){
	    	$('partnerPremieLooptijd').value = get_id(this.id);
	    	looptijden2.invoke('removeClassName','actief');
	    	this.addClassName('actief');
	    	naarStap2();
	    });
    });
        
    // Tabblad 2: Welke betaaltermijn? Geen partner
    $('betaalTermijn').observe('change',function(){
    	betaalTermijn = $F('betaalTermijn');
    	naarStap2();
    	
    	$('formBetalingTermijn').update(premieTermijnen[parseInt(betaalTermijn)]);
    });

    // Tabblad 2: Welke betaaltermijn? Wel partner
    $('betaalTermijnGezamenlijk').observe('change',function(){
    	betaalTermijn = $F('betaalTermijnGezamenlijk');
    	var tekst = premieTermijnen[parseInt(betaalTermijn)];
    	$('formBetalingTermijn').update(tekst);
    	$$('span.premieLooptijdTekst').invoke('update',tekst);
    	naarStap2();
    });
    
    // knoppen naar rechts: nieuwe acties    
    // ! 1. Kapitaal naar premie!
    $$('div.knop a').each(function(knop){
    	knop.observe('click',function(){
    		var id = this.className.split('-')[2];
    		if(id==1){
    			tabClick(1);
    		}else if(id==2){
    			naarStap2();
    		}else if(id==3){
    			naarStap3();
    		}else if(id==4){
    			naarStap4();
    		}
    	});
    });
    /*
    $('knop-stap2').observe('click',function(){
		naarStap2();
    });
    */
    
    // Tabblad 3: Formulier - tabbladen
    $$('div.formulier-stappen li').each(function(item){
    	item.observe('click',function(){
    		$$('div.formulier-stappen li').invoke('removeClassName','actief');
    		this.addClassName('actief');
    	});
    });
	
	// listeners aan formulier toevoegen
	formKoppelingHints = false;
	formKoppelingUrlPrefix = '../../';
	// 1. Verzekeringnemer
	formKoppeling('postcode',{'plaats':'formVN_woonplaats','straatnaam':'formVN_straat','postcode':'formVN_postcode','huisnummer':'formVN_huisnummer'});
	// 2. verzekerde 1
	formKoppeling('postcode',{'plaats':'formVZ1_woonplaats','straatnaam':'formVZ1_straat','postcode':'formVZ1_postcode','huisnummer':'formVZ1_huisnummer'});
	// 3. Verzekerde 2
	formKoppeling('postcode',{'plaats':'formVZ2_woonplaats','straatnaam':'formVZ2_straat','postcode':'formVZ2_postcode','huisnummer':'formVZ2_huisnummer'});
	
	// instellingen
	wijzigKleur();
	
	if(demo){
		// even melden
		melding('Dit is een demoversie van de module. Met deze versie kunnen geen offertes aangevraagd worden.');
	
		new Control.ColorPicker('instellingenKleur', { 
			IMAGE_BASE : 'images/colorpicker/',
			onUpdate:function(){
				wijzigKleur();
			}
		});
		$('instellingen').observe('mouseover',function(){
			$('instellingen').setStyle({'height':'120px'});
		});
		$('instellingen').observe('mouseout',function(){
			$('instellingen').setStyle({'height':'20px'});
		});
	}
	
});

function tabClick(id){
	// De tabjes bovenin
	
	var tabs = $$('.tabs li');
	var contents = $$('div.content-item');
	var tab = $('tab_'+id);

	// nu de classes herverdelen
	$A(classes).each(function(cl){
		tabs.invoke('removeClassName',cl);
		contents.invoke('removeClassName',cl);
	});
	
	// nu weer goedzetten
	tab.addClassName('actief');
	$('content_'+id).addClassName('actief');
	for(var i = 1;i<4;i++){	
		if(id-i > 0){
			$('tab_'+(id-i)).addClassName('level'+(i+1));
			$('content_'+(id-i)).addClassName('level'+(i+1));
		}
		if(id+i <= 4){
			$('tab_'+(id+i)).addClassName('level'+(i+1));
			$('content_'+(id+i)).addClassName('level'+(i+1));
		}		
	}
	
	// ### TODO ### kan uiteindelijk weg!
	wijzigKleur();
	
	// decoratie
	//$('deco').setAttribute('class','');
	//$('deco').addClassName('actief-'+id);
	
	tabHuidig = id;
}

function orientatieSwitch(mode){

}

function naarStap1(){
	if(afgesloten == true){
		melding(melding_nietmeerterug);
		return false;
	}else{
		tabClick(1);
	}
}

function naarStap2(){
	if(afgesloten == true){
		melding(melding_nietmeerterug);
		return false;
	}
	
	// controleer de zaken
	var fout = false;
	var m = [];
	
	var kapitaal = $F('verzekerdeKapitaal');
	var looptijd = $F('verzekerdePremieLooptijd');
	var indexatie = $RF('verzekerdeGeindexeerd')[0];
	var kinderen = $('verzekerdeKinderen').checked ? 1 : 0;
	
	// geboortedatum
	var gebdat = $F('verzekerdeGD_dag')+'-'+$F('verzekerdeGD_maand')+'-'+$F('verzekerdeGD_jaar');
	if(!formCheckDatum(gebdat)){
		fout = true;
		m.push('Vul een correcte geboortedatum in.');
	}
	
	// kapitaal op tabblad 2 instellen
	$('verzekerdeKapitaalBijPremie').update(valuta(kapitaal));
	
	// geslacht verzekerde: als het maar ingevuld is
	var geslacht = $RF('verzekerdeGeslacht');
	if(geslacht.length == 0){
		m.push('Selecteer een geslacht voor de verzekerde.');
	}
	
	// partner meeverzekeren?
	var partner = $('verzekerdePartner').checked;
	if(partner){
		var looptijdp = $F('partnerPremieLooptijd');
		var indexatiep = $RF('partnerGeindexeerd')[0];
		
		// nu ook geboortedatum van partner checken
    	var gebdatp = $F('partnerGD_dag')+'-'+$F('partnerGD_maand')+'-'+$F('partnerGD_jaar');
    	if(!formCheckDatum(gebdatp)){
    		fout = true;
    		m.push('Vul een correcte geboortedatum voor uw partner in.');
    	}
    	
    	// geslacht
    	var geslachtp = $RF('partnerGeslacht');
    	if(geslachtp.length == 0){
    		m.push('Selecteer een geslacht voor uw partner.');
    		fout = true;
    	}
    	
    	// kapitaal
    	var partnerKap = parseInt($F('partnerKapitaal'));
    	$('partnerKapitaalBijPremie').update(valuta(partnerKap));

    	if(partnerKap < kapMin){
    		m.push('De Uitvaartkostenverzekering kent een minimaal verzekerd kapitaal van &euro; '+valuta(kapMin)+',-.');
    		fout = true;
    		$('partnerKapitaal').value = kapMin;
    	}
    	if(partnerKap > kapMax){
    		m.push('De Uitvaartkostenverzekering kent een maximaal verzekerd kapitaal van &euro; '+valuta(kapMax)+',-.');
    		fout = true;
    		$('partnerKapitaal').value = kapMax;
    	}	   	
   	}
	
	if(fout){
		melding(m.join('<br />'));
	}else{
		// alles is ok, haal hier de premie op en vul alles in in tabblad 2
		preloadStart('Even geduld, uw premie wordt nu berekend.');
		stapAfgemaakt.push(1);
		stapAfgemaakt.push(2);
		
		var pad = ajaxPad+'&json=1&mode=premie&betaalTermijn='+betaalTermijn+'&indexatie='+indexatie+'&gebdat='+gebdat+'&geslacht='+geslacht+'&kapitaal='+kapitaal+'&looptijd='+looptijd+'&kinderen='+kinderen+'&r='+randomString();
		if(partner){
			pad += '&partner=1&partnerKapitaal='+partnerKap+'&partnerLooptijd='+looptijdp+'&partnerIndexatie='+indexatiep+'&partnerGeslacht='+geslachtp+'&partnerGebdat='+gebdatp;
		}
		new Ajax.Request(pad,{
			onComplete: function(transport){
				var json = transport.responseText.evalJSON(true);
				if(json.geslaagd == 1){
					preloadEinde();
					json.premie = parseFloat(json.premie);
					var totaalPremie = json.premie;
					
					// premie invullen
					$('verzekerdePremie').value = json.premie;
					
					
					// partner
					var doorgaan = true;
					if(partner){
						if(json.partnerGeslaagd){
							json.partnerPremie = parseFloat(json.partnerPremie);
							$('partnerPremie').value = json.partnerPremie;
							totaalPremie += json.partnerPremie;
							
							// premie invullen
							var partnerpremiedelen = splitsValuta(json.partnerPremie);
							$('partnerPremieVoorKomma').update(partnerpremiedelen[0]);
							$('partnerPremieNaKomma').update(partnerpremiedelen[1]);

							// einddata invullen
							if(json.partnerEinddata){
								for(var c=1;c<=3;c++){
							  		$('einddatum_partner_'+c).update('tot '+json.partnerEinddata[c]);
							  	}
							  	$('einddatum_partner_geindexeerd').update('tot '+json.partnerEinddata['geindexeerd']);
							}					
							
							// col1 laten verdwijnen
							$('premie-col1').hide();
							$('premie-col2').addClassName('metpartner');
							
							// totaal van beide
							var totaalpremiedelen = splitsValuta(totaalPremie);
							$('gezamenlijkVoorKomma').update(totaalpremiedelen[0]);							
							$('gezamenlijkNaKomma').update(totaalpremiedelen[1]);
						}else{
							if(json.partnerMeldingen.length > 0){
								var str = '';
								json.partnerMeldingen.each(function(melding){
									str += melding.text;
								});
								melding(str);
							}else{
								melding('Er ging iets mis bij het berekenen van de premie van uw partner, probeer later nog eens.');
							}
							doorgaan = false;
						}
						
						// formulier stap 3 resetten
						formulierGeslaagd = false;
						formulierGecheckt = false;
						stap3terugForm();
					}else{
						//$('premiePartnerOpbouw').hide();
						$('partnerPremie').value = 0;
						
						// col 1 weer tonen
						$('premie-col2').removeClassName('metpartner');
						$('premie-col1').show();

					}
					
					// einddata invullen
					if(json.einddata){
						for(var i=1;i<=3;i++){
							$('einddatum_verzekerde_'+i).update('tot '+json.einddata[i]);
						}
						$('einddatum_verzekerde_geindexeerd').update('tot '+json.einddata['geindexeerd']);
					}
					
					// premie invullen
					var premiedelen = splitsValuta(json.premie);
					$('verzekerdePremieVoorKomma').update(premiedelen[0]);
					$('verzekerdePremieNaKomma').update(premiedelen[1]);

					// en nu pas tabblad 2 openen
					if(doorgaan){
						tabClick(2);
					}
				}else{
					
					if(json.meldingen.length > 0){
						var str = '';
						json.meldingen.each(function(melding){
							str += melding.text;
						});
						melding(str);
					}else{
						melding('Er ging iets mis bij het berekenen van uw premie, probeer later nog eens.');
					}
				}
			}
		});
		

	}
}

// indexatie ja of nee
function stap2indexatie(wie){
	var veld = wie+'Geindexeerd';
	var geindexeerd = parseInt($RF(veld)[0]);
	
	// nieuwe premie opvragen
	naarStap2();
	
	// goede zaken openen
	var uc = ucfirst(wie);
	$$('div.premieTab.'+wie).invoke('removeClassName','actief');
	if(geindexeerd == 0){
		$$('div#'+wie+'PremieResultaat span.tooltipGeindexeerd').invoke('hide');
		$$('div#'+wie+'PremieResultaat span.tooltipNormaal').invoke('show');
		
		$('premieTabel'+uc+'_1').hide();
		$('premieTabel'+uc+'_0').show();
		$('premieTab'+uc+'_0').addClassName('actief');
	}else{
		$$('div#'+wie+'PremieResultaat span.tooltipNormaal').invoke('hide');
		$$('div#'+wie+'PremieResultaat span.tooltipGeindexeerd').invoke('show');
		
		$('premieTabel'+uc+'_0').hide();
		$('premieTabel'+uc+'_1').show();		
		$('premieTab'+uc+'_1').addClassName('actief');
	}
	
	$$('input[type="radio"][name="verzekerdeGeindexeerd"]').invoke('setAttribute','checked','');
	$$('input[type="radio"][name="verzekerdeGeindexeerd"][value="'+geindexeerd+'"]')[0].setAttribute('checked','checked');	

}

// van stap 2 naar stap 3
function naarStap3(){
	if(afgesloten == true){
		melding(melding_nietmeerterug);
		return false;
	}
	if(demo){
		melding('Stap 3 is niet beschikbaar in de demo');
		return false;
	}

	if(stapAfgemaakt.indexOf(2)!=-1){ // TODO 1==1 weghalen!!!!
		var formCount = 6;
	
		// invullen verzekerde
			// geslacht
			var geslacht = $RF('verzekerdeGeslacht')+'';
			$$('input[type="radio"][name="formVN[geslacht]"]').invoke('removeAttribute','checked');//,false
			$$('input[type="radio"][name="formVN[geslacht]"][value="'+geslacht+'"]')[0].setAttribute('checked','checked');
			
			$$('input[type="radio"][name="formVZ[1][geslacht]"]').invoke('removeAttribute','checked');//,false);
			$$('input[type="radio"][name="formVZ[1][geslacht]"][value="'+geslacht+'"]')[0].setAttribute('checked','checked');
			
			// geboortedatum 
			var gebdat = $F('verzekerdeGD_dag')+'-'+$F('verzekerdeGD_maand')+'-'+$F('verzekerdeGD_jaar');
			$$('#formVZ1_gebdat, #formVN_gebdat').invoke('setAttribute','value',gebdat);
			
		// partner?
		var partner = $('verzekerdePartner').checked;
		if(partner){
			$$('#formVZ_2, #tab-VZ2, #gezondheidsverklaring_VZ2').invoke('show');
			
			// geslacht en geboortedatum
			geslacht = $RF('partnerGeslacht')+'';
			$$('input[type="radio"][name="formVZ[2][geslacht]"]').invoke('removeAttribute','checked');
			$$('input[type="radio"][name="formVZ[2][geslacht]"][value="'+geslacht+'"]')[0].setAttribute('checked','checked');
			$('formVZ2_gebdat').setAttribute('value',$F('partnerGD_dag')+'-'+$F('partnerGD_maand')+'-'+$F('partnerGD_jaar'));
			
			// formuliertje meer
			//formCount++;
		}else{
			$$('#formVZ_2, #tab-VZ2, #gezondheidsverklaring_VZ2').invoke('hide');
		}
		$('formStapVerzekerden').update($('verzekerdeKinderen').checked ? 'Kinderen >' : 'Gezondheidsverklaring >');
		
		// kinderen?
		if($('verzekerdeKinderen').checked){
			$$('#formKinderen, #tab-kinderen, #gezondheidsverklaring_kind1').invoke('show');
			formCount++;
		}else{
			$$('#formKinderen, #tab-kinderen, #gezondheidsverklaring_kind1').invoke('hide');	
		}
		
		// stel de goede hoogte in
		var padding = 15;
		if(formCount == 7){
			padding = 10;
		}else if(formCount == 8){
			padding = 6;
		}
		$$('div.formulier-stappen ul li a').each(function(f){
			f.setStyle({'paddingLeft':padding+'px','paddingRight':(padding+0)+'px'});
		});
		
		tabClick(3);
	}else{
		melding('U dient eerste de eerste twee stappen te doorlopen.');
	}
}

// Switchen tussen de formulieren
var vnOvernemen = false;
var vzOvernemen = false;
function stap3formSwitch(finished){
	if(!formulierGecheckt){
		stap3valideer(finished,false);
	}else{
		if($H(formulierenGeslaagd).get(finished)){
			var partner = $('verzekerdePartner').checked;
			var kinderen = $('verzekerdeKinderen').checked;
			var form;
			$$('div.formulier').invoke('hide');
			
			switch(finished){
				case 'toelichting':
					form = 'VN';
				break;
				case 'VN':
					form = 'verzekerden';
					
					// eventueel gegevens van VN overnemen voor VZ1
					if($RF('verzekeringnemerIsVerzekerde')==0 && !vnOvernemen){
						$('formVZ1_postcode').value = $F('formVN_postcode');
						$('formVZ1_huisnummer').value = $F('formVN_huisnummer');
						$('formVZ1_toevoeging').value = $F('formVN_toevoeging');
						$('formVZ1_straat').value = $F('formVN_straat');
						$('formVZ1_woonplaats').value = $F('formVN_woonplaats');

						$('formVZ_1_isVN').hide();												
						$('formVZ_1_form').show();
					}else{
					
					}
					
					if(partner){
						// eventueel gegevens van VZ1 overnemen voor VZ2	
						if(!vzOvernemen){
							var veld = $RF('verzekeringnemerIsVerzekerde') == 1 ? 'VN' : 'VZ1';
							$('formVZ2_postcode').value = 	$F('form'+veld+'_postcode');
							$('formVZ2_huisnummer').value = $F('form'+veld+'_huisnummer');
							$('formVZ2_toevoeging').value = $F('form'+veld+'_toevoeging');
							$('formVZ2_straat').value = 	$F('form'+veld+'_straat');
							$('formVZ2_woonplaats').value = $F('form'+veld+'_woonplaats');
						}	
						vzOvernemen = true;				
					}

					vnOvernemen = true;
				break;
				case 'verzekerden':
					form = kinderen ? 'kinderen' : 'gezondheidsverklaring';

				break;
			 	case 'kinderen':
			 		form = 'gezondheidsverklaring';
			 	break;
			 	case 'gezondheidsverklaring':
			 		form = 'betaling';
			 	break;
			 	default:
			}
			
			// juiste formulier tonen
			$('formulier_'+form).show();
			//$('formulier_'+finished+'_status').addClassName('ok');
			
			$$('div.formulier-stappen li').invoke('removeClassName','actief');
    		$('tab-'+form).addClassName('actief');
    		
			formulierGecheckt = false;		
		}
	}
}
function stap3formToggle(form){
	// samenvatting verbergen?
	if(samengevat){
		stap3terugForm();
	}
			
	formulierGecheckt = false;
	$$('div.formulier').invoke('hide');
	$('formulier_'+form).show();
}

// Eerste verzekerde is gelijk aan de verzekeringnemer? Luistert naar radiobuttons 'verzekeringnemerIsVerzekerde'
function stap3VNisVZ(value){
	//if($RF('formulierdef','verzekeringnemerIsVerzekerde')==0){
	if(parseInt(value)==0){
		// VZ1 is niet de VN, formulier tonen
		$('formVZ_1_isVN').hide();
		$('formVZ_1_form').show();
	}else{
		// VZ1 is VN
		$('formVZ_1_form').hide();
		$('formVZ_1_isVN').show();
	}
	
}

// Formulier van een verzekerde
function stap3VerzekerdeInvoer(id){
	$$('div.formVZInner').invoke('hide');
	$$('div.formVZ a').invoke('show');
	
	$('formVZ_'+id+'_inner').show();
	$$('div#formVZ_'+id+' a').invoke('hide');
}

// Extra kind toevoegen aan polis
function stap3NieuwKind(){
	aantalKinderen += 1;
	if(aantalKinderen <= 4){
		new Effect.Appear('formKind_'+aantalKinderen);
		if(aantalKinderen == 4){
			new Effect.Fade($('nieuwKindLink'));
		}
	}else{
		
	}
}

// Aantal kinderen wijzigen
function stap3AantalKinderen(aantal){
	$$('div.formKind, div.gezKind').invoke('hide');
	for(var i = 1;i<=aantal;i++){
		$('formKind_'+i).show();
		$('gezondheidsverklaring_kind'+i).show();
	}
}

// Formulier van een kind openen
function stap3KindInvoer(id){
	$$('div.formKindInner').invoke('hide');
	$$('div.formKind a').invoke('show');
	
	$('formKind_'+id+'_inner').show();
	$$('div#formKind_'+id+' a').invoke('hide');
}

// Gezondheidsverklaring openen
function stap3GezInvoer(id){
	$$('div.gezondheidsverklaring_inner').invoke('hide');
	$$('div.gezondheidsverklaring a.gegInvoer').invoke('show');
	
	$('gezondheidsverklaring_'+id+'_inner').show();
	$$('div#gezondheidsverklaring_'+id+' a.gegInvoer').invoke('hide');
}

// Toelichtingen bij gezondheidsverklaring openen
function stap3GezToggle(wie, veld, waarde){
	if(waarde){
		$('form'+wie+'_gez'+veld+'Uitleg_container').show();
	}else{
		$('form'+wie+'_gez'+veld+'Uitleg_container').hide();	
	}
}

// Soort begunstiging wijzigen
function stap3WijzigBegunstiging(){
	$$('.formBegunstigdenNee').invoke($RF('formBegunstigden')[0]=='nee' ? 'show' : 'hide');
}

// Aantal begunstigden wijzigen
function stap3AantalBegunstigden(aantal){
	$$('div.begunstigde').invoke('hide');
	for(var i = 1;i<=aantal;i++){
		$('begunstigde_'+i).show();
	}
}

// van samenvatting naar formulier
function stap3terugForm(){
	$('samenvatting').hide();
	$('formulierdef').show();

	$('knop-stap-4').update('Toon overzicht >');
	samengevat = 0;
}

// valideer het formulier
function stap3valideer(actie,schrijfSamenvatting){
	preloadStart('Uw gegevens worden gecontroleerd.');
	
	// stuur het formulier door voor validatie
	new Ajax.Request(ajaxPad + '&json=1&mode=samenvatting&schrijfSamenvatting='+(schrijfSamenvatting ? 1 : 0),{ // eigenlijk var ajaxpad
		'method': 'post',
		'parameters': $H($('formulierdef').serialize(true)).
						merge($H($('startForm').serialize(true))).
						merge($H($('premieResultaatForm').serialize(true))),
		'onSuccess':function(transport){
			var json = transport.responseText.evalJSON(true);
			formulierenGeslaagd = json.formulieren;
			
			preloadEinde();

			// verwijder oude meldingen
			$$('#formulierdef tr').invoke('removeClassName','error');
			//$$('#formulierdef tr div.melding').invoke('remove');
			$$('#formulierdef div.meldingen').invoke('hide').invoke('removeClassName','meerdan2');
			$$('#formulierdef div.meldingen div').invoke('update','');

			// gelukt of niet?			
			if(json.formulierGeslaagd == true){

				formulierGeslaagd = true;
				formulierGecheckt = true;
				samenvatting = json.samenvatting;

				// succesactie uitvoeren
				if(!actie){
					// naar stap 4
					naarStap4();
				}else{
					stap3formSwitch(actie);
				}
				
			}else{
				formulierGeslaagd = false;
				
				if(!actie){
					// fouten bij invoer
					melding('U heeft niet alle verplichte velden correct ingevuld.');
				}else{
					if($H(formulierenGeslaagd).get(actie)){
						// deelformulier is goed ingevuld
						formulierGecheckt = true;
						stap3formSwitch(actie);
					}else{
						// deelformulier niet goed ingevuld
						melding('U heeft niet alle verplichte velden correct ingevuld.');
					}
				}
				
				// toon foutmeldingen bij de velden 
				var aantalMeldingen = 0;
				var formID = false;
				json.formulierMeldingen.each(function(melding){
					if($(melding.veld)){
						// indien actie alleen het subdeel
						var showError = true;
						if(actie){				
							if($(melding.veld).up('div.formulier').getAttribute('id').search(actie) == -1){
								showError = false;
							}else{
								//console.log($(melding.veld).up('div.formulier').getAttribute('id'));
							}
						}
					
						// foutmelding tonen?
						if(showError){
							$(melding.veld).up('tr').addClassName('error');
							
							// melding bij veld
							/*
							var fout = new Element('div',{'class':'melding'}).update(melding.text);
							$(melding.veld).up('td').appendChild(fout);
							*/
							
							// melding bovenaan
							var fout = new Element('li').update(melding.text);
							formID = $(melding.veld).up('div.formulier').getAttribute('id').split('_')[1];
							$('meldingen_'+formID+'_inner').appendChild(fout);
							$('meldingen_'+formID).show();
							aantalMeldingen++;
						}
					}
					
					// aantal meldingen verwerken
					if(aantalMeldingen > 2 && formID != false){
						$('meldingen_'+formID).addClassName('meerdan2');
					}
				});
			}
		}
	});
}

// Controller stap 3 en toon de samenvatting of ga naar stap 4
function naarStap4(){
	if(afgesloten == true){
		melding(melding_nietmeerterug);
		return false;
	}
	if(demo){
		melding('Stap 3 is niet beschikbaar in de demo');
		return false;
	}
	
	if(tabHuidig != 3 && stapAfgemaakt.indexOf(3) == -1){
		melding('U dient eerste de eerste drie stappen te doorlopen.');	
	}else{	
		// stap 3 controleren
		if(samengevat == 0){
			if(!formulierGecheckt){
				stap3valideer(false,true);
			}else{
				if(formulierGeslaagd == true){
					formulierGecheckt = false;
					
					// geslaagd, toon samenvatting
					$('samenvatting-target').update(samenvatting);
					$('formulierdef').hide();
					$('samenvatting').show();
					
					// tabbladen bovenin
					$$('div.formulier-stappen li').invoke('removeClassName','actief');
    				$('tab-samenvatting').addClassName('actief');
    				
					$('knop-stap-4').update('Verzekering aanvragen >');
					samengevat = 1;			
				}			
			}
		}else{
			// nu wel naar tab 4?
			if(formulierGeslaagd){
				
				// check of alles goed is aangevinkt
				if($('akkoordAV').checked && $('akkoordCorrect').checked){
					// nu de boel naar de serverkant versturen
					
					// #### onderstaand comment wel weer uncommenten! ####
					preloadStart('Uw aanvraag wordt verstuurd.');
					
					//
					new Ajax.Request(ajaxPad + '&json=1&mode=offerte',{ // eigenlijk var ajaxpad
						'method': 'post',
						'parameters': $H($('formulierdef').serialize(true)).
										merge($H($('startForm').serialize(true))).
										merge($H($('premieResultaatForm').serialize(true))),
						'onSuccess':function(transport){
							var json = transport.responseText.evalJSON(true);	
							var tekst = '';		
							
							// verzekerde 1		
							if(json.cleoUrl1 != 'null' && parseInt(json.errors)==0 && json.opgeslagen){
								tekst = json.succesmessage;
								afgesloten = true;
								stapAfgemaakt.push(3);
								
								// verzekerde 2
								if(parseInt(json.errors2)>0){
									tekst += '<p>De aanvraag voor de tweede verzekerde kon niet verwerkt worden. U kunt het beste binnenkort contact opnemen met uw tussenpersoon.</p>';
								}								
							}else{
								tekst = '<p>Door een technische fout kon uw aanvraag helaas niet worden verwerkt. Onze excuses voor het ongemak. Klik <a href="#" onclick="naarStap3();return false;">hier</a> om het nogmaals te proberen. Natuurlijk kunt u ook telefonisch contact met ons opnemen. Wij helpen u graag verder.</p>';
							}
														
							// tekst plaatsen
							$('bevestiging-target').update(tekst);
							
							// tabblad tonen
							tabClick(4);
							preloadEinde();
						}			
					});
					

				}else{
					melding('Voordat u de verzekering kunt aanvragen dient u akkoord te gaan met de algemene voorwaarden.');
				}
			}else{
				// open formulier opnieuw
				stap3terugForm();
			}
		}
	}
}

/* Calculator uit popup callback */
function calculatorCallback(waarde){
	updateKapitaal(waarde);
	slideControl.setValue(waarde);
}

function get_id(id){
	var ar = id.split("_");
	return ar[ar.length-1];
}

function updateKapitaal(value){
	var kapitaal = $('kapitaal');  
	value = Math.round(value/50)*50;
	$('verzekerdeKapitaal').value = value;
	//$('partnerKapitaal').value = value;
	val = valuta(value);
	kapitaal.update(val);
	$('verzekerdeKapitaalCopy').update(val);
	//$('PP_PROGKAP').value = value;
}

function valuta(val){
	val = val+"";
	if(val >= 10000){
		val = val.substr(0,2)+'.'+val.substr(2,3);
	}else if(val >= 1000){
		val = val.substr(0,1)+'.'+val.substr(1,3);
	}
	return val;
}

function splitsValuta(cijfer){
	cijfer = Math.round(cijfer*100)/100;
	var delen = (cijfer+'').split('.');
	// delen[0] is voor de komma						
	if(delen[1].length > 0){	
		if(delen[1].length == 1){
			delen[1] = delen[1]+'0';
		}
	}else{
		delen[1] = '-';
	}
	return delen;
}

/* Voor instellingen */
function wijzigKleur(){
	kleur = !demo ? steunkleur : $('instellingenKleur').value;
	var items = $$('div#bevestiging-target, div.premieInner,div.tabs ul li.level2 a.tablink,div.tabs ul li.level3 a.tablink,div.tabs ul li.level4 a.tablink, input[type="text"], div.knop, p.formulierVolgende a');
	// , form#startForm  div.content-item,div.samenvatting-inner, form#formulierdef,
	items.each(function(item){
		item.setStyle({'backgroundColor':'#'+kleur});
	});
	
	var items2 = $$('input[type="text"],  div.content-item, div.tabs ul li.actief a.tablink, div.formulier-stappen, div.formKindStijl, div.formVZStijl, div.gezondheidsverklaring');
	items2.each(function(item){
		item.setStyle({'borderColor':'#'+kleur});
	});	
	
	$$('div.tabs ul li.actief a.tablink').each(function(item){
		item.setStyle({'backgroundColor':'#FFFFFF'});
	});
	
	
	var c = new Color('#'+kleur);
	var licht = c.getLighter(60);
	
	// lichte lijnkleur
	$$('form#startForm, div.samenvatting-inner').each(function(item){
		item.setStyle({'borderColor':licht})
	});
}
function wijzigKleurTekst(){
	var kleur = $('instellingenKleurTekst').value;
	var items = $$('div.content');
	items.each(function(item){
		item.setStyle({'color':'#'+kleur});
	});
}
function wijzigKleurKop(){
	var kleur = $('instellingenKleurKop').value;
	var items = $$('div.tabs ul li a.tablink');
	items.each(function(item){
		item.setStyle({'color':'#'+kleur});
	});
}
/*
function wijzigOrientatie(orientatie){
	// instellingen
	$$('li.wijzigOrientatie a').invoke('removeClassName','huidig');
	$('wijzigOrientatie_'+orientatie).addClassName('huidig');
	if(orientatie == 'horizontaal'){
		$('module').removeClassName('verticaal').addClassName('horizontaal');
	}else{
		$('module').removeClassName('horizontaal').addClassName('verticaal');	
	}
	
	// de tool zelf
	var tabs = $$('.tabs li');
	var contents = $$('div.content-item');
	if(orientatie == 'horizontaal'){
		// Horizontale opzet
		contents.each(function(content){
			$('content').appendChild(content);
		});
	}else{
		// Verticale opbouw als accordeon
		contents.each(function(content){
			var id = get_id(content.id);
			$('tab_'+id).appendChild(content);
		});
	}	
}
*/

function melding(melding){
	$('melding-sluit').show();
	$('melding-preloader').hide();
	$('melding-target').update(melding);
	//new Effect.Appear($('melding'),{duration:0.2});
	$('melding').show();
}

function preloadStart(m){
	melding(m);
	$('melding-preloader').show();
	$('melding-sluit').hide();
}
function preloadEinde(){
	$('melding').hide();
}

/* Checkfuncties voor formulier */
function formCheckEmail(value){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var res = filter.test(value);
	return res;
}

function formCheckPostcode(value){
	var filter = /^[1-8]{1}[0-9]{3}[A-Z]{2}$/;
	var res = filter.exec(value);
	return res;
}

function formCheckTelefoon(value){
	var filter = /([0]{1}[6]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){7})|([0]{1}[1-9]{1}[0-9]{1}[0-9]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){5})|([0]{1}[1-9]{1}[0-9]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){6})/;
	var res = filter.exec(value);
	return res;
}

function formCheckDatum(value){
	//var filter = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/;
	//var res = filter.exec(value);
	var spl = value.split('-');
	var fout = false;
	if(spl.length == 3){
		var dag = spl[0];
		var maand = spl[1];
		var jaar = spl[2];
		if(!formCheckNummer(dag) || parseFloat(dag) < 1 || parseFloat(dag) > 31){
			fout = true;
		}		
		if(!formCheckNummer(maand) || parseFloat(maand) < 1 || parseFloat(maand) > 12){
			fout = true;
		}
		if(!formCheckNummer(jaar) || parseFloat(jaar) < 1900 || parseFloat(jaar) > 2100 || jaar.length < 4){
			fout = true;
		}	
	}else{
		fout = true;	
	}
	return !fout;
}

function formCheckNummer(value){
	if (isNaN(parseFloat(value))){
		return false;
	}else{
		return true;	
	}
}

function formCheckSofinummer(value){
	// verwijder alle tekens die geen cijfers zijn
	value = value.replace(/\D/, "");
		
	// loop door de 9 cijfers met de 11 proef formule
	var som = 0;
	for (i=1; i<10; i++) {
		som += value.charAt(i-1) * (10-i);
	} 
	
	// geef resultaat van check terug
	return (som % 11==0 && value.length == 9);
}

/*
function $RF(el, radioGroup) {
	if($(el).type == 'radio') {
		var el = $(el).form;
		var radioGroup = $(el).name;
	} else if ($(el).tagName.toLowerCase() != 'form') {
		return false;
	}
	return $F($(el).getInputs('radio', radioGroup).find(
		function(re) {return re.checked;}
	));
}
*/
function $RF(el){
	return $$('input:checked[type="radio"][name="'+el+'"]').pluck('value');
};
function randomString(){
	return Math.round(Math.random()*1000000);
}

function cl(melding){
	try {
		console.log(melding);
	}catch(error){
	
	}
}

function ucfirst (str) {
    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

/* Tooltips */
// laat een tooltip zien
function showTooltip(a,tooltip){
	var tt = $(tooltip);
	
	// positie
	var hoogte = tt.getHeight() - 15;
	tt.style.top = '-'+Math.round(hoogte/2)+'px';
	
	// laten sluiten bij onclick
	tt.onclick = function(){
		new Effect.Fade(this,{duration:0.3});
	}
	
	// alle andere elementen sluiten
	var tts = $$('.tooltip');
	tts.each(function(t){
		if(t.id != tt.id){
			new Effect.Fade(t,{duration:0.3});
		}
	});
	new Effect.toggle(tt,'appear',{duration:0.3});
}
