// fill Select box with Option values
jQuery.fn.addOptions = function(values, keyname, valuename, defaultvalue) {
	var select = this;
	$.each(values, function(i, val) {
	    var thevalue = '';
	    if (valuename.indexOf(',') > -1) {
	        var valuenames = valuename.split(',');
	        for(vindex in valuenames) {
	            if (valuenames[vindex].charAt(0) == '#') {
                    thevalue += valuenames[vindex].substr(1) + ' ';
	            } else {
                    thevalue += val[valuenames[vindex]] + ' ';
                }
	        }
	    } else {
    	    thevalue = val[valuename];
	    }
	    var option = document.createElement('option');
	    option.appendChild(document.createTextNode(thevalue));
	    option.value = val[keyname];
	    option.selected = defaultvalue == val[keyname];
		select.append(option);
	});
	return this;
};

$(document).ready( function() {
//    $('#submenu').accordion();
    $('#loginform :input[type!=submit]:empty').focus();

    $("#formchangepassword").validate({
		rules: {
			ww: {
				required: true,
				minlength: 5
			},
			hww: {
				required: true,
				minlength: 5,
				equalTo: "#fldwachtwoord"
			}
		},
		messages: {
			ww: {
				required: "Vul een wachtwoord in",
				minlength: "Uw wachtwoord moet minimaal 5 tekens lang zijn."
			},
			hww: {
				required: "Vul een wachtwoord in",
				minlength: "Uw wachtwoord moet minimaal 5 tekens lang zijn.",
				equalTo: "Vul hetzelfde wachtwoord in als hierboven."
			}
		}
	});
    
    
    $("#loginform").validate({
		rules: {
			ww: {
				required: true
			},
			ea: {
				required: true,
				email: true
			}
		},
		messages: {
			ww: "Vul een wachtwoord in",
			ea: "Vul een geldig emailadres in"
		}
	});

    $("#signup").validate({
		rules: {
			voorletters: {
				required: true,
				minlength: 1
			},
			achternaam: {
				required: true,
				minlength: 2
			},
			woonpasnummer: {
				required: true,
				minlength: 9,
				maxlength: 11,
				number: true
			},
			adres: {
				required: true,
				minlength: 1
			},
			huisnummer: {
				required: true,
				minlength: 1
			},
			plaatsnaam: {
				required: true,
				minlength: 1
			},
			postcode: {
				required: true,
				minlength: 4,
				maxlength: 8
			},
			land: {
				required: true
			},
			telefoonnummer: {
				required: false,
				minlength: 9
			},
			ww: {
				required: true,
				minlength: 5
			},
			hww: {
				required: true,
				minlength: 5,
				equalTo: "#fldwachtwoord"
			},
			ea: {
				required: true,
				email: true
			}
		},
		messages: {
			voorletters: "Vul uw voorletters in",
			achternaam: "Vul uw achternaam in",
			woonpasnummer: {
			    required: "Vul uw woonpasnummer in",
			    minlength: "Uw woonpasnummer is minimaal 9 cijfers lang"
			},
			adres: "Vul uw straatnaam in",
			huisnummer: "Vul uw huisnummer in",
			postcode: {
				required: "Vul uw postcode in",
				minlength: "Vul een postcode in van minimaal 4 tekens .",
				maxlength: "Vul een postcode in van maximaal 8 tekens."
			},
			plaatsnaam: "Vul uw woonplaats in",
			land: "Kies het land waar u woont.",
			telefoonnummer: "Vul uw telefoonnummer in",
			ww: {
				required: "Vul een wachtwoord in",
				minlength: "Uw wachtwoord moet minimaal 5 tekens lang zijn."
			},
			hww: {
				required: "Vul een wachtwoord in",
				minlength: "Uw wachtwoord moet minimaal 5 tekens lang zijn.",
				equalTo: "Vul hetzelfde wachtwoord in als hierboven."
			},
			ea: "Vul een geldig emailadres in"
		}
	});

	$("#belmeterug").validate();
	
    $("#repverzoek").validate({
		rules: {
			naam: {
				required: true,
				minlength: 2
			},
			woonpasnummer: {
				required: true,
				minlength: 9,
				maxlength: 11,
				number: true
			},
			adres: {
				required: true,
				minlength: 1
			},
			plaats: {
				required: true,
				minlength: 1
			},
			postcode: {
				required: true,
				minlength: 6,
				maxlength: 8
			},
			telefoon: {
				required: true,
				minlength: 9
			},
			emailadres: {
				required: true,
				email: true
			}
		},
		messages: {
			naam: "Vul uw naam in",
			woonpasnummer: {
			    required: "Vul uw woonpasnummer in",
			    minlength: "Uw woonpasnummer is minimaal 9 cijfers lang"
			},
			adres: "Vul uw adres in (straatnaam, huisnummer)",
			postcode: {
				required: "Vul uw postcode in",
				minlength: "Vul een postcode in volgens het formaat 1234AB.",
				maxlength: "Vul een postcode in volgens het formaat 1234AB."
			},
			plaats: "Vul uw woonplaats in",
			telefoon: "Vul uw telefoonnummer in",
			emailadres: "Vul een geldig emailadres in"
		}
    });

	if ($("#locatie").length > 0) {
	
	    $(".rep_select").change(function() {
	        $("#"+this.id+"naam").val($("option:selected", this).text());
	    });
	
	    var $locatie = $("#locatie");
	    var $onderdeel = $("#onderdeel");
	    var $defect = $("#defect");

	    $locatie.change(function(e) {
	        e.preventDefault();
	        var url = _serverroot+"/reparatie_json.php";
	        $.getJSON(url, {'func':'onderdelen', 'locatie':$locatie.val()}, function(data, textStatus) {
	            $onderdeel.find("option:gt(0)").remove();
	            $defect.find("option:gt(0)").remove();
                $onderdeel.addOptions(data, 'ONDERDEELCODE','ONDERDEELNAAM');
	        });
	    });

	    $onderdeel.change(function(e) {
	        e.preventDefault();
	        var url = _serverroot+"/reparatie_json.php";
	        $.getJSON(url, {'func':'defecten', 'locatie':$locatie.val(), 'onderdeel': $onderdeel.val()}, function(data, textStatus) {
	            $defect.find("option:gt(0)").remove();
                $defect.addOptions(data, 'DEFECTCODE','DEFECTNAAM');
	        });
	    });

	}

	$("#rep_email").change(function(e) {
	    if ($(this).val() == '')
            $("#stuurkopie").attr('checked', false);
        else
            $("#stuurkopie").attr('checked', true);
	});

    var gegevens_validate = {
        errorPlacement: function(error, element) {
            element.parent().append(error)
        },
        ignore: ":disabled",
		rules: {
			voorletters: {
				required: true,
				minlength: 1
			},
			achternaam: {
				required: true,
				minlength: 2
			},
			geboortedatum: {
				required: true
			},
			geslacht: {
				required: true
			},
			nationaliteit: {
			    required: true,
			    minlength: 2,
			    maxlength: 30
			},
			straatnaam: {
				required: true,
				minlength: 1
			},
			huisnummer: {
				required: true,
				minlength: 1
			},
			plaatsnaam: {
				required: true,
				minlength: 1
			},
			postcode: {
				required: true,
				minlength: 4,
				maxlength: 8
			},
			telefoonthuis: {
				required: false,
				minlength: 9
			},
			telefoonwerk: {
				required: false,
				minlength: 9
			},
			telefoonmobiel: {
				required: false,
				minlength: 9
			},
			ea: {
				required: true,
				email: true
			},
			woonsituatie : {
			    required: true
			},
			naamhuidigeverhuurder: {
			    required: true
			},
			adreshuidigeverhuurder: {
			    required: true
			},
			part_naamhuidigeverhuurder: {
			    required: true
			},
			part_adreshuidigeverhuurder: {
			    required: true
			},
			aanvragerinkomen: {
			    required: true
			},
			huurtvanaf: {
			    required: true,
			    range: [1900,2020]
			},
			aantalvolwassenen: {
			    required: true,
			    range: [1,15]
			},
			aantalkinderen: {
			    required: true,
			    range: [0,15]
			},
			formakkoord: {
			    required: true
			}
		},
		messages: {
			voorletters: "Vul de voorletters in",
			achternaam: "Vul de achternaam in",
			geboortedatum: "Vul de geboortedatum in",
			geslacht: "Vul het geslacht in",
			straatnaam: "Vul de straatnaam in",
			huisnummer: "Vul het huisnummer in",
			postcode: {
				required: "Vul de postcode in",
				minlength: "Vul een postcode in van minimaal 4 tekens.",
				maxlength: "Vul een postcode in van maximaal 8 tekens."
			},
			plaatsnaam: "Vul de woonplaats in",
			telefoonthuis: "Telefoonnummer is minimaal 9 cijfers",
			telefoonwerk: "Telefoonnummer is minimaal 9 cijfers",
			telefoonmobiel: "Telefoonnummer is minimaal 9 cijfers",
			ea: "Vul een geldig emailadres in",
			huurtvanaf: "Vul een jaartal in",
			formakkoord: "U moet akkoord gaan om het formulier te versturen"
		}
	};
    $("#wp_gegevens").validate(gegevens_validate);
    $("#wp_partnergegevens").validate(gegevens_validate);
    $("#wp_huishoudinkomen").validate(gegevens_validate);

    // alleen partner gegevens valideren als er een partner is
    $("#wp_partnergegevens input.submit").click(function(e) {
        e.preventDefault();
        var valid = true;
        if ( $("#divPartnergegevens").is(':visible') ) {
            valid = $("#wp_partnergegevens").valid();
        } else {
            valid = true;
        }
        if (valid)
            $("#wp_partnergegevens")[0].submit();
    });
    
    $("#wp_bevestigen").submit(function(e) {
        e.preventDefault();
        valid = $("#formakkoord").attr('checked');
        if (valid)
            $("#wp_bevestigen")[0].submit();
    });
    
    // partner? dan partner formulier tonen
    $("#_btnPartnerJa,#_btnPartnerNee").click(function(e) {
        $("#divPartnergegevens").slideToggle();
    });
    if ($("#_btnPartnerJa").attr('checked') == true) {
        $("#divPartnergegevens").slideToggle();
    }
    
    // Woonsituatie is huur? dan extra keuze tonen
    $("input[name=woonsituatie]").click(function() {
        if (this.value == 'H')
            $("tr.eigendom").show();
        else
            $("tr.eigendom").hide();
            
    });
    if ($("#fldwoonsituatie_huur").attr('checked')) {
            $("tr.eigendom").show();
    }
    
    // Woonsituatie is huur en eigendom van WG? dan extra keuze tonen
    $("input[name=eigendomwg]").click(function() {
        if (this.value == 'J') {
            $("#grphuurtvanaf").show();
            $("#fldhuurtvanaf").removeAttr('disabled');
        } else {
            $("#grphuurtvanaf").hide();
            $("#fldhuurtvanaf").attr('disabled','disabled');
        }
    });
    
    $("#fldhuurtvanaf").attr('disabled','disabled');
    
    if ($("#fldeigendom_ja").attr('checked')) {
            $("#grphuurtvanaf").show();
            $("#fldhuurtvanaf").removeAttr('disabled');
    }
    if ($("#fldeigendom_nee").attr('checked')) {
            $("#fldhuurtvanaf").attr('disabled', 'disabled');
    }

    // ie7 bugfix
    var html = $('#rekenhulpform').clone();
    $('#rekenhulpform').remove();
    $('body').append(html);        

    $("a.rekenhulp").click(function(e){
        e.preventDefault();
        $reken_veld = $("#"+$(this).attr('ref'));
        
        initRekenhulp();
        
        $("#tablejaaropgave,#tablezonderjaaropgave").hide().find("input").val('');
        $("#fldjaaropgave_ja").removeAttr('checked');
        $("#fldjaaropgave_nee").removeAttr('checked');
        $("#rekenhulpform").jqm().jqmShow();
//        $('#rekenhulpform').jqm({ajax:_serverroot+'/nl/wp_huishoudinkomen/'}).jqmShow();
    });

    var $reken_veld = null;
    
    var initRekenhulp = function () {
        // rekenhulpen
        $(".numeric").numeric(",");
        
        $("#fldjaaropgave_ja").click(function(e) {
            $("#tablejaaropgave").show().find("input:first").focus();
            $("#tablezonderjaaropgave").hide();
        });
        $("#fldjaaropgave_nee").click(function(e) {
            $("#tablejaaropgave").hide();
            $("#tablezonderjaaropgave").show().find("input:first").focus();
        });
        
        $("#fldopg_brutobedrag,#fldopg_meerbedrag").change(function() {
            if ($("#fldopg_brutobedrag").val() == '') $("#fldopg_brutobedrag").val(0);
            if ($("#fldopg_meerbedrag").val() == '') $("#fldopg_meerbedrag").val(0);
            $("#fldopg_totaalbedrag").val(parseFloat($("#fldopg_brutobedrag").val().replace(',','.')) + parseFloat($("#fldopg_meerbedrag").val().replace(',','.')));
        });
    
        $("#fldzonderopg_brutobedrag,#fldzonderopg_meerbedrag,#fldzonderopg_aantalmaanden").change(function() {
            if ($("#fldzonderopg_brutobedrag").val() == '') $("#fldzonderopg_brutobedrag").val(0);
            if ($("#fldzonderopg_meerbedrag").val() == '') $("#fldzonderopg_meerbedrag").val(0);
            if ($("#fldzonderopg_aantalmaanden").val() == '') $("#fldzonderopg_aantalmaanden").val(12);
            var bedrag = parseFloat($("#fldzonderopg_brutobedrag").val().replace(',','.')) + parseFloat($("#fldzonderopg_meerbedrag").val().replace(',','.'));
            $("#fldzonderopg_totaalbedrag").val(bedrag * parseInt($("#fldzonderopg_aantalmaanden").val()));
        });
        
        $("#rekenhulp_ok").click(function(e) {
            e.preventDefault();
            if ($("#fldjaaropgave_ja").attr('checked')) {
                if ($("#fldopg_totaalbedrag").val() != '')
                    $reken_veld.val($("#fldopg_totaalbedrag").val());
            } else {
                if ($("#fldzonderopg_totaalbedrag").val() != '')
                    $reken_veld.val($("#fldzonderopg_totaalbedrag").val());
            }
            
        });
    }
});

