var nfCookieMonster={set:function(e,t,n,i,o){var s=new Date,r="",a=typeof t,l="",d="";if(i=i||"/",n&&(s.setTime(s.getTime()+24*n*60*60*1e3),r="; expires="+s.toUTCString()),"object"==a&&"undefined"!=a){if(!("JSON"in window))throw"Bummer, your browser doesn't support JSON parsing.";l=encodeURIComponent(JSON.stringify({v:t}))}else l=encodeURIComponent(t);o&&(d="; secure"),document.cookie=e+"="+l+r+"; path="+i+d},get:function(e){for(var t,n=e+"=",i=document.cookie.split(";"),o="",s=0;s<i.length;s++){for(var r=i[s];" "==r.charAt(0);)r=r.substring(1,r.length);if(0===r.indexOf(n)){if("{"==(o=decodeURIComponent(r.substring(n.length,r.length))).substring(0,1))try{if("v"in(t=JSON.parse(o)))return t.v}catch(e){return o}return"undefined"==o?void 0:o}}return null},remove:function(e){this.set(e,"",-1)},increment:function(e,t){var n=this.get(e)||0;this.set(e,parseInt(n,10)+1,t)},decrement:function(e,t){var n=this.get(e)||0;this.set(e,parseInt(n,10)-1,t)}},nfSaveProgressActiveController=Marionette.Object.extend({endpoint:nfSaveProgress.restApiEndpoint||"",initialize:function(e){this.listenTo(Backbone.Radio.channel("form"),"loaded",this.onFormLoaded),this.listenTo(Backbone.Radio.channel("form"),"render:view",this.onFormRenderView)},onFormLoaded:function(e){e=e.get("save_progress_actions");void 0!==e&&_.each(e,function(e,t){void 0!==e.active&&Backbone.Radio.channel("actions-"+t).reply("get:status",function(){return 1==e.active})})},onFormRenderView:function(e){if(nfSaveProgress.currentUserID){var e=e.model,t=e.get("id");t.toString().split("_")[0];if(void 0!==e.get("fields").findWhere({type:"save"}))return e.get("save_progress_allow_multiple")?this.renderSaveTable(e):this.loadLastSave(e);jQuery("#nf-form-"+t+"-cont .nf-saves-cont").remove()}},loadLastSave:function(i){var o=new SavesLoadingView,e=(o.render(),{_wpnonce:wpApiSettings.nonce}),s=i.get("id"),t=s.toString().split("_")[0];jQuery.ajax({url:this.endpoint+"saves/"+t,type:"GET",data:Backbone.Radio.channel("save-progress").request("getSavesRequestData",e)||e,cache:!1,success:function(e,t,n){jQuery(o.$el).slideUp(400,function(){o.remove()}),0!=e.saves.length&&(e=e.saves.pop(),i.set("save_id",e.save_id),e=JSON.parse(e.fields),Backbone.Radio.channel("forms").request("save:updateFieldsCollection",s,e)),jQuery("#nf-form-"+s+"-cont .nf-saves-cont").remove()},error:function(){}})},renderSaveTable:function(e){var t=new SavesLoadingView,n=(t.render(),new SavesCollection([],{formModel:e}));n.fetch({success:function(){t.remove();new SavesCollectionView({collection:n})}})}}),nfSaveProgressPassiveController=Marionette.Object.extend({initialize:function(e){this.storage=window.localStorage,this.listenTo(nfRadio.channel("form"),"render:view",this.onFormRendered)},onFormRendered:function(e){var t,n,i,e=e.model;e.get("save_progress_passive_mode")&&(t=e.get("id"),n=t.toString().split("_")[0],i=this.storage.getItem("nfForm-"+n),Backbone.Radio.channel("forms").request("save:updateFieldsCollection",e.get("id"),JSON.parse(i)),this.listenTo(nfRadio.channel("fields"),"change:modelValue",this.onChangeModelValue),this.listenTo(nfRadio.channel("form-"+t),"submit:response",function(){this.storage.removeItem("nfForm-"+n)}))},onChangeModelValue:function(e){var e=e.get("formID"),t="nfForm-"+e.toString().split("_")[0],n=Backbone.Radio.channel("app").request("get:form",e);void 0!==n&&n.get("save_progress_passive_mode")&&(n=Backbone.Radio.channel("forms").request("save:fieldAttributes",e),this.storage.setItem(t,JSON.stringify(n)))}}),nfSaveProgressSaveButtonController=Marionette.Object.extend({endpoint:"",initialize:function(e){this.endpoint=nfSaveProgress.restApiEndpoint||"",Backbone.Radio.channel("forms").reply("maybe:validate",this.maybeValidate),this.listenTo(nfRadio.channel("save"),"init:model",this.registerHandlers),this.listenTo(nfRadio.channel("save"),"render:view",this.maybeHide),this.listenTo(nfRadio.channel("save"),"click:field",this.click)},maybeValidate:function(e){if(e.getExtra("saveProgress"))return!1},registerHandlers:function(n){var e=Backbone.Radio.channel("form-"+n.get("formID")),i=(n.listenTo(e,"before:submit",this.beforeSubmit,n),n.listenTo(e,"submit:cancel",this.reset.bind(n)),n.listenTo(e,"submit:response",this.reset.bind(n)),n.listenTo(e,"submit:response",this.response.bind(this)),n.get("formID"));n.listenTo(e,"submit:failed",function(){Backbone.Radio.channel("form-"+i).request("remove:extra","saveProgress")}),n.listenTo(e,"submit:response",function(){Backbone.Radio.channel("form-"+i).request("remove:extra","saveProgress")}),Backbone.Radio.channel("save").reply("get:submitData",function(e){i=n.get("formID");var t=Backbone.Radio.channel("app").request("get:form",i);return void 0!==t&&(e.save_id=t.get("save_id")),e}),this.listenTo(nfRadio.channel("submit"),"init:model",this.registerSubmitHandlers)},registerSubmitHandlers:function(e){e.listenTo(nfRadio.channel("form-"+e.get("formID")),"before:submit",function(e){Backbone.Radio.channel("form-"+e.get("id")).request("get:extra","saveProgress")&&(void 0!==this.get("oldLabel")&&this.set("label",this.get("oldLabel")),this.set("disabled",!0),this.trigger("reRender"))},e)},beforeSubmit:function(){this.set("disabled",!0),this.trigger("reRender")},maybeHide:function(e){nfSaveProgress.currentUserID||setTimeout(function(){e.remove()},500)},click:function(e,t){t.set("disabled",!0),t.set("oldLabel",t.get("label")),t.set("label",t.get("processing_label")),t.trigger("reRender"),nfRadio.channel("nf-save-progress").trigger("save-click",!0);var t=t.get("formID"),n=Backbone.Radio.channel("app").request("get:form",t),i=Backbone.Radio.channel("forms").request("save:fieldAttributes",t);Backbone.Radio.channel("form-"+t).request("add:extra","saveProgress",i),Backbone.Radio.channel("form-"+t).request("submit",n)},response:function(e,t,n,i){1==e.data.settings.hide_complete&&jQuery("#nf-form-"+e.data.form_id+"-cont .nf-saves-cont table").hide()},reset:function(){this.set("disabled",!1),void 0!==this.get("oldLabel")&&this.set("label",this.get("oldLabel")),this.trigger("reRender")}}),SaveModel=Backbone.Model.extend({parse:function(e,t){return e.fields=JSON.parse(e.fields),e}}),SavesCollection=Backbone.Collection.extend({model:SaveModel,url:function(){var e=this.formModel.get("id").toString().split("_")[0];return nfSaveProgress.restApiEndpoint+"saves/"+e},initialize:function(e,t){this.formModel=t.formModel},parse:function(e){if(void 0!==e.saves)return e.saves},setAuthHeaders:function(e){void 0!==wpApiSettings.nonce&&e.setRequestHeader("X-WP-Nonce",wpApiSettings.nonce)},sync:function(e,t,n){return(n=n||{}).beforeSend=this.setAuthHeaders,Backbone.sync(e,t,n)}}),SaveItemView=Marionette.ItemView.extend({tagName:"tr",className:"nf-saves-item",template:"#tmpl-nf-save-item",events:{"click .load":function(e){jQuery(e.target).closest(".nf-saves-cont").find(".active").removeClass("active"),jQuery(e.target).closest("tr").addClass("active");e=this.model.get("form_id"),Backbone.Radio.channel("forms").request("save:updateFieldsCollection",e,this.model.get("fields")),e=Backbone.Radio.channel("app").request("get:form",e);void 0!==e&&e.set("save_id",this.model.get("save_id"))},"click .cancel":function(e){jQuery(e.target).closest("tr").removeClass("active");var e=this.model.get("form_id"),e=Backbone.Radio.channel("app").request("get:form",e),t=e.get("fields"),e=e.get("loadedFields");t.reset(e)}},templateHelpers:function(){var s=this;return{updated:this.model.get("updated"),columns:function(){var i=nfRadio.channel("app").request("get:form",s.model.get("form_id")),e=i.get("save_progress_table_columns"),o="";return _.each(e,function(t){var n=i.get("fields").filter(function(e){return t.field==e.get("key")}),e=s.model.get("fields").filter(function(e){e=e.id.toString().split("_")[0];return void 0!==n&&0<n.length?n[0].get("id").toString().split("_")[0]==e:""}),e=void 0!==e[0]?e[0].value:"";o+="<td>"+e+"</td>"}),o}}}}),SaveEmptyView=Marionette.ItemView.extend({tagName:"nf-save",template:"#tmpl-nf-save-empty",initialize:function(){this.on("render",this.afterRender)},afterRender:function(){var e=this;setTimeout(function(){jQuery(e.$el).slideUp("slow",function(){e.remove()})},2e3)}}),SavesLoadingView=Marionette.ItemView.extend({tagName:"nf-section",template:"#tmpl-nf-saves-loading",el:".form-save-loading"}),SavesCollectionView=Marionette.CompositeView.extend({tagName:"table",childView:SaveItemView,emptyView:SaveEmptyView,childViewContainer:"tbody",template:"#tmpl-nf-save-table",initialize:function(e){var t=this.collection.formModel.get("id");t.toString().split("_")[0];this.collection.each(function(e){e.set("form_id",t)}),this.el="#nf-form-"+t+"-cont",this.$el=jQuery(this.el).find(".nf-saves-cont table"),this.render(),this.listenTo(Backbone.Radio.channel("form-"+t),"submit:response",function(){var e=this;this.collection.fetch({success:function(){e.render()}})},this)},onRender:function(){0==this.collection.length?(this.$el.hide(),this.$el.parent().hide()):(this.$el.show(),this.$el.parent().show())},templateHelpers:function(){var t=this;return{headers:function(){var n=t.collection.formModel,e=n.get("save_progress_table_columns"),i="";return _.each(e,function(t){var e=n.get("fields").find(function(e){return t.field==e.get("key")});i+=void 0!==e?"<th>"+e.get("label")+"</th>":"<th></th>"}),i}}}}),NF_SaveProgress=Marionette.Application.extend({initialize:function(e){new nfSaveProgressActiveController,new nfSaveProgressSaveButtonController,new nfSaveProgressPassiveController,Backbone.Radio.channel("forms").reply("save:fieldAttributes",this.getfieldAttributes,this),Backbone.Radio.channel("forms").reply("save:updateFieldsCollection",this.updateFieldsCollection,this)},getfieldAttributes:function(e){var e=Backbone.Radio.channel("app").request("get:form",e).get("fields").filter(function(e,t){return"html"!=e.get("type")&&!(!e.get("value")&&"table_editor"!=e.get("type")||e.get("clean")&&"file_upload"!=e.get("type")&&"table_editor"!=e.get("type"))}),i=["admin_label","element_class","required","container_class","custom_mask","mask","manual_key","drawerDisabled","input_limit","input_limit_msg","input_limit_type","help_text","desc_text","created_at","editActive","disabled","afterField","beforeField","classes","confirm_field","element_templates","errors","formID","key","label","label_pos","mirror_field","objectDomain","objectType","old_classname","order","parentType","placeholder","reRender","type","wrap_template","options","hot","tableConfig","uploadNonce","upload_types","cellcid"];return e.map(function(e,t){return _.omit(e.attributes,function(e,t,n){return"function"==typeof e||-1!==i.indexOf(t)||-1!==t.indexOf("_styles_")})})},updateFieldsCollection:function(e,t){var n=Backbone.Radio.channel("app").request("get:form",e),i=n.get("fields"),o=e.toString().split("_")[1],e=n.get("loadedFields");i.reset(e),_.each(t,function(e){var t=parseInt(e.id),t=(void 0!==o&&(t+="_"+o),i.get(t)),e=_.omit(e,["id","required","uploadNonce","upload_types"]);void 0!==e.visible&&(e.visible=e.visible.toString()),void 0!==t&&t.set(e)}),Backbone.Radio.channel("fields").trigger("reset:collection",i)}});jQuery(document).ready(function(e){(new NF_SaveProgress).start()});