namespace("widgets.submissionForm");widgets.submissionForm.SubmissionFieldModel=awardsCommon.FieldModel.extend({controlTypes:{oneThroughThree:"OneThroughThree",oneThroughFive:"OneThroughFive",oneThroughTen:"OneThroughTen",numeric:"Numeric",list:"List",freeText:"FreeText"},initialize:function(n,t){var i,r;(awardsCommon.FieldModel.prototype.initialize.call(this,n,t),this.dataProperties=this.dataProperties.concat(["hiddenForJudges","hiddenForSubmitters","scoringInfo","rowScoringInfo","clonedFromFieldId"]),n)&&(i=this.get("scoringInfo"),i&&(i.controlType=this.getControlType(i)),r=this.get("rowScoringInfo"),r&&(r.controlType=this.getControlType(r)))},isApplicationName:function(){return this.get("typeName")=="ApplicationName"},isApplicationCategory:function(){return this.get("typeName")=="ApplicationCategory"},isLetterOfRecommendation:function(){return this.get("typeName")=="LetterOfRecommendation"},isRecommendationRequest:function(){return this.get("typeName")=="RecommendationRequest"},isRecommendation:function(){return this.get("typeName")=="Recommendation"},isCharityCheck:function(){return this.get("typeName")=="CharityCheck"},isContainer:function(){return awardsCommon.FieldModel.prototype.isContainer.call(this)||this.isLetterOfRecommendation()||this.isRecommendation()},isNonScorable:function(){return this.isSeparator()||this.isApplicationName()||this.isUserProfileFieldSelector()||this.isGlobalFormTemplateSelector()||this.isApplicationCategory()},isRecommendationFormField:function(){return!1},origGetFriendlyTypeName:awardsCommon.FieldModel.prototype.getFriendlyTypeName,getFriendlyTypeName:function(){return this.isRecommendationRequest()?clientTerms.letterOfRecommendation:this.origGetFriendlyTypeName()},isComplexField:function(){return this.isRecommendationFormField()},isComplexFieldAggregateParent:function(){return this.isRecommendationRequest()},isComplexFieldAggregate:function(){return this.isRecommendation()},getComplexFieldAggregateId:function(){return this.isRecommendationRequest()?this.get("recommendationFieldId"):null},getComplexFieldAggregateParentId:function(){return this.isRecommendation()?this.get("recommendationRequestFieldId"):null},setComplexFieldAggregateId:function(n){this.set({recommendationFieldId:n})},setComplexFieldAggreateParentId:function(n){this.set({recommendationRequestFieldId:n})},getParentComplexFieldAggregate:function(){var n=this.collection.allFields||this.collection,t=this;return n.find(function(n){return n.isRecommendation()&&_(n.get("fieldIds")).contains(t.id)})},getComplexFields:function(){if(!this.isRecommendation())return[];var n=this.collection.allFields||this.collection,t=this.get("fieldIds")||[];return n.chain().filter(function(n){return _(t).contains(n.id)})},hasComplexFields:function(){if(!this.isRecommendation())return!1;var n=this.get("fieldIds");return n&&n.length},getControlType:function(n){return n.typeName=="Numeric"?n.mode=="Custom"?this.controlTypes.numeric:this.controlTypes[n.mode.firstLetterToLowerCase()]:n.typeName=="List"?this.controlTypes.list:n.typeName=="FreeText"?this.controlTypes.freeText:null}});namespace("widgets.submissionForm");widgets.submissionForm.LetterOfRecommendationFieldModel=widgets.submissionForm.SubmissionFieldModel.extend({initialize:function(n,t){widgets.submissionForm.SubmissionFieldModel.prototype.initialize.call(this,n,t)},getRecommendationRequest:function(){return this.get("fields").find(function(n){return n.isRecommendationRequest()})},getRecommendation:function(){return this.get("fields").find(function(n){return n.isRecommendation()})}}),function(n){n.extend(n.fn,{submissionForm:function(){if(this.length==0)return null;var n=this.is(".submissionForm")?this:this.find(".submissionForm");return n.length==0?null:n.data("submissionForm")}})}(jQuery);namespace("awardsCommon.widgets.submissionForm");awardsCommon.widgets.submissionForm.SubmissionFormView=Backbone.View.extend({events:{"click button.sendRecommendationRequestEmail":"onSendRecommendationRequestEmailClicked","click button.changeRecommendator":"onChangeRecommendatorClicked","click button.deleteRecommendation":"onDeleteRecommendationClicked","click button.cancelRecommendatorChange":"onCancelRecommendatorChangeClicked"},initialize:function(n){this.$el.data("submissionForm",this);this.attachSubmissionFormMethods(awardsCommon.widgets.formBuilderForm.FormBuilderFormView.prototype);n.applicationCategoryGroupsSettings&&(this.applicationCategoryGroupsSettingsView=new awardsCommon.widgets.submissionForm.ApplicationCategoryGroupsSettingsView({el:this.el,parentView:this,model:n.applicationCategoryGroupsSettings,applicationCategories:n.applicationCategories,multiCategoryMode:n.multiCategoryMode,multipleSelectedCategoryCountLimit:n.multipleSelectedCategoryCountLimit}));_.extend(this,{charityCheckUrl:n.charityCheckUrl})},render:function(){this.formBuilderForm=this.$el.formBuilderForm();this.formBuilderForm.on("syncRequiredValidationRules",this.onRequiredValidationRulesSync,this);this.applicationCategoryGroupsSettingsView&&this.applicationCategoryGroupsSettingsView.render()},onRequiredValidationRulesSync:function(n){n.isCharityCheck()&&this.formBuilderForm.applyCharityCheckValidationRules(n.attributes,this.formBuilderForm.getSection(n))},onSendRecommendationRequestEmailClicked:function(n){var t=$(n.target).closest("section"),i=this.formBuilderForm.fieldModels[t.attr("data-fieldPath")],e=t.find("input[name$='FullName']"),o=t.find("input[name$='Email']"),r=$(n.target),u,f;if(!this.validateFieldsRequiredToSendRecommendationRequest(i)){this.$el.closest("form").validate().enableValidationOnFocusOutOrKeyUpEvents();return}r.prop("disabled",!0);u=this;f=this.isRecommendationReceived(i.id);Confirmation.request("Are you sure you want to send the request?",{callback:function(){u.trigger("sendRecommendationRequest",{recommendationRequestFieldId:i.getRecommendationRequest().id,letterOfRecommendationFieldId:i.id,lorFieldPath:i.getPath(),fullName:e.val(),email:o.val(),success:function(){r.prop("disabled",!1);r.siblings(".changeRecommendator").length&&(u.toggleRecommendationRequestFieldDisabledState(t,!0),t.find(".sendRecommendationRequestEmail").text("Resend"),t.find(".changeRecommendator").show(),t.find(".cancelRecommendatorChange").hide());f&&u.$("[data-recommendationformid="+i.getRecommendation().id+"]").hide();t.find("span.labelDescription").text("(Not Received)");t.find("button.deleteRecommendation").hide()},error:function(){r.prop("disabled",!1)}})},cancelCallback:function(){r.prop("disabled",!1)}})},onDeleteRecommendationClicked:function(n){var r=$(n.target).closest("section"),u=r.attr("data-fieldId"),t=$(n.target),i;t.prop("disabled",!0);i=this;Confirmation.requestDelete({itemName:clientTerms.letterOfRecommendation,callback:function(){i.trigger("deleteRecommendation",{letterOfRecommendationFieldId:u,success:function(){Alert.success(sprintf("%s has been deleted successfully",clientTerms.letterOfRecommendation));reload()},error:function(){t.prop("disabled",!1)}})},cancelCallback:function(){t.prop("disabled",!1)}})},onChangeRecommendatorClicked:function(n){this.toggleChangeRecommendatorState(n.target,!0)},onCancelRecommendatorChangeClicked:function(n){this.toggleChangeRecommendatorState(n.target,!1)},handleApplicationNameField:function(n,t,i){return!n.readOnly&&n.maxLength&&i.applyApplicationNameTextLengthValidationRules(n,t),new awardsCommon.widgets.submissionForm.ApplicationNameFieldView({el:t,model:new Backbone.Model(n),formBuilderForm:i})},handleApplicationCategoryField:function(n,t,i){return t.hierarchyItemSelector({required:n.required}),new awardsCommon.widgets.submissionForm.ApplicationCategoryFieldView({el:t,model:new Backbone.Model(n),formBuilderForm:i})},handleRecommendationRequestField:function(n,t,i){return i.syncLetterOfRecommendationRequiredValidationRules(n.recommendationRequest.required,t),new awardsCommon.widgets.submissionForm.LetterOfRecommendationFieldView({el:t,model:new Backbone.Model(n),formBuilderForm:i})},handleCharityCheckField:function(n,t,i){return!n.readOnly&&n.required&&i.applyCharityCheckValidationRules(n,t),new awardsCommon.widgets.submissionForm.CharityCheckFieldView({el:t,model:new Backbone.Model(n),formBuilderForm:i,charityCheckUrl:this.charityCheckUrl})},validateFieldsRequiredToSendRecommendationRequest:function(n){var u=_(this.formBuilderForm.fieldModels).chain().values().filter(function(n){return n.isApplicationName()||n.isApplicationCategory()}).value(),i,t,r;return u.push(n),i=n.getRecommendationRequest(),t=this,i.get("required")||this.formBuilderForm.syncLetterOfRecommendationRequiredValidationRules(!0,t.formBuilderForm.getSection(n)),r=this.formBuilderForm.validateSections(_.map(u,function(n){return t.formBuilderForm.getSection(n)}),{includeHidden:!0}),r||this.formBuilderForm.focusFirstInvalidEl(!0),i.get("required")||this.formBuilderForm.syncLetterOfRecommendationRequiredValidationRules(!1,t.formBuilderForm.getSection(n)),r},attachSubmissionFormMethods:function(n){n.submissionFormMethodsAttached||_.extend(n,{submissionFormMethodsAttached:!0,onHiddenOrHiddenByParentChangedOrig:awardsCommon.widgets.formBuilderForm.FormBuilderFormView.prototype.onHiddenOrHiddenByParentChanged,onHiddenOrHiddenByParentChanged:function(n){this.onHiddenOrHiddenByParentChangedOrig(n);if(n.isLetterOfRecommendation()){var t=n.getRecommendation();if(!t||!t.get("fields").length)return;_(this.$("section[data-recommendationFormId='"+t.id+"']").toArray()).each(function(t){var i=this.fieldModels[$(t).attr("data-fieldPath")];n.isVisible()?i.isDependentField()&&i.get("hiddenByParent")?this.hideField(i):this.showField(i):this.hideField(i)},this)}},applyApplicationNameTextLengthValidationRules:function(n,t){function e(n,t,i,r,u,f){var e={},o,s;e.messages={};o=i+t+"Count";e.messages[o]=u;n.isOneTextField?e[o]=f:(o+="InGroup",e[o]={},e[o].elements=r,s=i+"Length",e[o][s]=f);r.each(function(){$(this).rules("add",e)})}var i=t.find("input[name$='FirstValue'], input[name$='SecondValue']"),f=i.eq(0),o=i.eq(1),r=n.minLength,u=n.maxLength,h,c,l,a,s;n.textLengthCountMode=="Words"?(r&&(h=sprintf(r==1?"Please enter at least one word.":"Please enter at least %(minLength)s words.",n),e(n,"Word","min",i,h,r)),u&&(c=sprintf(u==1?"Please enter no more than one word.":"Please enter no more than %(maxLength)s words.",n),e(n,"Word","max",i,c,u))):(r&&(l=sprintf(r==1?"Please enter at least one character.":"Please enter at least %(minLength)s characters.",n),e(n,"Char","min",i,l,r)),u&&(a=sprintf(u==1?"Please enter no more than one character.":"Please enter no more than %(maxLength)s characters.",n),e(n,"Char","max",i,a,u)));s=this;$(f).on("keyup",function(){s.updateTextLengthCounterForApplicationNameField(n,f,o)}).keyup();n.isOneTextField||$(o).on("keyup",function(){s.updateTextLengthCounterForApplicationNameField(n,f,o)}).keyup();this.addValidationContainer(f)},updateTextLengthCounterForApplicationNameField:function(n,t,i){var s=$(t.closest("section")),u=t.val(),f=n.isOneTextField?"":i.val(),r,e,o;n.textLengthCountMode=="Words"?(e=u.match(appConfig.regexLib.words)||[],o=f.match(appConfig.regexLib.words)||[],r=e.length+o.length):r=u.length+f.length;s.find(".lengthCounter .currentLength").html(r)},syncLetterOfRecommendationRequiredValidationRules:function(n,t){var r=t.find("input[name$='FullName']"),i=t.find("input[name$='Email']");r.length&&i.length&&(i.addExtendedEmailValidationRule(),r.enableRequiredValidationRule(n),i.enableRequiredValidationRule(n),n||(r.rules("add",{required:function(){return i.is(":filled")}}),i.rules("add",{required:function(){return r.is(":filled")}})))},applyCharityCheckValidationRules:function(n,t){var i="validateEin_"+n.fieldPath,r=t.find(".charityCheckInput"),u;if(n.required){var f=t.find("input[name$='.Ein']"),e=t.find("input[name$='.CharityName']"),o=t.find(".charityCheckInputContainer");$.validator.addMethod(i,function(){return f.is(":filled")&&e.is(":filled")},"EIN needs to be validated");u={};u[i]=!0;r.rules("add",u);o.addErrorContainerIfNotExists(r.attr("name"))}else r.rules("remove",i)},extendFieldData:function(n,t){if(t.isLetterOfRecommendation()){var i=this.prepareFieldViewModel(t.get("fields"),t.get("fieldValues"),{prefix:t.get("prefix")+".FieldValues["+t.id+"]",settings:n.settings});_.extend(n,{recommendation:_(i).find(function(n){return n.isRecommendation()}).attributes,recommendationRequest:_(i).find(function(n){return n.isRecommendationRequest()}).attributes})}},origRenderField:awardsCommon.widgets.formBuilderForm.FormBuilderFormView.prototype.renderField,renderField:function(n,t){var r,u,i;if(n.isLetterOfRecommendation()){if(n.rendered)return this.getLastCustomOrSelfSectionForField(n);if(r=n.getRecommendationRequest(),r&&(u=awardsCommon.widgets.formBuilderForm.FormBuilderFormView.prototype.origRenderField.call(this,n,t)),i=n.getRecommendation(),i&&i.get("fields").length){var o=[{id:n.id,$valueType:n.get("$valueType"),prefix:n.get("prefix"),settings:this.settings},{id:i.id,$valueType:i.get("fieldValueTypeName"),prefix:n.get("prefix")+".FieldValues["+n.id+"]",settings:this.settings}],f=_(n.get("fieldValues")).findWhere({fieldId:i.id}),e=this.prepareFieldViewModel(i.get("fields"),f?f.fieldValues:[],{fieldInfos:o,pageId:n.get("pageId"),prefix:n.get("prefix")+".FieldValues["+n.id+"].FieldValues["+i.id+"]",customSectionAttributes:{recommendationFormId:i.id}});return this.renderContainerFields(e,u),this.getLastCustomOrSelfSectionForField(_(e).chain().filter(function(n){return n.rendered}).last().value())}return this.getLastCustomOrSelfSectionForField(n)}return awardsCommon.widgets.formBuilderForm.FormBuilderFormView.prototype.origRenderField.call(this,n,t)}})},toggleRecommendationRequestFieldDisabledState:function(n,t){n.find("input[name$='FullName']").prop("disabled",t);n.find("input[name$='Email']").prop("disabled",t)},toggleChangeRecommendatorState:function(n,t){var i=$(n).closest("section"),r,u;this.toggleRecommendationRequestFieldDisabledState(i,!t);i.find(".changeRecommendator").toggle(!t);i.find(".cancelRecommendatorChange").toggle(t);i.find(".sendRecommendationRequestEmail").toggle(!this.isRecommendationReceived(i.attr("data-fieldid"))||t);r=i.find("input[name$='FullName']");u=i.find("input[name$='Email']");t?(r.data("previousValue",r.val()).val(""),u.data("previousValue",u.val()).val("").focus()):(r.val(r.data("previousValue")),u.val(u.data("previousValue")))},isRecommendationReceived:function(n){var t=this.formBuilderForm.model.getFieldById(n),i=_(this.formBuilderForm.model.get("fieldValues")).findWhere({fieldId:t.get("id")});return _(i.fieldValues).findWhere({fieldId:t.getRecommendation().id}).isReceived},resolveValidationInfo:function(n){var t=n.validationRequired,i=n.validateCurrentPageForDraftSubmissions&&!n.finalize,r=i?this.formBuilderForm.currentPageIndex:undefined,e;if(n.lastPreviousRoundEditablePageId){var u=this.formBuilderForm.getAllPages(),o=u[this.formBuilderForm.currentPageIndex].id,f=o<=n.lastPreviousRoundEditablePageId;t?i&&f&&(r=u.length-1):(t=!0,(!i||f)&&(e=_(u).findIndex(function(t){return t.id==n.lastPreviousRoundEditablePageId}),r=e))}return{validationRequired:t,pageIndexToValidate:r}}});namespace("awardsCommon.widgets.submissionForm");awardsCommon.widgets.submissionForm.ApplicationCategoryGroupsSettingsView=Backbone.View.extend({render:function(){var n,t,i;this.formBuilderForm=this.$el.formBuilderForm();this.groupsSettingsView=new awardsCommon.widgets.formBuilderForm.GroupsSettingsView({el:this.el,model:this.options.model});n=this;this.groupsSettingsView.on("targetItemChanged",function(){n.trigger("targetItemChanged")});if(this.categorySection=this.formBuilderForm.$el.find("section.applicationCategory"),this.categorySection.length&&!this.categorySection.hasClass("hiddenField")&&!this.formBuilderForm.settings.isPreviewMode)if(this.options.multiCategoryMode!="None"){this.categoryList=this.categorySection.applicationCategoryList(this.options.applicationCategories,{mode:this.options.multiCategoryMode,multipleSelectedCategoryCountLimit:this.options.multipleSelectedCategoryCountLimit});this.categoryList.on("categorySelected",this.onCategorySelected,this);t=this.categoryList.getSelectedCategoryIds();n.categoryList.checkChildCategoriesFor&&_(t).each(function(t){n.categoryList.checkChildCategoriesFor(t,!0);n.categoryList.checkParentCategoriesFor(t,!0)});this.groupsSettingsView.applyGroupSettings(t)}else{this.categorySelector=this.categorySection.hierarchyItemSelector();this.categorySelector.on("itemChanged",this.onItemChanged,this);this.selectedCategoryPath=this.categorySelector.getSelectedPath();i=_.last(this.selectedCategoryPath);this.groupsSettingsView.applyGroupSettings([i])}},onItemChanged:function(n){var t=this;this.groupsSettingsView.handleTargetItemStateChange([n],function(){t.categorySelector.selectPath(t.selectedCategoryPath)})},onCategorySelected:function(n){var t=this;this.groupsSettingsView.handleTargetItemStateChange(n.categoryIds,function(){t.categoryList.toggleCategories([n.lastSelectedId])})}})