function ResizeInput(n,t){if(t=="")$(n).width("auto");else{var i=t.length*6;$(n).width(i+3)}}function KoIntegerConstraint(n,t,i){t===undefined&&(t=!0);i===undefined&&(i=0);var r=this;r.maxDigits=n;r.init=function(u,f){r.update(u,f);ko.utils.registerEventHandler(u,"keydown",function(t){var i=t.charCode||t.keyCode;if(i>=48&&i<=57||i>=96&&i<=105){if(u.value.length>=n&&!utilModule.isAnyTextSelected(u))return!1}else switch(i){case 9:break;case 8:break;case 46:break;case 37:break;case 39:break;default:return!1}});ko.utils.registerEventHandler(u,"focus",function(){u.select()});ko.utils.registerEventHandler(u,"focusout",function(){var n=u.value,r,e;r=t?!n||n==""?i:parseInt(n):n;e=f();e(r)})};r.update=function(n,t){var i=ko.utils.unwrapObservable(t());i||i==0||(i="");n.value=i}}var ajaxModule=function(){var u,n=!1,i="We're sorry, something went wrong. Please try reloading the page or contact Fidelity Life for support.",f=null,l=500,r=ko.observableArray(),e=ko.observable(!1),a=function(t){u=t;jQuery.ajaxSetup({cache:!1,headers:{"cache-control":"no-cache"}});$.blockUI.defaults.message=null;$.blockUI.defaults.fadeIn=0;$.blockUI.defaults.fadeOut=0;$.blockUI.defaults.overlayCSS={};$(document).ajaxStart(function(){$("body.ajax-blockui #content").block();f=setTimeout(function(){$("#ajax-loader").show()},l)});$(document).ajaxStop(function(){n=!1;$("#ajax-loader").hide();$("body.ajax-blockui #content").unblock();clearTimeout(f)});$(".ajax-submit").each(function(){$(this).click(function(n){n.preventDefault();var t=$(this).parents("form");c(t)})});ko.applyBindings(ajaxModule,$("#validation-dialog").get(0));$("#errors .validation-summary-errors").length&&$("#errors").show()},o=function(n){eappModule.dialogOpen()?eappModule.errorMessage(n):utilModule.showErrors(n)},s=function(n,t){utilModule.hideErrors();n?(r.removeAll(),n.Successful?t?t(n):n.ConfirmationMessage?utilModule.showConfirmation(n.ConfirmationMessage):n.RedirectUrl&&(top.location=n.RedirectUrl):n.ErrorMessage?o(n.ErrorMessage):n.ValidationErrors&&n.ValidationErrors.length>0&&(_.each(n.ValidationErrors,function(n){_.each(n.Errors,function(n){r.push(n)})}),e(!0))):utilModule.showErrors(i)},t=function(){o(i)},v=function(i,r){n||$.ajax({type:"GET",url:i,dataType:"json",success:function(n){r(n)},error:t})},h=function(i,r,u){n||$.ajax({type:"POST",url:i,data:r,contentType:"application/json; charset=utf-8",dataType:"json",success:function(n){s(n,u)},error:t})},c=function(i,r){if(!n){var u={type:"POST",dataType:"json",success:function(n){s(n,r)},error:t};i.ajaxSubmit(u)}},y=function(i,r){n||$.ajax({type:"GET",url:i,dataType:"html",success:function(n){r(n)},error:t})},p=function(n){alert(i);alert(n.message);var t=JSON.stringify({ExceptionMessage:n.message});h(u.logException,t)},w=function(){n=!1};return{init:a,getJson:v,postJson:h,postForm:c,getHtml:y,processException:p,validationMessages:r,showValidationMessages:e,overrideRequestFlag:w}}();ko.observableArray.fn.isObservableArray=!0;ko.isObservableArray=function(n){return n.isObservableArray};ko.dirtyFlag=function(n,t,i){var r=function(){};return r.lastKnownState={},r.isDirty=ko.observable(!1),_.each(n,function(u,f){var e=n[f];!ko.isObservable(e)||ko.isObservableArray(e)||ko.isComputed(e)||_.indexOf(i,f)!=-1||(r.lastKnownState[f]=e(),e.subscribe(function(i){var u=r.lastKnownState[f];if(!(!u&&!i&&i!=0)&&i!==u){r.lastKnownState[f]=e();r.isDirty(!0);var o="Dirty"+t,s={ID:n.ID(),PropName:f,PropVal:e()},h=ko.toJSON(s);ko.postbox.publish(o,h)}}))}),r.clear=function(){r.isDirty(!1)},r};ko.bindingHandlers.clickSet={init:function(n,t,i,r){ko.utils.registerEventHandler(n,"click",function(){var f=ko.utils.unwrapObservable(t())||{},i,u,n;for(i in f)u=ko.utils.unwrapObservable(f[i]),n=r[i],ko.isObservable(n)?n(u):n=u})}};ko.bindingHandlers.clickToggle={init:function(n,t,i){ko.utils.registerEventHandler(n,"click",function(){var n=i().clickToggle;ko.isObservable(n)?n(!n()):n=!n})}};ko.bindingHandlers.dateMask={init:function(n,t){$(n).inputmask("dd/mm/yyyy");ko.bindingHandlers.dateMask.update(n,t);ko.utils.registerEventHandler(n,"focus",function(){n.select()});ko.utils.registerEventHandler(n,"focusout",function(){var i=t();i(n.value)})},update:function(n,t){var i=ko.utils.unwrapObservable(t());i||(i="");n.value=i}};ko.bindingHandlers.datePicker={init:function(n,t){$(n).datepicker({dateFormat:"dd/mm/yy"});$(n).inputmask("dd/mm/yyyy");ko.utils.registerEventHandler(n,"change",function(){var i=t(),r=$(n).datepicker("getDate");r?i(utilModule.formatDate(r)):i(null)})},update:function(n,t){var i=ko.utils.unwrapObservable(t());i||(i="");n.value=i}};ko.bindingHandlers.autoCompleteBox={init:function(n,t){(function(t){t.widget("custom.combobox",{_create:function(){this.wrapper=t("<span>").addClass("AutoCompleteDropDown").insertAfter(this.element);this.element.hide();this._createAutocomplete()},_createAutocomplete:function(){var r=this.element.children(":selected"),f=r.val()?r.text():"",u=!1,i;this.input=t("<input>").appendTo(this.wrapper);i=this.input;i.attr("title","").autocomplete({delay:0,minLength:0,source:t.proxy(this,"_source"),select:function(i,r){r.item.option.selected=!0;t(n).val(r.item.option.value).change();ResizeInput(this,r.item.option.text);t(n).trigger("selected",i,{item:r.item.option})},change:"_removeIfInvalid"});i.mousedown(function(){u=i.autocomplete("widget").is(":visible")}).click(function(){(i.focus(),u)||i.autocomplete("search",t(i).val())});this._on(i,{autocompleteselect:function(n,t){t.item.option.selected=!0;this._trigger("select",n,{item:t.item.option})},autocompletechange:"_removeIfInvalid"});t(n).ready(function(){t(n).next().find("input").val(t(n).find(":selected").text());ResizeInput(t(n).next().find("input"),t(n).find(":selected").text())})},_source:function(n,i){var r=new RegExp(t.ui.autocomplete.escapeRegex(t.trim(n.term)),"i"),u=this.element.children("option").map(function(){var i=t(this).text();if(this.value&&(!n.term||r.test(i)))return{label:i,value:i,option:this}});i(u)},_removeIfInvalid:function(i,r){if(!r.item){var e=this.input.val(),u=e.toLowerCase(),f=!1;if(this.element.children("option").each(function(){if(t(this).text().toLowerCase()===u)return this.selected=f=!0,!1}),f){ResizeInput(this.input,u);return}this.input.val("");this.element.val("");this.input.data("ui-autocomplete").term="";t(n).val(null).change();t(n).trigger("selected",i,{item:null});ResizeInput(this.input,"")}},_destroy:function(){this.wrapper.remove();this.element.show()}})})(jQuery);$(n).combobox();ko.utils.registerEventHandler(n,"change",function(){var i=t(),r=$(n).val();r?i(r):i(null)})},update:function(n,t,i){var r=ko.utils.unwrapObservable(t()),u=i(),f=$(n).next().find("input");f.prop("disabled",!ko.toJS(u).enable).val($(n).find('option[value="'+r+'"]').text());r||(r="");n.value=r}};ko.bindingHandlers.factorMask={init:function(n,t){$(n).inputmask("9.9");ko.bindingHandlers.factorMask.update(n,t);ko.utils.registerEventHandler(n,"focus",function(){n.select()});ko.utils.registerEventHandler(n,"focusout",function(){var i=n.value,r=!i||i==""?0:parseFloat(i),u=t();u(r)})},update:function(n,t){var i=ko.utils.unwrapObservable(t());i&&i!=0?(i+"").indexOf(".")==-1&&(i=i+".0"):i="0.0";n.value=i}};ko.bindingHandlers.percentage=new KoIntegerConstraint(3);ko.bindingHandlers.years=new KoIntegerConstraint(2);ko.bindingHandlers.yearsText=new KoIntegerConstraint(2,!1);ko.bindingHandlers.yearsAge=new KoIntegerConstraint(2,!0,"");ko.bindingHandlers.policyNumber=new KoIntegerConstraint(7);ko.bindingHandlers.currency={init:function(n,t){ko.bindingHandlers.currency.update(n,t);ko.utils.registerEventHandler(n,"keydown",function(n){var t=n.charCode||n.keyCode;if(!(t>=48&&t<=57||t>=96&&t<=105))switch(t){case 9:break;case 8:break;case 46:break;case 37:break;case 39:break;default:return!1}});ko.utils.registerEventHandler(n,"keyup",function(t){var i=t.charCode||t.keyCode;(i>=48&&i<=57||i>=96&&i<=105)&&ko.bindingHandlers.currency.format($(n))});ko.utils.registerEventHandler(n,"focus",function(){n.select()});ko.utils.registerEventHandler(n,"focusout",function(){var i=n.value,r=!i||i==""?0:parseInt(i.replace(/[^\d\.]/g,"")),u=t();u(r)})},update:function(n,t){var r=ko.utils.unwrapObservable(t()),i=$(n);i.val(r);ko.bindingHandlers.currency.format(i)},format:function(n){n.formatCurrency({roundToDecimalPlace:-2})}};ko.bindingHandlers.decimalCurrency={init:function(n,t){ko.bindingHandlers.decimalCurrency.update(n,t);ko.utils.registerEventHandler(n,"keydown",function(t){var i=t.charCode||t.keyCode,r=n.value.indexOf(".");if(i>=48&&i<=57||i>=96&&i<=105){if(r!=-1&&n.selectionStart>r&&r<n.value.length-2&&!utilModule.isAnyTextSelected(n))return!1}else switch(i){case 9:break;case 8:break;case 46:break;case 37:break;case 39:break;case 190:case 110:if(r!=-1)return!1;break;default:return!1}});ko.utils.registerEventHandler(n,"keyup",function(t){var i=t.charCode||t.keyCode;(i>=48&&i<=57||i>=96&&i<=105||i==8||i==46)&&$(n).formatCurrency({roundToDecimalPlace:-1})});ko.utils.registerEventHandler(n,"focus",function(){n.select()});ko.utils.registerEventHandler(n,"focusout",function(){var i=n.value,r=!i||i==""?0:parseFloat(i.replace(/[^\d\.]/g,"")),u=t();u(r);n.value=utilModule.formatCurrency(r)})},update:function(n,t){var i=ko.utils.unwrapObservable(t());n.value=utilModule.formatCurrency(i)}};ko.bindingHandlers.combobox={init:function(n,t){var r=t(),i=$(n).next("input").get(0);ko.utils.registerEventHandler(i,"focus",function(){i.select()});ko.utils.registerEventHandler(n,"change",function(){r(n.value)});n.value=i.value},update:function(n,t){var i=ko.utils.unwrapObservable(t()),r=$(n).children('option[value=""]');r.length||$(n).prepend('<option value="" style="display: none"><\/option>');$(".lt-ie9")[0]?$(n).val(""):$(n).val(i);$(n).next("input").val(i)}};ko.bindingHandlers.booleanRadios={init:function(n,t){var i=t(),r=ko.computed({read:function(){return i().toString()},write:function(n){i(n==="true")},owner:this});ko.applyBindingsToNode(n,{checked:r})}};ko.bindingHandlers.nullableBooleanRadios={init:function(n,t){var i=t(),r=ko.computed({read:function(){return i()!=undefined?i().toString():i()},write:function(n){i(n==="true")},owner:this});ko.applyBindingsToNode(n,{checked:r})}};ko.bindingHandlers.dialog={init:function(n,t,i){var r=ko.utils.unwrapObservable(t())||{},u;r.close=function(){i().dialogVisible(!1)};r.buttons={OK:function(){r.close()}};u=$(n).dialog(r);i().customInit&&i().customInit(u);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).dialog("destroy")})},update:function(n,t,i){try{var r=ko.utils.unwrapObservable(i().dialogVisible);$(n).dialog(r?"open":"close")}catch(u){}}};ko.bindingHandlers.confirmDialog={init:function(n,t,i){var r=ko.utils.unwrapObservable(t())||{},u;r.close=function(){i().dialogVisible(!1)};r.buttons={OK:function(){r.close();ko.bindingHandlers.confirmDialog.onConfirmationAction();ko.bindingHandlers.confirmDialog.onConfirmationAction=function(){}},Cancel:function(){r.close()}};u=$(n).dialog(r);ko.utils.domNodeDisposal.addDisposeCallback(n,function(){$(n).dialog("destroy")})},update:function(n,t,i){try{var r=ko.utils.unwrapObservable(i().dialogVisible);$(n).dialog(r?"open":"close")}catch(u){}},onConfirmationAction:function(){}};ko.bindingHandlers.uniqueID={init:function(n,t){var i=t();i.id=i.id||ko.bindingHandlers.uniqueID.prefix+ ++ko.bindingHandlers.uniqueID.counter;n.id=i.id},counter:0,prefix:"unique"};ko.bindingHandlers.uniqueFor={init:function(n,t){var i=t();i.id=i.id||ko.bindingHandlers.uniqueID.prefix+ ++ko.bindingHandlers.uniqueID.counter;n.setAttribute("for",i.id)}};ko.bindingHandlers.feeLives=new KoIntegerConstraint(9);var koModule=function(){var n=function(n,t){t.target.select()};return{selectText:n}}(),refDataModule=function(){var n=function(n,t){var i=_.filter(referenceData.AllUserGroups,function(n){return n.ID==t}),r=_.filter(referenceData.Plans,function(t){return t.PlanFamilyID===n});return _.filter(r,function(n){return _.contains(i[0].AllowablePlanIDs,n.ID)})},t=function(n){return benefitRules=_.filter(referenceData.AllBenefitRuleSets,function(t){return t.BenefitID===n})},i=function(n){var t=_.filter(referenceData.AllUserGroups,function(t){return t.ID==n});return _.filter(referenceData.CorporatePlans,function(n){return _.contains(t[0].AllowablePlanIDs,n.ID)}).length>0};return{getPlansByFamily:n,getRulesForBenefit:t,corporatePlansAvailable:i}}(),utilModule=function(){var i,n=null,t=null,r=function(r){i=r;$("#new-illustration-link").click(function(n){n.preventDefault();ajaxModule.postJson(i.createIllustration,null,function(n){top.location=n.RedirectUrl})});var u={autoOpen:!1,modal:!0,title:"Confirm",minWidth:700,minHeight:200,resizable:!1,draggable:!1,buttons:{OK:function(){$(this).dialog("close");n&&n()},Cancel:function(){$(this).dialog("close");t&&t()}}};confirmationDialog=$("#confirmation-dialog").dialog(u)},u=function(n,t){var i=$("#errors"),r;i.html('<div class="validation-summary-errors">'+n+"<\/div>");t&&(r=t.find("fieldset:last"),r.length?i.appendTo(r):i.appendTo(t),i.prev("input").css("margin-bottom","10px"));i.show()},f=function(){var n=$("#errors");n.html("");n.hide();$("form input, form textarea, form select, .select-replace").removeClass("error")},e=function(n,t){var i=$("#confirmation"),r;i.html(n);t&&(r=t.find("fieldset:last"),r.length?i.appendTo(r):i.appendTo(t),i.prev("input").css("margin-bottom","10px"));i.show();setInterval(function(){i.fadeOut(2e3)},2e3)},o=function(){var n=$("#confirmation");n.html("");n.hide()},s=function(n){return typeof n.selectionStart=="number"?n.selectionStart!=n.selectionEnd:typeof document.selection!="undefined"?(n.focus(),document.selection.createRange().text==n.value):void 0},h=function(n,t){var i=n.toFixed(2).split("."),u=i[0].split("").reverse(),f=_.reduce(u,function(n,t,i){return t+(i&&!(i%3)?",":"")+n}),r="$"+f;return t!=!0&&(r+="."+i[1]),r},c=function(n){var i=n.getDate()+"",t,r;return i.length==1&&(i="0"+i),t=n.getMonth()+1+"",t.length==1&&(t="0"+t),r=n.getFullYear(),i+"/"+t+"/"+r},l=function(n){return!n||$.trim(n)==""},a=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)})},v=function(n,t){n.on("keyup",function(n){var i=n.keyCode?n.keyCode:n.which;i==13&&(t.trigger("click"),n.preventDefault())})},y=function(n){return n.replace(/\w\S*/g,function(n){return n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()})},p=function(n){return n.charAt(0).toUpperCase()+n.slice(1)},w=function(i,r,u){n=r;t=u;$("#confirmation-dialog").html(i);confirmationDialog.dialog("open")};return{init:r,showErrors:u,hideErrors:f,showConfirmation:e,hideConfirmation:o,isAnyTextSelected:s,formatCurrency:h,formatDate:c,isNullOrEmpty:l,createGuid:a,bindReturnPress:v,toTitleCase:y,capitaliseFirstLetter:p,confirm:w}}()