(function(n){function f(i,r,u,f){var e=r+n.param(u);t.hasOwnProperty(e)?typeof f!="undefined"&&f(i,t[e]):(i.spinner.show(),n.ajax({crossDomain:!0,dataType:"jsonp",timeout:i.timeout,url:r,data:u,success:function(n){t[e]=n;typeof f!="undefined"&&f(i,n)},error:function(){s(i,"Unable to contact Pro6PP validation service")},complete:function(){i.spinner.hide()}}))}function e(){return"https://api.pro6pp.nl/v1"}function o(n){var r,o,s,t;n.message.hide().empty();r=n.postcode.val();o=n.streetnumber.val();NL_SIXPP_REGEX.test(r)&&(typeof o=="undefined"||NL_STREETNUMBER_REGEX.test(o))?(i(n),s=e()+"/autocomplete",t={},t.auth_key=u,t.nl_sixpp=r,typeof n.streetnumber!="undefined"&&(t.streetnumber=n.streetnumber.val()),f(n,s,t,l)):n.street.empty()}function i(n){n.street.show();n.streets.hide();var t=n.streets.val();typeof t!="undefined"&&t!==""&&(n.street.val(t),n.street.data("old_streetname",t))}function h(n){n.street.hide();n.streets.show()}function c(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function l(t,r){if(r.status==="ok"){if(a(t),r.results.length===1)t.street.val(r.results[0].street);else{var u=t.streets;u.empty();n.each(r.results,function(r,f){var o=c(f.street),s="",e;t.street.data("old_streetname")===o&&(s=" selected='selected'");e=n("<option value='"+o+"'"+s+">"+f.street+"<\/option>");u.append(e);e.click(function(){i(t)})});h(t)}t.addressfound.val("true");t.city.val(r.results[0].city);t.municipality.val(r.results[0].municipality);t.province.val(r.results[0].province);t.lat.val(r.results[0].lat);t.lng.val(r.results[0].lng);t.areacode.val(r.results[0].areacode);t.streetnumbers.val(r.results[0].streetnumbers);t.postcode.val(t.postcode.val().toUpperCase())}else t.addressfound.val("false"),s(t,r.error.message)}function s(n,t){var i=t;t==="nl_sixpp not found"||t==="nl_fourpp not found"||t==="Invalid nl_sixpp format"?(i="Onbekende postcode",r(n,!0,!1)):t==="Streetnumber not found"?(i="Onbekend huisnummer",r(n,!0,!1)):t==="streetnumber is missing a number"?i="Ongeldig huisnummer":t==="invalid postcode format"?i="Ongeldig postcode formaat":t==="Unable to contact Pro6PP validation service"&&(i="Geen verbinding met validatieserver",r(n,!1,!0));n.message.html(i).show()}function r(n,t,i){(i!==!0||n.gracefully_degrade!==!1)&&(t!==!0||n.enforce_validation!==!0)&&(n.street.removeAttr("readonly"),n.city.removeAttr("readonly"))}function a(n){n.street.attr("readonly","readonly");n.city.attr("readonly","readonly")}function v(n){var i=n.postcode.val(),r=n.street.val(),s=n.streetnumber.val(),o,t;n.provide_feedback&&NL_SIXPP_REGEX.test(i)&&!n.street.attr("readonly")&&r&&(o=e()+"/feedback",t={},t.auth_key=u,t.nl_sixpp=i,t.street=r,t.streetnumber=s,f(n,o,t,null))}var u="wohb5DlxQ53Nubg2",t;NL_SIXPP_REGEX=/[0-9]{4,4}\s?[a-zA-Z]{2,2}/;NL_STREETNUMBER_REGEX=/[0-9]+/;n.fn.applyAutocomplete=function(t){function u(i){return typeof t=="undefined"||typeof t[i]=="undefined"?r.find("."+i):n(t[i])}var e={timeout:1e4,enforce_validation:!0,gracefully_degrade:!0,provide_feedback:!1},r=this,f;for(f in e)(typeof t=="undefined"||typeof t[f]=="undefined")&&(r[f]=e[f]);r.addressfound=u("addressfound");r.postcode=u("postcode");r.streetnumber=u("streetnumber");r.street=u("street");r.streets=u("streets");r.city=u("city");r.municipality=u("municipality");r.province=u("province");r.lat=u("lat");r.lng=u("lng");r.areacode=u("areacode");r.streetnumbers=u("streetnumbers");r.message=u("message");r.spinner=u("spinner");r.postcode.attr("autocomplete","off");r.postcode.keyup(function(){o(r)});r.streetnumber.attr("autocomplete","off");r.streetnumber.blur(function(){o(r)});r.street.blur(function(){v(r)});typeof r.streets!="undefined"&&r.streets.blur(function(){i(r)})};t={}})(jQuery);$(function(){$(".address").applyAutocomplete({enforce_validation:!0,spinner:".pro6pp_spinner"})});var Service={ibanEndpoint:"https://shared.cherry-t.com/IBAN.svc/",logEndpoint:"https://shared.cherry-t.com/Log.svc/",attach:function(n,t,i){if(i=typeof i!="undefined"?i:"blur",typeof n=="string"&&(n=$(n)),n&&typeof n=="object")$(n).on(i,t)},attachIBAN:function(n,t){Service.attach(n,function(){var t=$(this).val(),n=IBAN.Convert(t);n&&$(this).val(n)},t)},debug:function(n){window.console&&typeof window.console.log=="function"?window.console.log(n):alert(n)}},IBAN={Convert:function(n){var r="Convert/"+n,u=Service.ibanEndpoint+r,i,t;try{if(!n)throw"Unable to validate empty input";if(i=$.ajax({type:"GET",url:u,dataType:"json",async:!1}),t=$.parseJSON(i.responseText),!t||!t.Converted||t.Converted!==!0||!t.IBAN)throw"Unable to convert "+n;if(t.ErrorMessage)throw t.ErrorMessage;return t.IBAN}catch(f){Service.debug(f)}},Validate:function(n){var r="Validate/"+n,u=Service.ibanEndpoint+r,i,t;try{if(!n)throw"Unable to validate empty input";if(i=$.ajax({type:"GET",url:u,dataType:"json",async:!1}),t=$.parseJSON(i.responseText),!t.IsValid||t.IsValid!==!0)throw t.Message;return!0}catch(f){Service.debug(f)}return!1}};$(function(){Service.attachIBAN($("#IBAN"))});$.fn.loadCountries=function(){var n=this;$.getJSON("/api/Country/?language=NL",function(t){$.each(t,function(){n.append($("<option />").val(this.Id).attr("selected",this.Name=="Nederland").text(this.Name))})})}