window.PolicyModal=function(){function n(n,t,i,r,u,f){i===void 0&&(i=!1);r===void 0&&(r=!0);u===void 0&&(u=!0);f===void 0&&(f=[1,2]);this.view=n;this.ajaxPath=t;this.viewMode=i;this.consentRequired=r;this.displayGDPRInformationPolicy=u;this.visibleTypes=f;this.policies={};this.templates={tplModal:$("#tpl-policy-modal").html(),tplConsent:$("#tpl-policy-consent").html(),tplInformation:$("#tpl-policy-information").html(),tplTerms:$("#tpl-policy-terms").html(),tplError:$("#tpl-policy-error").html(),tplConsentCheckbox:$("#tpl-policy-consent-checkbox").html(),tplInformationCheckbox:$("#tpl-policy-information-checkbox").html(),tplTermsCheckbox:$("#tpl-policy-terms-checkbox").html()};this.fetchPolicies()}return n.prototype.updateApplicantPolicy=function(n,t){$.post(this.ajaxPath+"/"+n,{accepted:t}).always(function(){return window.location.reload(!0)})},n.prototype.fetchPolicies=function(){var n=this;$("[data-policy]").on("click keypress",function(t){t.preventDefault();n.clickedElement=t.target});$.getJSON(this.ajaxPath+"?_="+(new Date).getTime()).done($.proxy(this.onPoliciesFetched,this)).fail(function(){return n.policies={}})},n.prototype.fetchPolicy=function(n,t,i,r){var u=this;t===void 0&&(t=!1);i===void 0&&(i=!0);r===void 0&&(r=!0);$.getJSON(this.ajaxPath+"/"+n+"?_="+(new Date).getTime()).done(function(n){return u.showModal(null,n,t,i,r)}).fail($.proxy(this.onPolicyFailed,this))},n.prototype.showModal=function(n,t,i,r,u,f){var c=this,e,s,h,o;i===void 0&&(i=!1);r===void 0&&(r=!0);u===void 0&&(u=!0);f===void 0&&(f=!1);t=n!==null?this.policies[n]:t;n=n===null?t.Type:n;e={Id:null,Body:"",PolicyRequired:!1,IsReadOnly:i,IsRevoked:r,IsAccepted:u};s={};t&&n===0?(e.Id=t.Id,e.Body=t.Body,e.PolicyRequired=this.consentRequired||f,s.tplPolicyContent=this.templates.tplConsent):t&&n===1?(e.Id=t.Id,e.Body=t.Body,e.PolicyRequired=this.displayGDPRInformationPolicy,s.tplPolicyContent=this.templates.tplInformation):s.tplPolicyContent=this.templates.tplTerms;$("body").append(Mustache.render(this.templates.tplModal,e,s));h=document.getElementById("AcceptInformationPolicy");o=$("#policy-modal");o.on("hidden.bs.modal",function(){o.remove();c.clickedElement&&c.clickedElement.focus();h&&h.focus()});o.on("shown.bs.modal",function(){o.find(".modal-body").attr("tabindex","-1").focus()});o.modal("show");$("#policy-modal").find("[data-action]").on("click",$.proxy(this.onPolicyAction,this))},n.prototype.onPoliciesFetched=function(n){var i,u,f,r,e,t;if(this.policies={},n&&n.length>0){for(i=0,u=n;i<u.length;i++)f=u[i],this.policies[f.Type]=f;if(!this.viewMode)for(r=0,e=this.visibleTypes;r<e.length;r++)t=e[r],this.policies[t]&&t===0?this.view.append(Mustache.render(this.templates.tplConsentCheckbox,{Id:this.policies[t].Id,Required:this.consentRequired})):this.policies[t]&&t===1&&this.view.append(Mustache.render(this.templates.tplInformationCheckbox,{Id:this.policies[t].Id,Required:this.displayGDPRInformationPolicy}))}if(this.displayGDPRInformationPolicy||this.view.find("#AcceptInformationPolicy").prop("checked",!0),!this.viewMode){this.view.find(".policy-checkbox").length===0&&this.view.append(Mustache.render(this.templates.tplTermsCheckbox,{}));this.view.find(".policy-checkbox").on("change",$.proxy(this.onShowModal,this))}this.view.trigger("policies-ready")},n.prototype.onPolicyFailed=function(){this.view.append(Mustache.render(this.templates.tplModal,{},{tplPolicyContent:this.templates.tplError}));$("#policy-modal").modal("show").on("hidden.bs.modal",function(){$("#policy-modal").remove()})},n.prototype.onShowModal=function(n){var t=$(n.target).data("policy");t!==1||this.displayGDPRInformationPolicy?$(n.target).is(":checked")&&(t===0?this.showModal(0,null):t===1?this.showModal(1,null):this.showModal(-1,null)):this.showModal(1,null)},n.prototype.onPolicyAction=function(n){n.preventDefault();n.stopPropagation();var t=$(n.target).closest("[data-policy]").data("policy"),i=$(n.target).closest("[data-action]").data("action");if(this.viewMode)switch(i){case"consent-accept":case"information-read":this.updateApplicantPolicy(t,!0);break;case"consent-reject":this.updateApplicantPolicy(t,!1)}else switch(i){case"consent-accept":this.view.find("#AcceptConsentPolicy").prop("checked",!0).focus();$(document).trigger("policyChange",this.view.find("#AcceptConsentPolicy"));break;case"consent-reject":this.view.find("#AcceptConsentPolicy").prop("checked",!1).focus();$(document).trigger("policyChange",this.view.find("#AcceptConsentPolicy"));break;case"information-read":this.view.find("#AcceptInformationPolicy").prop("checked",!0).focus();$(document).trigger("policyChange",this.view.find("#AcceptInformationPolicy"));break;case"information-not-read":this.view.find("#AcceptInformationPolicy").prop("checked",!1).focus();$(document).trigger("policyChange",this.view.find("#AcceptInformationPolicy"));break;case"terms-accept":this.view.find("#AcceptLegacyTerms").prop("checked",!0).focus();$(document).trigger("policyChange",this.view.find("#AcceptLegacyTerms"))}$("#policy-modal").modal("hide")},n}()