{"version":3,"sources":["../../../config-wrap-start-default.js","../../../node_modules/almond/almond.js","models/fieldErrorModel.js","models/fieldErrorCollection.js","models/fieldModel.js","models/fieldCollection.js","models/formErrorModel.js","models/formErrorCollection.js","models/formModel.js","models/formCollection.js","controllers/formData.js","controllers/fieldError.js","controllers/changeField.js","controllers/changeEmail.js","controllers/changeDate.js","controllers/fieldCheckbox.js","controllers/fieldCheckboxList.js","controllers/fieldImageList.js","controllers/fieldRadio.js","controllers/fieldNumber.js","controllers/mirrorField.js","controllers/confirmField.js","controllers/updateFieldModel.js","controllers/submitButton.js","controllers/submitDebug.js","controllers/getFormErrors.js","controllers/validateRequired.js","controllers/submitError.js","controllers/actionRedirect.js","controllers/actionSuccess.js","controllers/fieldSelect.js","controllers/coreSubmitResponse.js","controllers/fieldProduct.js","controllers/fieldTotal.js","controllers/fieldQuantity.js","models/calcModel.js","models/calcCollection.js","controllers/calculations.js","controllers/dateBackwardsCompat.js","controllers/fieldDate.js","controllers/fieldRecaptcha.js","controllers/fieldRecaptchaV3.js","controllers/fieldHTML.js","controllers/helpText.js","controllers/fieldTextbox.js","controllers/fieldTextareaRTE.js","controllers/fieldStarRating.js","controllers/fieldTerms.js","controllers/formContentFilters.js","views/fieldItem.js","views/beforeField.js","views/fieldErrorItem.js","views/fieldErrorCollection.js","views/inputLimit.js","views/afterField.js","views/fieldRepeaterFieldLayout.js","views/fieldRepeaterFieldCollection.js","views/fieldRepeaterSetLayout.js","views/fieldRepeaterSetCollection.js","views/fieldRepeaterLayout.js","views/fieldLayout.js","controllers/loadViews.js","controllers/formErrors.js","controllers/submit.js","views/fieldCollection.js","controllers/defaultFilters.js","controllers/uniqueFieldError.js","models/fieldRepeaterSetModel.js","models/fieldRepeaterSetCollection.js","controllers/fieldRepeater.js","controllers/loadControllers.js","views/beforeForm.js","views/formErrorItem.js","views/formErrorCollection.js","views/honeyPot.js","views/afterFormContent.js","views/beforeFormContent.js","views/formLayout.js","views/afterForm.js","views/mainLayout.js","../nfLocaleConverter.js","main.js"],"names":["requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","prototype","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","obj","prop","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeLoad","depName","value","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","e","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","amd","jQuery","Backbone","Model","extend","errorModel","Collection","model","fieldErrorCollection","defaults","placeholder","label_pos","classes","reRender","mirror_field","confirm_field","clean","disabled","visible","invalid","initialize","type","this","get","set","collection","options","formModel","listenTo","nfRadio","channel","resetModel","bind","changeModel","changeValue","listimageGet","listimageSet","trigger","formLoaded","beforeSubmit","attr","attributes","addWrapperClass","cl","removeWrapperClass","setInvalid","getValue","fieldModel","comparator","models","on","fieldCollection","reply","getFirstFieldByOrder","validateFields","_","each","repeaterModels","request","repeaterFieldModel","size","keys","showFields","invoke","hideFields","ids_array","targetID","order","FieldCollection","ErrorCollection","beforeForm","afterForm","beforeFields","afterFields","wrapper_class","element_class","hp","fieldErrors","extra","setting","formContentData","formContentLoadFilters","sortedArray","without","first","getFieldByKey","addError","removeError","getExtra","addExtra","removeExtra","getForm","key","findWhere","msg","add","errors","remove","extraData","FormModel","FormCollection","Marionette","nfForms","getForms","getField","form","String","fieldErrorModel","getError","targetError","changeField","blurField","el","val","radioChannel","emailReg","errorID","onChangeModelValue","emailKeyup","onBlurField","fieldID","emailChange","changeEmailErrorMsg","keyCode","dateKeyup","changeHoursMinutes","original","moment","locale","dateChange","format","isDateValid","changeDateErrorMsg","container","target","closest","selected_hour","find","selected_minute","selected_ampm","parseDate","document","querySelector","_flatpickr","timestamp","getTime","isNaN","parsedDate","Date","formatDate","registerRenderClasses","validateRequired","validateModelData","beforeUpdateField","getCalcValue","addClass","removeClass","checked","calcValue","customClasses","customLabelClasses","maybeChecked","default_value","register","renderOptions","renderOtherText","selected","filter","opt","savedVal","Array","isArray","html","valueFound","option","label","nfFrontEnd","filter_esc_status","escape","isSelected","required","maybeFilterHTML","template","show_other","data","currentValue","calc_value","tmp_opt","Number","calc","parent","optionArray","valueIndex","clone","allow_multi_select","old_classname","image_type","list_orientation","flex_direction","that","num_columns","parseInt","current_column","current_row","image_options","image","show_option_labels","styles","changeModelValue","updateCheckedClass","maybeMinDefault","validateMinMax","min","$el","parseFloat","max","step","fieldNumberNumMinError","fieldNumberNumMaxError","testValue","Math","round","testStep","fieldNumberIncrementBy","listeningModel","registerMirror","targetModel","registerConfirm","confirmKeyup","confirmModel","formModal","registerConfirmListeners","confirmID","confirmFieldErrorMsg","compareValue","confirmValue","updateField","submitButton","bound","registerHandlers","click","resetLabel","maybeEnable","maybeDisable","processingLabel","response","nonce","new_nonce","nonce_ts","submitDebug","textStatus","jqXHR","formID","debug","debugMessages","createElement","message","messageText","createTextNode","appendChild","console","log","getFormErrors","error","field","validateKeyup","customReqValidation","defaultReqValidation","maskPlaceholder","getMask","trim","valid","maybeError","mask","nfi18n","currencySymbol","validateRequiredField","submitErrors","focusFirstInvalidInput","ajaxNonce","fields","slug","last","style","show","getElementById","focus","actionRedirect","halt","redirect","window","location","actions","actionSubmit","success_message","form_id","read","top_of_success_message","offset","top","bottom_of_success_message","outerHeight","bottom_of_screen","scrollTop","height","top_of_screen","animate","renderOtherAttributes","otherAttributes","multi_size","settings","clear_complete","reset","hide_complete","renderProductQuantity","renderProduct","product_type","product_use_quantity","totalModel","productTotals","registerShipping","onFormLoaded","onChangeProduct","onChangeQuantity","shippingModel","shippingCost","fieldModels","productFields","quantityFields","productID","product","productPrice","updateTotal","newTotal","productField","toFixed","registerQuantity","changeCalc","targetCalcModel","CalcModel","dec","toString","getCalc","CalcCollection","calcs","displayFields","registerCalcs","resetCalcs","use_merge_tags","calculations","fieldType","initDisplayField","updateDisplayFields","init","calcCollection","calcModel","setupCalc","eq","eqValues","match","RegExp","updateCalcFields","replaceKey","localeDecodeEquation","mexp","Mexp","eval","localeConverter","nfLocaleConverter","siteLocale","thousands_sep","decimal_point","machineNumber","numberDecoder","formattedNumber","numberEncoder","isNumeric","tag","reTag","calcTag","reCalcTag","replaceAllKeys","re","calcName","spans","spanVar","tmpCalcTag","applyLocaleFormatting","number","result","expression","pattern","forEach","character","nfCalculationsDebug","Radio","dateBackwardsCompat","dateObject","pikaday","_o","disableDayFn","i18n","firstDay","firstDayOfWeek","weekdays","longhand","weekdaysShort","shorthand","months","text","initModel","initDatepicker","registerFunctions","renderHourOptions","renderMinuteOptions","maybeRenderAMPM","hours_options","minutes_options","hours_24","view","hide","dateFormat","convertDateFormat","dateSettings","onReady","selectedDates","datestr","altInput","setAttribute","altFormat","ariaDateFormat","mode","allowInput","disableMobile","minDate","getMinDate","maxDate","getMaxDate","nfCustomLocale","checkCustomLocale","filteredDatePickerSettings","flatpickr","defaultDate","setDate","isObject","inputID","date_value","hour","minute","ampm","current_value","date","yearRangeStart","yearRangeEnd","lookup","default","includes","date_mode","customLocale","monthsShort","startOfWeek","isEmpty","initRecaptcha","resetRecaptcha","updateResponse","recaptchaID","grecaptcha","processRecaptcha","setInterval","ready","execute","action","then","token","layoutView","submitFieldID","consent","nf_check_recaptcha_consent","recaptchaConsentMissing","nf_build_default_consent_action","services","actionElement","innerText","recaptchaConsentEvent","nf_consent_link_event","CustomEvent","detail","element","dispatchEvent","genericErrorElements","getElementsByClassName","append","htmlFields","trackedMergeTags","setupFieldMergeTagTracking","mergeTags","mergeTag","fieldKey","updateFieldMergeTags","htmlFieldModel","fieldValue","displayRepeaterData","repeaterFieldIDs","returnHTML","passedFields","pop","initHelpText","jBox","theme","content","closeOnMouseleave","closeOnClick","close","currencySymbolDecoded","initTextareaRTEs","clickExtra","meta_image_frame","currentContext","summernote","icons","align","alignCenter","alignJustify","alignLeft","alignRight","indent","outdent","bold","caret","code","eraser","italic","link","unlink","magic","minus","orderedlist","redo","square","table","underline","undo","unorderedlist","toolbar","userSettings","uid","buttons","linkButton","context","mediaButton","codemirror","lineNumbers","prettifyHtml","callbacks","onChange","linkMenu","next","replaceWith","class","innerHTML","ui","linkDropdown","buttonGroup","button","className","contents","tooltip","fieldTextareaRTEInsertLink","clickLinkButton","toggle","dropdown","children","render","fieldTextareaRTEInsertMedia","openMediaManager","open","wp","media","frames","title","fieldTextareaRTESelectAFile","media_attachment","state","toJSON","insertMedia","range","textEl","urlEl","isNewWindowEl","hasClass","url","isNewWindow","filename","initRating","renderRatings","rating","number_of_stars","num","htmlFragment","createRange","createContextualFragment","keyUpExtra","currentTarget","addOption","new_option","viewFilters","loadFilters","addViewFilter","addLoadFilter","getViewFilters","getLoadFilters","priority","ItemView","tagName","toggleAriaInvalid","JSON","stringify","onRender","unwrap","setElement","isInteger","isFinite","floor","charCodeAt","autoNumericOptions","digitGroupSeparator","decimalCharacter","modifyValueOnWheel","autoN_el","AutoNumeric","templateHelpers","renderElement","tmpl","element_templates","renderLabel","renderLabelClasses","renderPlaceholder","customPlaceholder","renderWrapClass","wrapClass","parentType","customWrapClass","renderClasses","maybeDisabled","disable_input","maybeRequired","maybeDisableAutocomplete","disable_browser_autocomplete","translateAutoCompletionType","maybeInputLimit","input_limit_type","input_limit","getHelpText","help_text","maybeRenderHelp","check_text_par","shouldRenderHelpText","icon","classList","hiddenHelpText","textContent","outerHTML","renderDescText","desc_text","check","checkText","descriptionText","fieldDescription","renderNumberDefault","renderCurrencyFormatting","currency_symbol","maybeRenderTime","events","fieldChange","fieldKeyup","fieldClick","extraClick","extraChange","fieldBlur","onAttach","fieldErrorItem","CollectionView","childView","updateCount","count","words","wordCount","charCount","limit","currentCount","InputLimitView","changeError","errorEl","errorCollectionView","inputLimitEl","inputLimitView","fieldItem","beforeField","afterField","LayoutView","regions","getTemplate","renderContainerClass","containerClass","desc_pos","container_class","fieldLayout","removeSet","repeaterSetLayout","repeaterSetCollection","sets","addSet","repeaterFieldLayout","fieldItemView","fieldLayoutView","getFieldItem","getFieldLayout","errorMsg","formErrorsCorrectErrors","omit","registerSubmitHandler","submit","validate","blockingFormErrors","fieldDataDefaults","formData","security","ajax","adminAjax","cache","success","errorThrown","parseJSON","responseText","FieldCollectionView","registerDefaultDataFilter","defaultFormContentLoad","defaultFormContentView","currentFieldCollection","resetFields","nfAllRepeaterFieldsModels","initAllRepeaterFieldsModels","getRepeaterFields","getRepeaterFieldById","getAllRepeaterFieldsModels","getAllFieldsetsByForm","getAllFieldsModelsArrayByForm","setAllRepeaterFieldsModels","setAllRepeatersValues","allRepeatersFieldsetsModels","repeaterID","currentModels","isModelSet","thisFormModels","singleArray","allModels","reverseResearchFieldsetModel","fieldsetModel","startsWith","fieldObject","repeaters","repeater","repeaterFieldValue","idArray","newID","files","repeaterSetModel","sortIDs","getFieldSets","repeaterFieldID","templateFields","fieldset","removeRequiredFieldsErrors","isRepeaterModelSet","rep","fieldsetField","destroy","getFieldsets","fieldsets","modelIndex","cutEl","fieldIndex","initRepeater","FormData","FieldError","ChangeField","ChangeEmail","ChangeDate","FieldCheckbox","FieldCheckboxList","FieldImageList","FieldRadio","FieldNumber","MirrorField","ConfirmField","UpdateFieldModel","SubmitButton","SubmitDebug","GetFormErrors","ValidateRequired","SubmitError","ActionRedirect","ActionSuccess","FieldSelect","CoreSubmitResponse","FieldProduct","FieldTotal","FieldQuantity","Calculations","DateBackwardsCompat","FieldDate","FieldRecaptcha","FieldRecaptchaV3","FieldHTML","HelpText","FieldTextbox","FieldTextareaRTE","FieldStarRating","FieldTerms","FormContentFilters","LoadViews","FormErrors","Submit","DefaultFilters","UniqueFieldError","FieldRepeater","formErrorItem","honeypotHoneypotError","HoneyPot","onShow","renderFieldsMarkedRequired","fieldsMarkedRequired","AfterFormContent","BeforeFormContent","beforeFormContent","formContent","afterFormContent","getEl","formContentViewFilters","formContentView","BeforeForm","FormLayout","AfterForm","responseMsg","formLayout","newLocale","decimal_sep","uniqueElememts","self","formatted","negative","separators","final_separators","replacer","separator","re_one","find_one","re_two","find_two","percision","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","nfLocaleConverterDebug","nfInlineVars","originalVal","fn","prev","change","addEventListener","formCollection","LoadControllers","mainLayout","NinjaForms","Application","forms","Renderer","urlParameters","object","compact","search","item","nf_resume","restart","decodeNumber","encodeNumber","onStart","evaluate","interpolate","variable","start","empty"],"mappings":"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","file":"front-end.js","sourcesContent":["(function () {\n","/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\ndefine(\"../../../node_modules/almond/almond\", function(){});\n\n","define( 'models/fieldErrorModel',[], function() {\n\tvar model = Backbone.Model.extend( {\n\n\t} );\n\t\n\treturn model;\n} );\n","define( 'models/fieldErrorCollection',['models/fieldErrorModel'], function( errorModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: errorModel\n\t} );\n\treturn collection;\n} );\n","define( 'models/fieldModel',['models/fieldErrorCollection'], function( fieldErrorCollection ) {\n\tvar model = Backbone.Model.extend( {\n\t\tdefaults: {\n\t\t\tplaceholder: '',\n\t\t\tvalue: '',\n\t\t\tlabel_pos: '',\n\t\t\tclasses: 'ninja-forms-field',\n\t\t\treRender: false,\n\t\t\tmirror_field: false,\n\t\t\tconfirm_field: false,\n\t\t\tclean: true,\n\t\t\tdisabled: '',\n\t\t\tvisible: true,\n\t\t\tinvalid: false\n\t\t},\n\n\t\tinitialize: function() {\n\t\t\tvar type = this.get('type');\n\n\t\t\tthis.set( 'formID', this.collection.options.formModel.get( 'id' ) );\n\t\t\tthis.listenTo( nfRadio.channel( 'form-' + this.get( 'formID' ) ), 'reset', this.resetModel );\n\n \t\tthis.bind( 'change', this.changeModel, this );\n \t\tthis.bind( 'change:value', this.changeValue, this );\n \t\tthis.set( 'errors', new fieldErrorCollection() );\n\n\t\t\tif (type === 'listimage') {\n\t\t\t\tthis.get = this.listimageGet;\n\t\t\t\tthis.set = this.listimageSet;\n\t\t\t}\n\n \t\t/*\n\t\t\t * Trigger an init event on two channels:\n\t\t\t * \n\t\t\t * fields\n\t\t\t * field-type\n\t\t\t *\n\t\t\t * This lets specific field types modify model attributes before anything uses them.\n\t\t\t */\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'init:model', this );\n\t\t\tnfRadio.channel( this.get( 'type' ) ).trigger( 'init:model', this );\n\t\t\tnfRadio.channel( 'fields-' + this.get( 'type' ) ).trigger( 'init:model', this );\n\n\t\t\tif( 'undefined' != typeof this.get( 'parentType' ) ){\n\t\t\t\tnfRadio.channel( this.get( 'parentType' ) ).trigger( 'init:model', this );\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * When we load our form, fire another event for this field.\n\t\t\t */\n\t\t\tthis.listenTo( nfRadio.channel( 'form-' + this.get( 'formID' ) ), 'loaded', this.formLoaded );\n\t\t\n\t\t\t/*\n\t\t\t * Before we submit our form, send out a message so that this field can be modified if necessary.\n\t\t\t */\n\t\t\tthis.listenTo( nfRadio.channel( 'form-' + this.get( 'formID' ) ), 'before:submit', this.beforeSubmit );\n\t\t},\n\n\t\tlistimageGet: function(attr) {\n if(attr === 'options') {\n\t\t\t\t\tattr = 'image_options';\n\t\t\t}\n\n return Backbone.Model.prototype.get.call(this, attr);\n\t\t},\n\t\t\n\t\tlistimageSet: function(attributes, options) {\n\t\t\tif ('options' === attributes) {\n\t\t\t\tattributes = 'image_options';\n\t\t\t}\n\t\t\treturn Backbone.Model.prototype.set.call(this, attributes, options);\n\t\t},\n\n\t\tchangeModel: function() {\n\t\t\tnfRadio.channel( 'field-' + this.get( 'id' ) ).trigger( 'change:model', this );\n\t\t\tnfRadio.channel( this.get( 'type' ) ).trigger( 'change:model', this );\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'change:model', this );\n\t\t},\n\n\t\tchangeValue: function() {\n\t\t\tnfRadio.channel( 'field-' + this.get( 'id' ) ).trigger( 'change:modelValue', this );\n\t\t\tnfRadio.channel( this.get( 'type' ) ).trigger( 'change:modelValue', this );\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'change:modelValue', this );\n\t\t},\n\n\t\taddWrapperClass: function( cl ) {\n\t\t\tthis.set( 'addWrapperClass', cl );\n\t\t},\n\n\t\tremoveWrapperClass: function( cl ) {\n\t\t\tthis.set( 'removeWrapperClass', cl );\n\t\t},\n\n\t\tsetInvalid: function( invalid ) {\n\t\t\tthis.set( 'invalid', invalid );\n\t\t},\n\n\t\tformLoaded: function() {\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'formLoaded', this );\n\t\t\tnfRadio.channel( 'fields-' + this.get( 'type' ) ).trigger( 'formLoaded', this );\n\t\t},\n\n\t\tbeforeSubmit: function( formModel ) {\n\t\t\tnfRadio.channel( this.get( 'type' ) ).trigger( 'before:submit', this );\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'before:submit', this );\n\t\t},\n\n\t\t/**\n\t\t * Return the value of this field.\n\t\t * This method exists so that more complex fields can return more than just the field value.\n\t\t * Those advanced fields should create their own method with this name.\n\t\t * \n\t\t * @since 3.5\n\t\t * @return {string} Value of this field.\n\t\t */\n\t\tgetValue: function() {\n\t\t\treturn this.get( 'value' );\n\t\t}\n\n\t} );\n\n\treturn model;\n} );\n\n","define( 'models/fieldCollection',['models/fieldModel'], function( fieldModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: fieldModel,\n\t\tcomparator: 'order',\n\n\t\tinitialize: function( models, options ) {\n\t\t\tthis.options = options;\n this.on( 'reset', function( fieldCollection ){\n nfRadio.channel( 'fields' ).trigger( 'reset:collection', fieldCollection );\n }, this );\n\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:firstFieldByOrder', this.getFirstFieldByOrder );\n\t\t},\n\n\t\tvalidateFields: function() {\n\t\t\t_.each( this.models, function( fieldModel ) {\n\t\t\t\tif(fieldModel.get(\"type\") === \"repeater\"){\n\t\t\t\t\tconst repeaterModels = nfRadio.channel( \"field-repeater\" ).request( 'get:repeaterFieldsModelsArrayByForm', fieldModel.get('formID') );\n\t\t\t\t\t_.each( repeaterModels, function( repeaterFieldModel ) {\n\t\t\t\t\t\t// added here for help with multi-part part validation\n\t\t\t\t\t\trepeaterFieldModel.set( 'clean', false );\n\t\t\t\t\t\tnfRadio.channel( 'submit' ).trigger( 'validate:field', repeaterFieldModel );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// added here for help with multi-part part validation\n\t\t\t\t\tfieldModel.set( 'clean', false );\n\t\t\t\t\tnfRadio.channel( 'submit' ).trigger( 'validate:field', fieldModel );\n\t\t\t\t}\n\t\t\t}, this );\n\t\t\t//Focus the first invalid input when found\n\t\t\tvar formModel = nfRadio.channel( 'form-' + this.models[0].get( 'formID' ) ).request( 'get:form' );\n\t\t\tif(_.size(formModel.get('fieldErrors')) > 0){\n\t\t\t\tnfRadio.channel( 'submit' ).request( 'focus:firstInvalidInput', Object.keys(formModel.get('fieldErrors')) );\n\t\t\t}\n\t\t},\n\n\t\tshowFields: function() {\n\t\t\tthis.invoke( 'set', { visible: true } );\n this.invoke( function() {\n this.trigger( 'change:value', this );\n });\n\t\t},\n\n\t\thideFields: function() {\n\t\t\tthis.invoke( 'set', { visible: false } );\n this.invoke( function() {\n this.trigger( 'change:value', this );\n });\n\t\t},\n\n\t\tgetFirstFieldByOrder: function( ids_array ) {\n\t\t\tlet targetID = 0;\n\t\t\t//Loop through an array of fieldIDs to return the one that is positioned first\n\t\t\t_.each(ids_array, function( id ) {\n\t\t\t\t//Get field order\n\t\t\t\tconst order = nfRadio.channel( 'fields' ).request( 'get:field', id ).get('order');\n\t\t\t\t//Set it as the target when the lowest order is found\n\t\t\t\ttargetID = (targetID === 0 || order < targetID) ? id : targetID;\n\t\t\t});\n\n\t\t\treturn targetID;\n\t\t}\n\t} );\n\treturn collection;\n} );\n\n","define( 'models/formErrorModel',[], function() {\n\tvar model = Backbone.Model.extend( {\n\n\t} );\n\t\n\treturn model;\n} );\n","define( 'models/formErrorCollection',['models/formErrorModel'], function( errorModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: errorModel\n\t} );\n\treturn collection;\n} );\n","define( 'models/formModel',[\n\t'models/fieldCollection',\n\t'models/formErrorCollection'\n\t], function(\n\t\tFieldCollection,\n\t\tErrorCollection\n\t) {\n\tvar model = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tbeforeForm: '',\n\t\t\tafterForm: '',\n\t\t\tbeforeFields: '',\n\t\t\tafterFields: '',\n\t\t\twrapper_class: '',\n\t\t\telement_class: '',\n\t\t\thp: '',\n\t\t\tfieldErrors: {},\n\t\t\textra: {}\n\t\t},\n\n\t\tinitialize: function() {\n\t\t\t// Loop over settings and map to attributes\n\t\t\t_.each( this.get( 'settings' ), function( value, setting ) {\n\t\t\t\tthis.set( setting, value );\n\t\t\t}, this );\n\n\t\t\tthis.set( 'loadedFields', this.get( 'fields' ) );\n\t\t\tthis.set( 'fields', new FieldCollection( this.get( 'fields' ), { formModel: this } ) );\n\t\t\tthis.set( 'errors', new ErrorCollection() );\n\n\t\t\t/*\n\t\t\t * Send out a radio message so that anyone who wants to filter our content data can register their filters.\n\t\t\t */\n\t\t\tnfRadio.channel( 'form' ).trigger( 'before:filterData', this );\n\n\t\t\t/*\n\t\t\t * Set our formContentData to our form setting 'formContentData'\n\t\t\t */\n\t\t\tvar formContentData = this.get( 'formContentData' );\n\n\t\t\t/*\n\t\t\t * The formContentData variable used to be fieldContentsData.\n\t\t\t * If we don't have a 'formContentData' setting, check to see if we have an old 'fieldContentsData'.\n\t\t\t * \n\t\t\t * TODO: This is for backwards compatibility and should be removed eventually. \n\t\t\t */\n\t\t\tif ( ! formContentData ) {\n\t\t\t\tformContentData = this.get( 'fieldContentsData' );\n\t\t\t}\n\t\t\t\n\t\t\tvar formContentLoadFilters = nfRadio.channel( 'formContent' ).request( 'get:loadFilters' );\n\t\t\t/* \n\t\t\t* Get our first filter, this will be the one with the highest priority.\n\t\t\t*/\n\t\t\tvar sortedArray = _.without( formContentLoadFilters, undefined );\n\t\t\tvar callback = _.first( sortedArray );\n\t\t\tformContentData = callback( formContentData, this, this );\n\t\t\t\n\t\t\tthis.set( 'formContentData', formContentData );\n\n\t\t\tnfRadio.channel( 'forms' ).trigger( 'init:model', this );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'init:model', this );\n\n\t\t\t// Fields\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'get:fieldByKey', this.getFieldByKey, this );\n\n\t\t\t// Form Errors\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'add:error', this.addError, this );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'remove:error', this.removeError, this );\n\n\t\t\t// Extra Data\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'get:extra', this.getExtra, this );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'add:extra', this.addExtra, this );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'remove:extra', this.removeExtra, this );\n\t\t\n\t\t\t// Respond to requests to get this model.\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).reply( 'get:form', \t this.getForm, \t this );\n\n\t\t\tnfRadio.channel( 'form' ).trigger( 'loaded', this );\n\t\t\tnfRadio.channel( 'form' ).trigger( 'after:loaded', this );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'loaded', \t this );\n\t\t},\n\n\t\t/*\n\t\t |--------------------------------------------------------------------------\n\t\t | Fields\n\t\t |--------------------------------------------------------------------------\n\t\t */\n\n\t\tgetFieldByKey: function( key ) {\n\t\t\treturn this.get( 'fields' ).findWhere( { key: key } );\n\t\t},\n\n\t\t/*\n\t\t |--------------------------------------------------------------------------\n\t\t | Form Errors\n\t\t |--------------------------------------------------------------------------\n\t\t */\n\n\t\taddError: function( id, msg ) {\n\t\t\tvar errors = this.get( 'errors' );\n\t\t\terrors.add( { id: id, msg: msg } );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'add:error', this, id, msg );\n\t\t},\n\n\t\tremoveError: function( id ) {\n\t\t\tvar errors = this.get( 'errors' );\n\t\t\tvar errorModel = errors.get( id );\n\t\t\terrors.remove( errorModel );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'remove:error', this, id );\n\t\t},\n\n\t\t/*\n\t\t |--------------------------------------------------------------------------\n\t\t | Extra Data\n\t\t |--------------------------------------------------------------------------\n\t\t */\n\n\t\tgetExtra: function( key ) {\n\t\t\tvar extraData = this.get( 'extra' );\n\t\t\tif( 'undefined' == typeof key ) return extraData;\n\t\t\treturn extraData[ key ];\n\t\t},\n\n\t\taddExtra: function( key, value ) {\n\t\t\tvar extraData = this.get( 'extra' );\n\t\t\textraData[ key ] = value;\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'add:extra', this, key, value );\n\t\t},\n\n\t\tremoveExtra: function( key ) {\n\t\t\tvar extraData = this.get( 'extra' );\n\t\t\tdelete extraData[ key ];\n\t\t\tnfRadio.channel( 'form-' + this.get( 'id' ) ).trigger( 'remove:extra', this, key );\n\t\t},\n\n\t\t/*\n\t\t |--------------------------------------------------------------------------\n\t\t | Get this form\n\t\t |--------------------------------------------------------------------------\n\t\t */\n\t\tgetForm: function() {\n\t\t\treturn this;\n\t\t}\n\t} );\n\n\treturn model;\n} );\n","define( 'models/formCollection',['models/formModel'], function( formModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: formModel\n\t} );\n\treturn collection;\n} );\n","/*\n * Handles setting up our form.\n *\n * Holds a collection of our fields.\n * Replies to requests for field data.\n * Updates field models.\n */\ndefine('controllers/formData',['models/formModel', 'models/formCollection', 'models/fieldCollection', 'models/formErrorCollection'], function( FormModel, FormCollection, FieldCollection, ErrorCollection ) {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\n\t\t\t/*\n\t\t\t * Setup our field collections.\n\t\t\t */\n\t\t\tvar that = this;\n\n\t\t\t/*\n\t\t\t * Initialize our form collection (incase we have multiple forms on the page)\n\t\t\t */\n\t\t\tthis.collection = new FormCollection( nfForms );\t\t\n\t\t\tnfRadio.channel( 'forms' ).trigger( 'loaded', this.collection );\n\t\t\tnfRadio.channel( 'app' ).trigger( 'forms:loaded', this.collection );\n\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:form', this.getForm, this );\n\t\t\tnfRadio.channel( 'app' ).reply( 'get:forms', this.getForms, this );\n\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:field', this.getField, this );\n\t\t},\n\n\t\tgetForm: function( id ) {\n\t\t\treturn this.collection.get( id );\n\t\t},\n\n\t\tgetForms: function() {\n\t\t\treturn this.collection;\n\t\t},\n\n\t\tgetField: function( id ) {\n\t\t\tvar model = false;\n\t\t\t\n\t\t\t_.each( this.collection.models, function( form ) {\n\t\t\t\tif ( ! model ) {\n\t\t\t\t\tmodel = form.get( 'fields' ).get( id );\t\n\t\t\t\t}\t\t\t\n\t\t\t} );\n\n\t\t\tif(typeof model == \"undefined\" && String(id).indexOf('.') !== -1){\n\t\t\t\tmodel = nfRadio.channel( \"field-repeater\" ).request( 'get:repeaterFieldById', id );\n\t\t\t}\n\t\t\t\n\t\t\treturn model;\n\t\t}\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/fieldError',['models/fieldErrorModel'], function( fieldErrorModel ) {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tnfRadio.channel( 'fields' ).reply( 'add:error', this.addError );\n\t\t\tnfRadio.channel( 'fields' ).reply( 'remove:error', this.removeError );\n\t\t\tnfRadio.channel( 'fields' ).reply( 'get:error', this.getError );\n\t\t},\n\n\t\taddError: function( targetID, id, msg ) {\n\t\t\tvar model = nfRadio.channel( 'fields' ).request( 'get:field', targetID );\n\n\t\t\tif( 'undefined' == typeof model ) return;\n\n\t\t\tvar errors = model.get( 'errors' );\n\t\t\terrors.add( { 'id': id, 'msg' : msg } );\n\t\t\tmodel.set( 'errors', errors );\n\t\t\tmodel.trigger( 'change:errors', model );\n\t\t\tmodel.set( 'clean', false );\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'add:error', model, id, msg );\n\t\t},\n\n\t\tremoveError: function( targetID, id ) {\n\t\t\tvar model = nfRadio.channel( 'fields' ).request( 'get:field', targetID );\n\n\t\t\tif( 'undefined' == typeof model ) return;\n\t\t\tvar errors = model.get( 'errors' );\n\t\t\tvar targetError = errors.get( id );\n\n\t\t\tif ( 'undefined' != typeof targetError ) {\n\t\t\t\terrors.remove( targetError );\n\t\t\t\tmodel.set( 'errors', errors );\n\t\t\t\tmodel.trigger( 'change:errors', model );\n\t\t\t\tnfRadio.channel( 'fields' ).trigger( 'remove:error', model, id );\n\t\t\t}\n\t\t},\n\n\t\tgetError: function( targetID, id ) {\n\t\t\tvar model = nfRadio.channel( 'fields' ).request( 'get:field', targetID );\n\t\t\tvar errors = model.get( 'errors' );\n\t\t\tvar targetError = errors.get( id );\n\t\t\tif ( 'undefined' != targetError ) {\n\t\t\t\treturn targetError;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","/**\n * Controller responsible for replying to a Radio request stating that a field has been changed.\n *\n * This controller sends out a message to the field-specific channel, the field type channel,\n * and the public fields channel so that the data model can be updated.\n */\n\ndefine('controllers/changeField',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\n\t\tinitialize: function() {\n\t\t\t/*\n\t\t\t * Reply to our request for changing a field.\n\t\t\t */\n\t\t\tnfRadio.channel( 'nfAdmin' ).reply( 'change:field', this.changeField );\n\n\t\t\t/*\n\t\t\t * If we blur our field, set the model attribute of 'clean' to false.\n\t\t\t * 'clean' tracks whether or not the user has every interacted with this element.\n\t\t\t * Some validation, like required, uses this to decide whether or not to add an error.\n\t\t\t */\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'blur:field', this.blurField );\n\t\t},\n\n\t\tchangeField: function( el, model ) {\n\t\t\t// Get our current value.\n\t\t\tvar value = nfRadio.channel( model.get( 'type' ) ).request( 'before:updateField', el, model );\n\t\t\tvalue = ( 'undefined' != typeof value ) ? value : nfRadio.channel( model.get( 'parentType' ) ).request( 'before:updateField', el, model );\n\t\t\tvalue = ( 'undefined' != typeof value ) ? value : jQuery( el ).val();\n\n\t\t\t// Set our 'isUpdated' flag to false.\n\t\t\tmodel.set( 'isUpdated', false );\n\n\t\t\t// Set our 'clean' flag to false.\n\t\t\tmodel.set( 'clean', false );\n\n\t\t\t/*\n\t\t\t * Send out a message saying that we've changed a field.\n\t\t\t * The first channel is field id/key specific.\n\t\t\t * The second channel is the field type, i.e. text, email, radio\n\t\t\t * The third channel is a generic 'field' channel.\n\t\t\t *\n\t\t\t * If the submitted value you wish to store in the data model isn't the same as the value received above,\n\t\t\t * you can set that model in the actions below and set the 'isUpdated' model attribute to true.\n\t\t\t * i.e. model.set( 'isUpdated', true );\n\t\t\t */\n\t\t\tnfRadio.channel( 'field-' + model.get( 'id' ) ).trigger( 'change:field', el, model );\n\t\t\tnfRadio.channel( model.get( 'type' ) ).trigger( 'change:field', el, model );\n\t\t\tnfRadio.channel( 'fields' ).trigger( 'change:field', el, model );\n\n\t\t\t/*\n\t\t\t * Send a request out on our nfAdmin channel to update our field model.\n\t\t\t * If the field model has a 'isUpdated' property of false, nothing will be updated.\n\t\t\t */\n\t\t\tnfRadio.channel( 'nfAdmin' ).request( 'update:field', model, value );\n\n\t\t\t/*\n\t\t\t * If the field is in a repeater, update the repeater Value\n\t\t\t */\n\t\t\tif(model.get(\"repeaterField\")){\n\t\t\t\tnfRadio.channel( \"field-repeater\" ).trigger( 'set:value' );\n\t\t\t}\n\t\t},\n\n\t\tblurField: function( el, model ) {\n\t\t\t// Set our 'clean' flag to false.\n\t\t\tmodel.set( 'clean', false );\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define('controllers/changeEmail',[], function() {\n\tvar radioChannel = nfRadio.channel( 'email' );\n\t// var emailReg = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n\tvar emailReg = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\tvar errorID = 'invalid-email';\n\n\tvar controller = Marionette.Object.extend( {\n\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( radioChannel, 'change:modelValue', this.onChangeModelValue );\n\t\t\tthis.listenTo( radioChannel, 'keyup:field', this.emailKeyup );\n\t\t\tthis.listenTo( radioChannel, 'blur:field', this.onBlurField );\n\t\t},\n\n\t\tonChangeModelValue: function( model ) {\n\t\t\tvar value = model.get( 'value' );\n\t\t\tvar fieldID = model.get( 'id' );\n\t\t\tthis.emailChange( value, fieldID );\n\t\t},\n\n\t\tonBlurField: function( el, model ) {\n\t\t\tvar value = jQuery( el ).val();\n\t\t\tvar fieldID = model.get( 'id' );\n\t\t\tthis.emailChange( value, fieldID );\n\t\t},\n\n\t\temailChange: function( value, fieldID ) {\n\t\t\tif ( 0 < value.length ) {\n\t\t\t\tif( emailReg.test( value ) ) {\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t\t} else {\n\t\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', fieldID, errorID, formModel.get( 'settings' ).changeEmailErrorMsg );\n\t\t\t\t}\t\t\t\t\n\t\t\t} else {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * When a user types inside of an email field, track their keypresses and add the appropriate class.\n\t\t * If the value validates as an email, add a class of nf-pass\n\t\t * If the value does not validate as email, add a class of nf-fail\n\t\t * \n\t\t * @since 3.0\n\t\t * @param {object} el Element that triggered the keyup event.\n\t\t * @param {object} model Model connected to the element that triggered the event\n\t\t * @return {void}\n\t\t */\n\t\temailKeyup: function( el, model, keyCode ) {\n\t\t\t\n\t\t\t/*\n\t\t\t * If we pressed the 'tab' key to get to this field, return false.\n\t\t\t */\n\t\t\tif ( 9 == keyCode ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t/*\n\t\t\t * Get the current value from our element.\n\t\t\t */\n\t\t\tvar value = jQuery( el ).val();\n\n\t\t\t/*\n\t\t\t * Get our current ID\n\t\t\t */\n\t\t\tvar fieldID = model.get( 'id' );\n\n\t\t\t/*\n\t\t\t * Check our value to see if it is a valid email.\n\t\t\t */\n\t\t\tif ( 0 == value.length ) {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t} else if ( ! emailReg.test( value ) && ! model.get( 'clean' ) ) {\n\n\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', fieldID, errorID, formModel.get( 'settings' ).changeEmailErrorMsg );\n\n\t\t\t\tmodel.removeWrapperClass( 'nf-pass' );\n\t\t\t} else if ( emailReg.test( value ) ) {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t\t/*\n\t\t\t\t * Add nf-pass class to the wrapper.\n\t\t\t\t */\n\t\t\t\tmodel.addWrapperClass( 'nf-pass' );\n\t\t\t\tmodel.set( 'clean', false );\n\t\t\t}\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define('controllers/changeDate',[], function() {\n\tvar radioChannel = nfRadio.channel( 'date' );\n\tvar errorID = 'invalid-date';\n\n\tvar controller = Marionette.Object.extend( {\n\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( radioChannel, 'change:modelValue', this.onChangeModelValue );\n\t\t\tthis.listenTo( radioChannel, 'keyup:field', this.dateKeyup );\n\t\t\tthis.listenTo( radioChannel, 'blur:field', this.onBlurField );\n\t\t\t\n\t\t\tthis.listenTo( radioChannel, 'change:extra', this.changeHoursMinutes, this)\n\t\t},\n\n\t\tonChangeModelValue: function( model ) {\n\t\t\tvar original = moment.locale();\n\t\t\tmoment.locale('ninja-forms');\n\t\t\tthis.dateChange( model );\n\t\t\tmoment.locale(original);\n\t\t},\n\n\t\tonBlurField: function( el, model ) {\n\t\t\tvar original = moment.locale();\n\t\t\tmoment.locale('ninja-forms');\n\t\t\tthis.dateChange( model );\n\t\t\tmoment.locale(original);\n\t\t},\n\n\t\tdateChange: function( model ) {\n\t\t\tvar fieldID = model.get( 'id' );\n\t\t\tvar value = model.get( 'value' );\n\t\t\tvar format = model.get( 'date_format' );\n\n\t\t\t// If we are dealing with purely a time field, bail early.\n\t\t\tif ( 'time_only' == model.get( 'date_mode' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( 0 < value.length ) {\n\t\t\t\t// use moment's isValid to check against the fields format setting\n\t\t\t\tif( this.isDateValid(value, format, fieldID) ) {\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t\t} else {\n\t\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', fieldID, errorID, formModel.get( 'settings' ).changeDateErrorMsg );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * When a user types inside of an dat field, track their keypresses\n\t\t * and add the appropriate class.\n\t\t * If the value validates as an date, add a class of nf-pass\n\t\t * If the value does not validate as date, add a class of nf-fail\n\t\t *\n\t\t * @since 3.0\n\t\t * @param {object} el Element that triggered the keyup event.\n\t\t * @param {object} model Model connected to the element that triggered the event\n\t\t * @return {void}\n\t\t */\n\t\tdateKeyup: function( el, model, keyCode ) {\n\n\t\t\t/*\n\t\t\t * If we pressed the 'tab' key to get to this field, return false.\n\t\t\t */\n\t\t\tif ( 9 == keyCode ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t/*\n\t\t\t * Get the current value from our element.\n\t\t\t */\n\t\t\tvar value = jQuery( el ).val();\n\n\t\t\t/*\n\t\t\t * Get our current ID\n\t\t\t */\n\t\t\tvar fieldID = model.get( 'id' );\n\n\t\t\t/*\n\t\t\t* Get our current date format\n\t\t\t */\n\t\t\tvar format = model.get( 'date_format' );\n\n\t\t\tvar original = moment.locale();\n\t\t\tmoment.locale('ninja-forms');\n\n\t\t\t/*\n\t\t\t * Check our value to see if it is a valid date.\n\t\t\t */\n\t\t\tif ( 0 == value.length ) {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t}\n\t\t\t// use moment's isValid to check against the fields format setting\n\t\t\telse if ( ! this.isDateValid(value, format, fieldID) && ! model.get( 'clean' ) ) {\n\n\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', fieldID, errorID, formModel.get( 'settings' ).changeDateErrorMsg );\n\n\t\t\t\tmodel.removeWrapperClass( 'nf-pass' );\n\t\t\t}\n\t\t\t// use moment's isValid to check against the fields format setting\n\t\t\telse if ( this.isDateValid(value, format, fieldID) ) {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', fieldID, errorID );\n\t\t\t\t/*\n\t\t\t\t * Add nf-pass class to the wrapper.\n\t\t\t\t */\n\t\t\t\tmodel.addWrapperClass( 'nf-pass' );\n\t\t\t\tmodel.set( 'clean', false );\n\t\t\t}\n\t\t\tmoment.locale(original);\n\t\t},\n\n\t\tchangeHoursMinutes: function( e, fieldModel ) {\n\t\t\tlet type = '';\n\t\t\tlet container = jQuery( e.target ).closest( '.nf-field-element' );\n\n\t\t\t// Set our hour, minute, and ampm\n\t\t\tlet selected_hour = jQuery( container ).find( '.hour' ).val();\n\t\t\tlet selected_minute = jQuery( container ).find( '.minute' ).val();\n\t\t\tlet selected_ampm = jQuery( container ).find( '.ampm' ).val();\n\n\t\t\tfieldModel.set( 'selected_hour', selected_hour );\n\t\t\tfieldModel.set( 'selected_minute', selected_minute );\n\t\t\tfieldModel.set( 'selected_ampm', selected_ampm );\n\t\t\t// Trigger a change on our model.\n\t\t\tfieldModel.trigger( 'change:value', fieldModel );\n\t\t},\n\n\t\tisDateValid: function(value, format, fieldID){\n\t\t\t//Get Date and Timestamp using the precise flatPickr instance of the field to catch the locale\n\t\t\tconst parseDate = document.querySelector(\"[name='nf-field-\" + fieldID + \"']\")._flatpickr.parseDate(value, format);\n\t\t\t// If parsedDate is undefined, the date is invalid\n\t\t\tif (!parseDate) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst timestamp = parseDate.getTime();\n\t\t\tif (isNaN(timestamp)) {\n\t\t\t\treturn false; // Invalid date\n\t\t\t}\n\t\t\t//Convert timestamp back to Date object and string\n\t\t\tconst parsedDate = new Date(timestamp);\n\t\t\tconst formattedDate = document.querySelector(\"[name='nf-field-\" + fieldID + \"']\")._flatpickr.formatDate(parsedDate, format);\n\t\t\t// Check vlaue and date string are deeply equals\n\t\t\treturn formattedDate === value;\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n","define('controllers/fieldCheckbox',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\t/*\n\t\t\t * When we init our checkbox model, register our renderClasses() function\n\t\t\t */\n\t\t\tthis.listenTo( nfRadio.channel( 'checkbox' ), 'init:model', this.registerRenderClasses );\n\n\t\t\tnfRadio.channel( 'checkbox' ).reply( 'validate:required', this.validateRequired );\n\t\t\tnfRadio.channel( 'checkbox' ).reply( 'validate:modelData', this.validateModelData );\n nfRadio.channel( 'checkbox' ).reply( 'before:updateField', this.beforeUpdateField, this );\n nfRadio.channel( 'checkbox' ).reply( 'get:calcValue', this.getCalcValue, this );\n\t\t},\n\n\t\tbeforeUpdateField: function( el, model ) {\n\t\t\tvar checked = jQuery( el ).prop( 'checked' );\n\t\t\tif ( checked ) {\n\t\t\t\tvar value = 1;\n\t\t\t\tjQuery( el ).addClass( 'nf-checked' );\n\t\t\t\tjQuery( el ).closest( '.field-wrap' ).find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).addClass( 'nf-checked-label' );\n\t\t\t} else {\n\t\t\t\tvar value = 0;\n\t\t\t\tjQuery( el ).removeClass( 'nf-checked' );\n\t\t\t\tjQuery( el ).closest( '.field-wrap' ).find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).removeClass( 'nf-checked-label' );\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\n\t\tvalidateRequired: function( el, model ) {\n\t\t\treturn el[0].checked;\n\t\t},\n\n\t\tvalidateModelData: function( model ) {\n\t\t\treturn model.get( 'value' ) != 0;\n\t\t},\n\n\t\tgetCalcValue: function( fieldModel ) {\n\t\t\tif ( 1 == fieldModel.get( 'value' ) ) {\n\t\t\t\tcalcValue = fieldModel.get( 'checked_calc_value' );\n\t\t\t} else {\n\t\t\t\tcalcValue = fieldModel.get( 'unchecked_calc_value' );\n\t\t\t}\n\n\t\t\treturn calcValue;\n\t\t},\n\n\t\tregisterRenderClasses: function( model ) {\n\t\t\tif ( 'checked' == model.get( 'default_value' ) ) {\n\t\t\t\tmodel.set( 'value', 1 );\n\t\t\t} else {\n\t\t\t\tmodel.set( 'value', 0 );\n\t\t\t}\n\t\t\tmodel.set( 'customClasses', this.customClasses );\n\t\t\tmodel.set( 'customLabelClasses', this.customLabelClasses );\n\t\t\tmodel.set( 'maybeChecked', this.maybeChecked );\n\t\t},\n\n\t\tcustomClasses: function( classes ) {\n\t\t\tif ( 1 == this.value || ( this.clean && 'undefined' != typeof this.default_value && 'checked' == this.default_value ) ) {\n\t\t\t\tclasses += ' nf-checked';\n\t\t\t} else {\n\t\t\t\tclasses.replace( 'nf-checked', '' );\n\t\t\t}\n\t\t\treturn classes;\n\t\t},\n\n\t\tcustomLabelClasses: function( classes ) {\n\t\t\tif ( 1 == this.value || ( this.clean && 'undefined' != typeof this.default_value && 'checked' == this.default_value ) ) {\n\t\t\t\tclasses += ' nf-checked-label';\n\t\t\t} else {\n\t\t\t\tclasses.replace( 'nf-checked-label', '' );\n\t\t\t}\n\t\t\treturn classes;\n\t\t},\n\n\t\tmaybeChecked: function() {\n\t\t\tif ( 1 == this.value || ( this.clean && 'undefined' != typeof this.default_value && 'checked' == this.default_value ) ) {\n\t\t\t\treturn ' checked';\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define('controllers/fieldCheckboxList',[], function() {\n var controller = Marionette.Object.extend( {\n initialize: function() {\n this.listenTo( nfRadio.channel( 'listcheckbox' ), 'init:model', this.register );\n this.listenTo( nfRadio.channel( 'terms' ), 'init:model', this.register );\n nfRadio.channel( 'listcheckbox' ).reply( 'before:updateField', this.beforeUpdateField, this );\n nfRadio.channel( 'terms' ).reply( 'before:updateField', this.beforeUpdateField, this );\n nfRadio.channel( 'listcheckbox' ).reply( 'get:calcValue', this.getCalcValue, this );\n nfRadio.channel( 'terms' ).reply( 'get:calcValue', this.getCalcValue, this );\n },\n\n register: function( model ) {\n model.set( 'renderOptions', this.renderOptions );\n model.set( 'renderOtherText', this.renderOtherText );\n model.set( 'selected', [] );\n\n /*\n * When we init a model, we need to set our 'value' to the selected option's value.\n * This is the list equivalent of a 'default value'.\n */ \n if ( 0 != model.get( 'options' ).length ) {\n var selected = _.filter( model.get( 'options' ), function( opt ) { return 1 == opt.selected } );\n selected = _.map( selected, function( opt ) { return opt.value } );\n }\n\n /*\n * This part is re-worked to take into account custom user-meta\n * values for fields.\n */\n\t var savedVal = model.get( 'value' );\n\t if( 'undefined' !== typeof savedVal && Array.isArray( savedVal ) ) {\n\t\t model.set( 'value', savedVal );\n\t } else if ( 'undefined' != typeof selected ) {\n\t\t model.set( 'value', selected );\n\t }\n },\n\n renderOptions: function() {\n var html = '';\n\n if ( '' == this.value || ( Array.isArray( this.value ) && 0 < this.value.length )\n || 0 < this.value.length ) {\n var valueFound = true;\n } else {\n var valueFound = false;\n }\n\n _.each( this.options, function( option, index ) {\n if( Array.isArray( this.value ) ) {\n \tif( Array.isArray( this.value[ 0 ] ) && -1 !== _.indexOf( this.value[ 0 ], option.value ) ) {\n \t\tvalueFound = true;\n\t }\n else if( _.indexOf( this.value, option.value ) ) {\n valueFound = true;\n\t }\n }\n\n if ( option.value == this.value ) {\n valueFound = true;\n }\n\n /*\n * TODO: This is a bandaid fix for making sure that each option has a \"visible\" property.\n * This should be moved to creation so that when an option is added, it has a visible property by default.\n */\n if ( 'undefined' == typeof option.visible ) {\n option.visible = true;\n }\n\n option.fieldID = this.id;\n option.classes = this.classes;\n option.index = index;\n option.label = (typeof nfFrontEnd.filter_esc_status !== \"undefined\" && nfFrontEnd.filter_esc_status === \"true\") ? _.escape(option.label) : option.label;\n \n var selected = false;\n\t\t\t\t/*\n\t\t\t\t* This part has been re-worked to account for values passed in\n\t\t\t\t* via custom user-meta ( a la User Mgmt add-on)\n\t\t\t\t */\n\t if( Array.isArray( this.value ) && 0 < this.value.length ) {\n\t \tif ( -1 !== _.indexOf( this.value[ 0 ].split( ',' ), option.value )\n\t\t || -1 !== _.indexOf( this.value, option.value ) ) {\n\t\t\t selected = true;\n\t \t}\n\t } else if ( ! _.isArray( this.value ) && option.value == this.value ) {\n\t\t selected = true;\n\t } else if ( ( 1 == option.selected && this.clean ) && 'undefined' === typeof this.value ) {\n\t\t selected = true;\n\t }\n\n\n // else if( ( option.selected && \"0\" != option.selected ) && this.clean ){\n\t // isSelected = true;\n\t // } else {\n\t // var testValues = _.map( this.value, function( value ) {\n\t // return value.toString();\n\t // } );\n\t //\n\t // option.isSelected = ( -1 != testValues.indexOf( option.value.toString() ) );\n\t // }\n\t option.selected = selected;\n\t option.isSelected = selected;\n\t option.required = this.required;\n option.maybeFilterHTML = this.maybeFilterHTML;\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listcheckbox-option' );\n html += template( option );\n }, this );\n\n if ( 1 == this.show_other ) {\n if ( 'nf-other' == this.value ) {\n valueFound = false;\n }\n var data = {\n fieldID: this.id,\n classes: this.classes,\n currentValue: this.value,\n renderOtherText: this.renderOtherText,\n valueFound: valueFound\n };\n\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listcheckbox-other' );\n html += template( data );\n\n }\n\n return html;\n },\n\n renderOtherText: function() {\n if ( 'nf-other' == this.currentValue || ! this.valueFound ) {\n if ( 'nf-other' == this.currentValue ) {\n this.currentValue = '';\n }\n var data = {\n fieldID: this.fieldID,\n classes: this.classes,\n currentValue: this.currentValue\n };\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listcheckbox-other-text' );\n return template( data );\n }\n },\n\n getCalcValue: function( fieldModel ) {\n var calc_value = 0;\n var options = fieldModel.get( 'options' );\n if ( 0 != options.length ) {\n _.each( fieldModel.get( 'value' ), function( val ) {\n var tmp_opt = _.find( options, function( opt ) { return opt.value == val } );\n calc_value = Number( calc_value ) + Number( tmp_opt.calc );\n } );\n }\n return calc_value;\n },\n\n beforeUpdateField: function( el, model ) {\n var selected = model.get( 'value' ) || [];\n if ( typeof selected == 'string' ) selected = [ selected ];\n\n var value = jQuery( el ).val();\n var checked = jQuery( el ).prop( 'checked' );\n if ( checked ) {\n selected.push( value );\n jQuery( el ).addClass( 'nf-checked' );\n jQuery( el ).parent().find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).addClass( 'nf-checked-label' );\n } else {\n jQuery( el ).removeClass( 'nf-checked' );\n jQuery( el ).parent().find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).removeClass( 'nf-checked-label' );\n var i = selected.indexOf( value );\n if( -1 != i ){\n selected.splice( i, 1 );\n } else if ( Array.isArray( selected ) ) {\n \tvar optionArray = typeof selected[0] !== \"undefined\" ? selected[0].split( ',' ) : [];\n \tvar valueIndex = optionArray.indexOf( value );\n \tif( -1 !== valueIndex) {\n \t\toptionArray.splice( valueIndex, 1 );\n\t }\n \tselected = optionArray.join( ',' );\n }\n }\n\n // if ( 1 == model.get( 'show_other' ) ) {\n // model.set( 'reRender', true );\n // }\n\n return _.clone( selected );\n }\n });\n\n return controller;\n} );\n","define('controllers/fieldImageList',[], function() {\n var controller = Marionette.Object.extend( {\n initialize: function() {\n this.listenTo( nfRadio.channel( 'listimage' ), 'init:model', this.register );\n nfRadio.channel( 'listimage' ).reply( 'before:updateField', this.beforeUpdateField, this );\n nfRadio.channel( 'listimage' ).reply( 'get:calcValue', this.getCalcValue, this );\n },\n\n register: function( model ) {\n model.set( 'renderOptions', this.renderOptions );\n model.set( 'renderOtherText', this.renderOtherText );\n model.set( 'selected', [] );\n\n /*\n * When we init a model, we need to set our 'value' to the selected option's value.\n * This is the list equivalent of a 'default value'.\n */ \n if ( 0 != model.get( 'image_options' ).length ) {\n var selected = _.filter( model.get( 'image_options' ), function( opt ) { return 1 == opt.selected } );\n selected = _.map( selected, function( opt ) { return opt.value } );\n }\n\n /*\n * This part is re-worked to take into account custom user-meta\n * values for fields.\n */\n\t var savedVal = model.get( 'value' );\n\t if( 'undefined' !== typeof savedVal && Array.isArray( savedVal ) ) {\n\t\t model.set( 'value', savedVal );\n\t } else if ( 'undefined' != typeof selected ) {\n\t\t model.set( 'value', selected );\n\t }\n },\n\n renderOptions: function() {\n var html = '';\n \n if ( '' == this.value || ( Array.isArray( this.value ) && 0 < this.value.length )\n || 0 < this.value.length ) {\n var valueFound = true;\n } else {\n var valueFound = false;\n }\n\n if (this.allow_multi_select === 1) {\n this.old_classname = 'list-checkbox';\n this.image_type = 'checkbox';\n } else {\n this.image_type = 'radio';\n }\n\n if(this.list_orientation === 'horizontal') {\n this.flex_direction = 'row';\n } else {\n this.flex_direction = 'column';\n }\n var that = this;\n\n var num_columns = parseInt(this.num_columns) || 1;\n var current_column = 1;\n var current_row = 1;\n \n _.each( this.image_options, function( image, index ) {\n if (!this.show_option_labels) {\n image.label = '';\n } else {\n image.label = (typeof nfFrontEnd.filter_esc_status !== \"undefined\" && nfFrontEnd.filter_esc_status === \"true\") ? _.escape(image.label) : image.label;\n }\n if( Array.isArray( this.value ) ) {\n \tif( Array.isArray( this.value[ 0 ] ) && -1 !== _.indexOf( this.value[ 0 ], image.value ) ) {\n \t\tvalueFound = true;\n\t }\n else if( _.indexOf( this.value, image.value ) ) {\n valueFound = true;\n\t }\n }\n\n if ( image.value == this.value ) {\n valueFound = true;\n }\n\n /*\n * TODO: This is a bandaid fix for making sure that each option has a \"visible\" property.\n * This should be moved to creation so that when an option is added, it has a visible property by default.\n */\n if ( 'undefined' == typeof image.visible ) {\n image.visible = true;\n }\n \n if(that.list_orientation === 'horizontal' && current_column <= num_columns) {\n image.styles = \"margin:auto;grid-column: \" + current_column + \"; grid-row = \" + current_row;\n\n if(current_column === num_columns) {\n current_column = 1;\n current_row += 1;\n } else {\n current_column += 1;\n }\n }\n\n image.image_type = that.image_type; \n image.fieldID = this.id;\n image.classes = this.classes;\n image.index = index;\n\n var selected = false;\n\t\t\t\t/*\n\t\t\t\t* This part has been re-worked to account for values passed in\n\t\t\t\t* via custom user-meta ( a la User Mgmt add-on)\n\t\t\t\t */\n\t if( Array.isArray( this.value ) && 0 < this.value.length ) {\n\t \tif ( -1 !== _.indexOf( this.value[ 0 ].split( ',' ), image.value )\n\t\t || -1 !== _.indexOf( this.value, image.value ) ) {\n\t\t\t selected = true;\n\t \t}\n\t } else if ( ! _.isArray( this.value ) && image.value == this.value ) {\n\t\t selected = true;\n\t } else if ( ( 1 == image.selected && this.clean ) && ('undefined' === typeof this.value || '' === this.value)) {\n\t\t selected = true;\n\t }\n\n\t image.selected = selected;\n\t image.isSelected = selected;\n\t image.required = this.required;\n image.maybeFilterHTML = this.maybeFilterHTML;\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listimage-option' );\n html += template( image );\n }, this );\n\n if ( 1 == this.show_other ) {\n if ( 'nf-other' == this.value ) {\n valueFound = false;\n }\n var data = {\n fieldID: this.id,\n classes: this.classes,\n value: this.value,\n currentValue: this.value,\n renderOtherText: this.renderOtherText,\n valueFound: valueFound\n };\n\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listimage-other' );\n html += template( data );\n\n }\n\n return html;\n },\n\n renderOtherText: function() {\n if ( 'nf-other' == this.currentValue || ! this.valueFound ) {\n if ( 'nf-other' == this.currentValue ) {\n this.currentValue = '';\n }\n var data = {\n fieldID: this.fieldID,\n classes: this.classes,\n currentValue: this.currentValue\n };\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listimage-other-text' );\n return template( data );\n }\n },\n\n getCalcValue: function( fieldModel ) {\n\t\t\tvar calc_value = 0;\n\t\t\tvar options = fieldModel.get( 'options' );\n\t\t\tif ( 0 != options.length ) {\n\t\t\t\t/*\n\t\t\t\t * Check to see if this is a multi-select list.\n\t\t\t\t */\n\t\t\t\tif ( 1 == parseInt( fieldModel.get( 'allow_multi_select' ) ) ) {\n\t\t\t\t\t/*\n\t\t\t\t\t * We're using a multi-select, so we need to check out any selected options and add them together.\n\t\t\t\t\t */\n\t\t\t\t\t_.each( fieldModel.get( 'value' ), function( val ) {\n\t\t\t\t\t\tvar tmp_opt = _.find( options, function( opt ) { return opt.value == val } );\n\t\t\t\t\t\tcalc_value += Number( tmp_opt.calc );\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\t/*\n\t\t\t\t\t * We are using a single select, so our selected option is in the 'value' attribute.\n\t\t\t\t\t */\n\t\t\t\t\tvar selected = _.find( options, function( opt ) { return fieldModel.get( 'value' ) == opt.value } );\n\t\t\t\t\t/*\n\t\t\t\t\t * If we have a selcted value, use it.\n\t\t\t\t\t */\n\t\t\t\t\tif ( 'undefined' !== typeof selected ) {\n calc_value = selected.calc;\n\t\t\t\t\t}\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn calc_value;\n },\n\n beforeUpdateField: function( el, model ) {\n\n if(model.get('allow_multi_select') !== 1) {\n var selected = jQuery( el ).val();\n var options = model.get('image_options');\n _.each(options, function(option, index) {\n if(option.value === selected) {\n option.isSelected = true;\n option.selected = true;\n } else {\n option.isSelected = false;\n option.selected = false;\n }\n if(!option.isSelected) {\n option.selected = false;\n jQuery(\"#nf-field-\" + option.fieldID + \"-\" + index).removeClass('nf-checked');\n jQuery(\"#nf-label-field-\" + option.fieldID + \"-\" + index).removeClass('nf-checked-label');\n } else {\n jQuery(\"#nf-field-\" + option.fieldID + \"-\" + index).addClass('nf-checked');\n jQuery(\"#nf-label-field-\" + option.fieldID + \"-\" + index).addClass('nf-checked-label');\n }\n });\n } else {\n var selected = model.get( 'value' ) || [];\n if ( typeof selected == 'string' ) selected = [ selected ];\n var value = jQuery( el ).val();\n var checked = jQuery( el ).prop( 'checked' );\n if ( checked ) {\n selected.push( value );\n jQuery( el ).addClass( 'nf-checked' );\n jQuery( el ).parent().find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).addClass( 'nf-checked-label' );\n } else {\n jQuery( el ).removeClass( 'nf-checked' );\n jQuery( el ).parent().find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).removeClass( 'nf-checked-label' );\n var i = selected.indexOf( value );\n if( -1 != i ){\n selected.splice( i, 1 );\n } else if ( Array.isArray( selected ) ) {\n var optionArray = selected[0].split( ',' );\n var valueIndex = optionArray.indexOf( value );\n if( -1 !== valueIndex) {\n optionArray.splice( valueIndex, 1 );\n }\n selected = optionArray.join( ',' );\n }\n }\n }\n\n return _.clone( selected );\n }\n });\n\n return controller;\n} );\n","define('controllers/fieldRadio',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'listradio' ), 'change:modelValue', this.changeModelValue );\n\t\t\tthis.listenTo( nfRadio.channel( 'listradio' ), 'init:model', this.register );\n\t\t\tnfRadio.channel( 'listradio' ).reply( 'get:calcValue', this.getCalcValue, this );\n\t\t\t\n\t\t\tthis.listenTo( nfRadio.channel( 'listradio' ), 'change:field', this.updateCheckedClass, this );\n\t\t},\n\n\t\tregister: function( model ) {\n\t\t\tmodel.set( 'renderOptions', this.renderOptions );\n\t\t\tmodel.set( 'renderOtherText', this.renderOtherText );\n\t\t\t/*\n\t\t\t * When we init a model, we need to set our 'value' to the selected option's value.\n\t\t\t * This is the list equivalent of a 'default value'.\n\t\t\t */ \n\t\t\tif ( 0 != model.get( 'options' ).length ) {\n\t\t\t\t/*\n\t\t\t\t * Check to see if we have a selected value.\n\t\t\t\t */\n\t\t\t\tvar selected = _.find( model.get( 'options' ), function( opt ) { return 1 == opt.selected } );\n\n\t\t\t\tif ( 'undefined' != typeof selected ) {\n\t\t\t\t\tmodel.set( 'value', selected.value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tchangeModelValue: function( model ) {\n\t\t\tif ( 1 == model.get( 'show_other' ) ) {\n\t\t\t\t// model.set( 'reRender', true );\n\t\t\t\tmodel.trigger( 'reRender');\n\t\t\t}\n\t\t},\n\n\t\trenderOptions: function() {\n\t\t\tvar html = '';\n\t\t\tif ( '' == this.value ) {\n\t\t\t\tvar valueFound = true;\n\t\t\t} else {\n\t\t\t\tvar valueFound = false;\n\t\t\t}\n\t\t\t\n\t\t\t_.each( this.options, function( option, index ) {\n\t\t\t\tif ( option.value == this.value ) {\n\t\t\t\t\tvalueFound = true;\n\t\t\t\t}\n\n\t\t\t\t/*\n * TODO: This is a bandaid fix for making sure that each option has a \"visible\" property.\n * This should be moved to creation so that when an option is added, it has a visible property by default.\n */\n if ( 'undefined' == typeof option.visible ) {\n option.visible = true;\n }\n\n option.selected = false;\n\t\t\t\toption.fieldID = this.id;\n\t\t\t\toption.classes = this.classes;\n\t\t\t\toption.currentValue = this.value;\n\t\t\t\toption.index = index;\n\t\t\t\toption.label = (typeof nfFrontEnd.filter_esc_status !== \"undefined\" && nfFrontEnd.filter_esc_status === \"true\") ? _.escape(option.label) : option.label;\n\t\t\t\toption.required = this.required;\n\n\t\t\t\t/*\n\t\t\t\t * If we haven't edited this field yet, use the default checked\n\t\t\t\t */\n\t\t\t\tif ( this.clean && 1 == this.selected ) {\n\t\t\t\t\toption.selected = true;\n\t\t\t\t} else if ( this.value == option.value ) {\n\t\t\t\t\toption.selected = true;\n\t\t\t\t} else {\n\t\t\t\t\toption.selected = false;\n\t\t\t\t}\n\n option.maybeFilterHTML = this.maybeFilterHTML;\n\t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listradio-option' );\n\n\t\t\t\thtml += template( option );\n\t\t\t}, this );\n\n\t\t\tif ( 1 == this.show_other ) {\n\t\t\t\tif ( 'nf-other' == this.value ) {\n\t\t\t\t\tvalueFound = false;\n\t\t\t\t}\n\t\t\t\tvar data = {\n\t\t\t\t\tfieldID: this.id,\n\t\t\t\t\tclasses: this.classes,\n\t\t\t\t\tcurrentValue: this.value,\n\t\t\t\t\trenderOtherText: this.renderOtherText,\n\t\t\t\t\tvalueFound: valueFound\n\t\t\t\t};\n\t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listradio-other' );\n\t\t\t\thtml += template( data );\n\t\t\t}\n\n\t\t\treturn html;\n\t\t},\n\n\t\trenderOtherText: function() {\n\t\t\tif ( 'nf-other' == this.currentValue || ! this.valueFound ) {\n\t\t\t\tif ( 'nf-other' == this.currentValue ) {\n\t\t\t\t\tthis.currentValue = '';\n\t\t\t\t}\n\t\t\t\tvar data = {\n\t\t\t\t\tfieldID: this.fieldID,\n\t\t\t\t\tclasses: this.classes,\n\t\t\t\t\tcurrentValue: this.currentValue\n\t\t\t\t};\n\t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listradio-other-text' );\n\t\t\t\treturn template( data );\n\t\t\t}\n\t\t},\n\n\t\tgetCalcValue: function( fieldModel ) {\n\t\t\t\n /*\n * Default to 0, in case we have no selection.\n */\n var calc_value = 0;\n \n\t\t\tif ( 0 != fieldModel.get( 'options' ).length ) {\n\t\t\t\t/*\n\t\t\t\t * Check to see if we have a selected value.\n\t\t\t\t */\n\t\t\t\tvar selected = _.find( fieldModel.get( 'options' ), function( opt ) { return fieldModel.get( 'value' ) == opt.value } );\n\t\t\t\tif ( 'undefined' !== typeof selected ) {\n calc_value = selected.calc;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn calc_value;\n\t\t},\n\n\t\tupdateCheckedClass: function( el, model ) {\n\t\t\tjQuery( '[name=\"' + jQuery( el ).attr( 'name' ) + '\"]' ).removeClass( 'nf-checked' );\n\t\t\tjQuery( el ).closest( 'ul' ).find( 'label' ).removeClass( 'nf-checked-label' );\n\t\t\tjQuery( el ).addClass( 'nf-checked' );\n\t\t\tjQuery( el ).closest( 'li' ).find( 'label[for=\"' + jQuery( el ).prop( 'id' ) + '\"]' ).addClass( 'nf-checked-label' );\n\n\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n","define('controllers/fieldNumber',[], function() {\n var controller = Marionette.Object.extend( {\n initialize: function() {\n this.listenTo( nfRadio.channel( 'number' ), 'init:model', this.maybeMinDefault );\n this.listenTo( nfRadio.channel( 'number' ), 'keyup:field', this.validateMinMax );\n },\n\n maybeMinDefault: function( model ) {\n\n if( '' == model.get( 'value' ) && '' == model.get( 'placeholder' ) ){\n var min = model.get( 'num_min' );\n model.set( 'placeholder', min );\n }\n },\n\n validateMinMax: function( el, model ) {\n var $el = jQuery( el );\n var value = parseFloat( $el.val() );\n var min = $el.attr( 'min' );\n var max = $el.attr( 'max' );\n var step = parseFloat( $el.attr( 'step' ) );\n\n if( min && value < min ){\n var fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', model.get( 'id' ) );\n var formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n nfRadio.channel( 'fields' ).request( 'add:error', model.get( 'id' ), 'number-min', formModel.get( 'settings' ).fieldNumberNumMinError );\n } else {\n nfRadio.channel( 'fields' ).request( 'remove:error', model.get( 'id' ), 'number-min' );\n }\n\n if ( max && value > max ){\n var fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', model.get( 'id' ) );\n var formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n nfRadio.channel( 'fields' ).request( 'add:error', model.get( 'id' ), 'number-max', formModel.get( 'settings' ).fieldNumberNumMaxError );\n } else {\n nfRadio.channel( 'fields' ).request( 'remove:error', model.get( 'id' ), 'number-max' );\n }\n\n var testValue = Math.round( parseFloat( value ) * 1000000000 );\n var testStep = Math.round( parseFloat( step ) * 1000000000 );\n\n if( step && value && 0 !== testValue % testStep ){\n var fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', model.get( 'id' ) );\n var formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n nfRadio.channel( 'fields' ).request( 'add:error', model.get( 'id' ), 'number-step', formModel.get( 'settings' ).fieldNumberIncrementBy + step );\n } else {\n nfRadio.channel( 'fields' ).request( 'remove:error', model.get( 'id' ), 'number-step' );\n }\n }\n\n });\n\n return controller;\n} );\n","define( 'controllers/mirrorField',[], function() {\n\tvar radioChannel = nfRadio.channel( 'fields' );\n\n\tvar controller = Marionette.Object.extend( {\n\t\tlisteningModel: '',\n\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( radioChannel, 'init:model', this.registerMirror );\n\t\t},\n\n\t\tregisterMirror: function( model ) {\n\t\t\tif ( model.get( 'mirror_field' ) ) {\n\t\t\t\tthis.listeningModel = model;\n\t\t\t\tvar targetID = model.get( 'mirror_field' );\n\t\t\t\tthis.listenTo( nfRadio.channel( 'field-' + targetID ), 'change:modelValue', this.changeValue );\n\t\t\t}\n\t\t},\n\n\t\tchangeValue: function( targetModel ) {\n\t\t\tthis.listeningModel.set( 'value', targetModel.get( 'value' ) );\n\t\t\t// this.listeningModel.set( 'reRender', true );\n\t\t\tthis.listeningModel.trigger( 'reRender' );\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define( 'controllers/confirmField',[], function() {\n\tvar radioChannel = nfRadio.channel( 'fields' );\n\tvar errorID = 'confirm-mismatch';\n\n\tvar controller = Marionette.Object.extend( {\n\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( radioChannel, 'init:model', this.registerConfirm );\n\t\t\tthis.listenTo( radioChannel, 'keyup:field', this.confirmKeyup );\n\t\t},\n\n\t\tregisterConfirm: function( confirmModel ) {\n\t\t\tif ( ! confirmModel.get( 'confirm_field' ) ) return;\n\n\t\t\tthis.listenTo( nfRadio.channel( 'form' ), 'loaded', function( formModal ){\n\t\t\t\tthis.registerConfirmListeners( confirmModel );\n\t\t\t});\n\t\t},\n\n\t\tregisterConfirmListeners: function( confirmModel ) {\n\t\t\t\n\t\t\tvar targetModel = nfRadio.channel( 'form-' + confirmModel.get( 'formID' ) ).request( 'get:fieldByKey', confirmModel.get( 'confirm_field' ) );\n\n\t\t\t//TODO: Add better handling for password confirm fields on the front end.\n\t\t\tif( 'undefined' == typeof targetModel ) return;\n\n\t\t\ttargetModel.set( 'confirm_with', confirmModel.get( 'id' ) );\n\t\t\tthis.listenTo( nfRadio.channel( 'field-' + targetModel.get( 'id' ) ), 'change:modelValue', this.changeValue );\n\t\t\tthis.listenTo( nfRadio.channel( 'field-' + confirmModel.get( 'id' ) ), 'change:modelValue', this.changeValue );\n\t\t},\n\n\t\tchangeValue: function( model ) {\n\t\t\tif ( 'undefined' == typeof model.get( 'confirm_with' ) ) {\n\t\t\t\tvar confirmModel = model;\n\t\t\t\tvar targetModel = nfRadio.channel( 'form-' + model.get( 'formID' ) ).request( 'get:fieldByKey', confirmModel.get( 'confirm_field' ) );\n\t\t\t} else {\n\t\t\t\tvar targetModel = model;\n\t\t\t\tvar confirmModel = radioChannel.request( 'get:field', targetModel.get( 'confirm_with' ) );\n\t\t\t}\n\t\t\tvar targetID = targetModel.get( 'id' );\n\t\t\tvar confirmID = confirmModel.get( 'id' );\n\n\t\t\tif ( '' == confirmModel.get( 'value' ) || confirmModel.get( 'value' ) == targetModel.get( 'value' ) ) {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', confirmID, errorID );\n\t\t\t} else {\n\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', confirmID );\n\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', confirmID, errorID, formModel.get( 'settings' ).confirmFieldErrorMsg );\n\t\t\t}\n\t\t},\n\t\t\n\t\tconfirmKeyup: function( el, model, keyCode ) {\n\n\t\t\tvar currentValue = jQuery( el ).val();\n\t\t\tif ( model.get( 'confirm_field' ) ) {\n\t\t\t\tvar confirmModel = model;\n\t\t\t\tvar confirmID = model.get( 'id' );\n\t\t\t\tvar targetModel = nfRadio.channel( 'form-' + model.get( 'formID' ) ).request( 'get:fieldByKey', confirmModel.get( 'confirm_field' ) );\n\t\t\t\tvar compareValue = targetModel.get( 'value' );\n\t\t\t\tvar confirmValue = currentValue;\n\t\t\t} else if ( model.get( 'confirm_with' ) ) {\n\t\t\t\tvar confirmModel = nfRadio.channel( 'fields' ).request( 'get:field', model.get( 'confirm_with' ) );\n\t\t\t\tvar confirmID = confirmModel.get( 'id' );\n\t\t\t\tvar confirmValue = confirmModel.get( 'value' );\n\t\t\t\tvar compareValue = confirmValue;\n\t\t\t}\n\n\t\t\tif ( 'undefined' !== typeof confirmModel ) {\n\t\t\t\tif ( '' == confirmValue ) {\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', confirmID, errorID );\n\t\t\t\t} else if ( currentValue == compareValue ) {\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', confirmID, errorID );\n\t\t\t\t} else {\n\t\t\t\t\tvar fieldModel = nfRadio.channel( 'fields' ).request( 'get:field', confirmID );\n\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\t\t\tnfRadio.channel( 'fields' ).request( 'add:error', confirmID, errorID, formModel.get( 'settings' ).confirmFieldErrorMsg );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define('controllers/updateFieldModel',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tnfRadio.channel( 'nfAdmin' ).reply( 'update:field', this.updateField );\n\t\t},\n\n\t\tupdateField: function( model, value ) {\n\t\t\tif ( ! model.get( 'isUpdated' ) ) {\n\t\t\t\tmodel.set( 'value', value );\n\t\t\t\tmodel.set( 'isUpdated', true );\n\t\t\t\t/*\n\t\t\t\t * If we're working with an array, it won't trigger a change event on the value attribute.\n\t\t\t\t * Instead, we have to manually trigger a change event.\n\t\t\t\t */ \n\t\t\t\tif ( _.isArray( value ) ) {\n\t\t\t\t\tmodel.trigger( 'change:value', model );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn controller;\n} );\n","define('controllers/submitButton',['controllers/submitButton'], function( submitButton ) {\n\tvar controller = Marionette.Object.extend( {\n\t\tbound: {},\n\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'submit' ), 'init:model', this.registerHandlers );\n\t\t},\n\n\t\tregisterHandlers: function( fieldModel ) {\n\t\t\tif ( 'undefined' != typeof this.bound[ fieldModel.get( 'id' ) ] ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.listenTo( nfRadio.channel( 'field-' + fieldModel.get( 'id' ) ), 'click:field', this.click, this );\n\t\t\t/*\n\t\t\t * Register an interest in the 'before:submit' event of our form.\n\t\t\t */\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'before:submit', this.beforeSubmit, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'submit:failed', this.resetLabel, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'submit:response', this.resetLabel, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'enable:submit', this.maybeEnable, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'disable:submit', this.maybeDisable, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ), 'processingLabel', this.processingLabel, fieldModel );\n\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'fields' ), 'add:error', this.maybeDisable, fieldModel );\n\t\t\tfieldModel.listenTo( nfRadio.channel( 'fields' ), 'remove:error', this.maybeEnable, fieldModel );\n\t\t\t\n\t\t\tthis.bound[ fieldModel.get( 'id') ] = true;\n\t\t},\n\n\t\tclick: function( e, fieldModel ) {\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n\t\t\tif(_.size(formModel.get('fieldErrors')) > 0){\n\t\t\t\tnfRadio.channel( 'submit' ).request( 'focus:firstInvalidInput', Object.keys(formModel.get('fieldErrors')) );\n\t\t\t}\n\t\t\tnfRadio.channel( 'form-' + fieldModel.get( 'formID' ) ).request( 'submit', formModel );\n\t\t},\n\n\t\tbeforeSubmit: function() {\n\t\t\tif(this.get('disabled')) return;\n\n\t\t\tthis.set( 'disabled', true );\n\t\t\tnfRadio.channel( 'form-' + this.get( 'formID' ) ).trigger( 'processingLabel', this );\n\t\t},\n\n\t\tmaybeDisable: function( fieldModel ) {\n\n\t\t\tif( 'undefined' != typeof fieldModel && fieldModel.get( 'formID' ) != this.get( 'formID' ) ) return;\n\n\t\t\tthis.set( 'disabled', true );\n\t\t\tthis.trigger( 'reRender' );\n\t\t},\n\n\t\tmaybeEnable: function( fieldModel ) {\n\t\t\t/*\n\t\t\t * If the field reporting the error is not on the same form as the submit button, return false;\n\t\t\t */\n\t\t\tif ( 'undefined' != typeof fieldModel && fieldModel.get( 'formID' ) != this.get( 'formID' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', this.get( 'formID' ) );\n\t\t\tif ( 0 == _.size( formModel.get( 'fieldErrors' ) ) ) {\n\t\t\t\tthis.set( 'disabled', false );\n\t\t\t\tthis.trigger( 'reRender' );\n\t\t\t}\n\t\t},\n\n\t\tprocessingLabel: function() {\n\n\t\t\tthis.set( 'oldLabel', this.get( 'label' ) );\n\t\t\tthis.set( 'label', this.get( 'processing_label' ) );\n\t\t\tthis.set( 'disabled', true );\n\t\t\tthis.trigger( 'reRender' );\n\t\t},\n\n\t\tresetLabel: function( response ) {\n\t\t\tif ( 'undefined' != typeof response.errors &&\n\t\t\t\t 'undefined' != typeof response.errors.nonce &&\n\t\t\t\t _.size( response.errors.nonce ) > 0 ) {\n\t\t\t\tif( 'undefined' != typeof response.errors.nonce.new_nonce && 'undefined' != typeof response.errors.nonce.nonce_ts ) {\n\t\t\t\t\t// Do not reset label for nonce errors, which will re-submit the form.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( 'undefined' != typeof this.get( 'oldLabel' ) ) {\n\t\t\t\tthis.set( 'label', this.get( 'oldLabel' ) );\n\t\t\t}\n\t\t\tthis.set( 'disabled', false );\n\t\t\tthis.trigger( 'reRender' );\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n","define('controllers/submitDebug',[], function() {\n var controller = Marionette.Object.extend( {\n initialize: function() {\n this.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.submitDebug );\n },\n\n submitDebug: function( response, textStatus, jqXHR, formID ) {\n\n if( 'undefined' == typeof response.debug ) return;\n\n /* Form Debug Messages */\n if( 'undefined' != typeof response.debug.form ) {\n var debugMessages = document.createElement( 'span' );\n _.each(response.debug.form, function (message, index) {\n var messageText = document.createTextNode( message );\n debugMessages.appendChild( messageText );\n debugMessages.appendChild(\n document.createElement( 'br' )\n );\n });\n jQuery('.nf-debug-msg').html( debugMessages );\n }\n\n /* Console Debug Messages */\n if( 'undefined' != typeof response.debug.console ) {\n var style = '';\n console.log( '%c%s', style, 'NINJA SUPPORT' );\n _.each(response.debug.console, function (message, index) {\n console.log( message );\n });\n console.log( '%c%s', style, 'END NINJA SUPPORT' );\n }\n }\n\n });\n\n return controller;\n} );\n\n","define('controllers/getFormErrors',[], function() {\n\tvar radioChannel = nfRadio.channel( 'fields' );\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function( model ) {\n\t\t\tnfRadio.channel( 'form' ).reply( 'get:errors', this.getFormErrors );\n\t\t},\n\n\t\tgetFormErrors: function( formID ) {\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', formID );\n\t\t\tvar errors = false;\n\t\t\t\n\t\t\tif ( formModel ) {\n\t\t\t\t/*\n\t\t\t\t * Check to see if we have any errors on our form model.\n\t\t\t\t */\n\t\t\t\tif ( 0 !== formModel.get( 'errors' ).length ) {\n\t\t\t\t\t_.each( formModel.get( 'errors' ).models, function( error ) {\n\t\t\t\t\t\terrors = errors || {};\n\t\t\t\t\t\terrors[ error.get( 'id' ) ] = error.get( 'msg' );\n\t\t\t\t\t} );\t\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t_.each( formModel.get( 'fields' ).models, function( field ) {\n\t\t\t\t\tif ( field.get( 'type' ) != 'submit' && field.get( 'errors' ).length > 0 ) {\n\t\t\t\t\t\terrors = errors || {};\n\t\t\t\t\t\terrors[ field.get( 'id' ) ] = field.get( 'errors' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn errors;\n\t\t},\n\t});\n\n\treturn controller;\n} );\n","define('controllers/validateRequired',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'blur:field', this.validateRequired );\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'change:field', this.validateRequired );\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'keyup:field', this.validateKeyup );\n\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'change:modelValue', this.validateModelData );\n\t\t\tthis.listenTo( nfRadio.channel( 'submit' ), 'validate:field', this.validateModelData );\n\t\t},\n\t\t\n\t\tvalidateKeyup: function( el, model, keyCode ) {\n\t\t\tif ( 1 != model.get( 'required' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! model.get( 'clean' ) ) {\n\t\t\t\tthis.validateRequired( el, model );\n\t\t\t}\n\t\t},\n\n\t\tvalidateRequired: function( el, model ) {\n\t\t\tif ( 1 != model.get( 'required' ) || ! model.get( 'visible' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar currentValue = jQuery( el ).val();\n\t\t\tvar customReqValidation = nfRadio.channel( model.get( 'type' ) ).request( 'validate:required', el, model );\n\t\t\tvar defaultReqValidation = true;\n\n\t\t\tvar maskPlaceholder = this.getMask( model );\n\n // If the field has a mask...\n // AND that mask is equal to the current value... \n if ( maskPlaceholder && currentValue === maskPlaceholder ) {\n // If we have a pre-existing error...\n // OR if this field has been previously focused...\n if ( 0 < model.get( 'errors' ).length || ! model.get( 'clean' ) ) {\n // Persist that error.\n defaultReqValidation = false;\n }\n }\n // If our value is an empty string...\n if ( ! String(currentValue).trim() ) {\n // Throw an error.\n defaultReqValidation = false;\n }\n\n\t\t\tif ( 'undefined' !== typeof customReqValidation ) {\n\t\t\t\tvar valid = customReqValidation;\n\t\t\t} else {\n\t\t\t\tvar valid = defaultReqValidation;\n\t\t\t}\n\n\t\t\tthis.maybeError( valid, model );\n\t\t},\n\n\t\tgetMask: function( model ) {\n\t\t\tvar mask = model.get( 'mask' );\n\n\t\t\tif(\"undefined\" === typeof mask) return;\n\t\t\t\n\t\t\tswitch(mask) {\n\t\t\t\tcase '':\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'currency':\n\t\t\t\t\tmask = nfi18n.currencySymbol;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'custom':\n\t\t\t\t\tmask = model.get( 'custom_mask' );\n\t\t\t\t\t/**\n\t\t\t\t\t * Break intentionally excluded so that this case\n\t\t\t\t\t * also executes the contents of default.\n\t\t\t\t\t */\n\t\t\t\tdefault:\n\t\t\t\t\tmask = mask.replace( /9/g, '_' );\n\t\t\t\t\tmask = mask.replace( /a/g, '_' );\n\t\t\t\t\tmask = mask.replace( /\\*/g, '_' );\n\t\t\t}\n\t\t\treturn mask;\n\t\t},\n\n\t\tvalidateModelData: function( model ) {\n\n\t\t\tif ( 1 != model.get( 'required' ) || ! model.get( 'visible' ) || model.get( 'clean' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * If we already have a required error on this model, return false\n\t\t\t */\n\t\t\tif ( model.get( 'errors' ).get( 'required-error' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcurrentValue = model.get( 'value' );\n\n\t\t\tvar defaultReqValidation = true;\n\n\t\t\tif ( ! String(currentValue).trim() ) {\n\t\t\t\tdefaultReqValidation = false;\n\t\t\t}\n\n\t\t\tvar customReqValidation = nfRadio.channel( model.get( 'type' ) ).request( 'validate:modelData', model );\n\t\t\tif ( 'undefined' !== typeof customReqValidation ) {\n\t\t\t\tvar valid = customReqValidation;\n\t\t\t} else {\n\t\t\t\tvar valid = defaultReqValidation;\n\t\t\t}\n\n\t\t\tthis.maybeError( valid, model );\n\n\t\t},\n\n\t\tmaybeError: function( valid, model ) {\n\t\t\tif ( ! valid ) {\n\n\t\t\t\tvar formModel = nfRadio.channel( 'form-' + model.get( 'formID' ) ).request( 'get:form' );\n\t\t\t\t\n\t\t\t\tif( 'undefined' != typeof formModel ) {\n\t\t\t\t\tnfRadio.channel('fields').request('add:error', model.get('id'), 'required-error', formModel.get('settings').validateRequiredField );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnfRadio.channel( 'fields' ).request( 'remove:error', model.get( 'id' ), 'required-error' );\n\t\t\t}\t\t\t\n\t\t}\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/submitError',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.submitErrors );\n\t\t\t//Focus first invalid input after catching errors during submission\n\t\t\tnfRadio.channel( 'submit' ).reply( 'focus:firstInvalidInput', this.focusFirstInvalidInput );\n\t\t},\n\n\t\tsubmitErrors: function( response, textStatus, jqXHR, formID ) {\n\n\t\t\t// Check for nonce error.\n\t\t\tif ( _.size( response.errors.nonce ) > 0 ) {\n\t\t\t\tif( 'undefined' != typeof response.errors.nonce.new_nonce && 'undefined' != typeof response.errors.nonce.nonce_ts ) {\n\t\t\t\t\t// Update nonce from response.\n\t\t\t\t\tnfFrontEnd.ajaxNonce = response.errors.nonce.new_nonce;\n\t\t\t\t\tnfFrontEnd.nonce_ts = response.errors.nonce.nonce_ts;\n\t\t\t\t\t// Re-submit form.\n\t\t\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', formID );\n\t\t\t\t\tnfRadio.channel( 'form-' + formID ).request( 'submit', formModel );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( _.size( response.errors.fields ) > 0 ) {\n\t\t\t\t_.each( response.errors.fields, function( data, fieldID ) {\n if ( typeof( data ) === 'object' ) {\n nfRadio.channel( 'fields' ).request( 'add:error', fieldID, data.slug, data.message );\n } else {\n nfRadio.channel( 'fields' ).request( 'add:error', fieldID, 'required-error', data );\n }\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( _.size( response.errors.form ) > 0 ) {\n\t\t\t\t_.each( response.errors.form, function( msg, errorID ) {\n\t\t\t\t\tnfRadio.channel( 'form-' + formID ).request( 'remove:error', errorID );\n\t\t\t\t\tnfRadio.channel( 'form-' + formID ).request( 'add:error', errorID, msg );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( 'undefined' != typeof response.errors.last ) {\n\t\t\t\tif( 'undefined' != typeof response.errors.last.message ) {\n\t\t\t\t\tvar style = 'background: rgba( 255, 207, 115, .5 ); color: #FFA700; display: block;';\n\t\t\t\t\tconsole.log( '%c NINJA FORMS SUPPORT: SERVER ERROR', style );\n\t\t\t\t\tconsole.log( response.errors.last.message );\n\t\t\t\t\tconsole.log( '%c END SERVER ERROR MESSAGE', style );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * TODO: This needs to be re-worked for backbone. It's not dynamic enough.\n\t\t\t */\n\t\t\t/*\n\t\t\t * Re-show any hidden fields during a form submission re-start.\n\t\t\t */\n\t\t\tjQuery( '#nf-form-' + formID + '-cont .nf-field-container' ).show();\n\t\t},\n\n\t\tfocusFirstInvalidInput: function(errors) {\n\t\t\tconst targetID = nfRadio.channel( 'fields' ).request( 'get:firstFieldByOrder', errors );\n\t\t\tif(document.getElementById(\"nf-field-\"+ targetID) !== null){\n\t\t\t\tdocument.getElementById(\"nf-field-\"+ targetID).focus();\n\t\t\t}\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/actionRedirect',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.actionRedirect );\n\t\t},\n\n\t\tactionRedirect: function( response ) {\n\n\t\t\tif ( 'undefined' != typeof response.data.halt && 'undefined' != typeof response.data.halt.redirect && '' != response.data.halt.redirect ) {\n\t\t\t\twindow.location = response.data.halt.redirect;\n\t\t\t}\n\n\t\t\tif ( _.size( response.errors ) == 0 && 'undefined' != typeof response.data.actions ) {\n\n\t\t\t\tif ( 'undefined' != typeof response.data.actions.redirect && '' != response.data.actions.redirect ) {\n\t\t\t\t\twindow.location = response.data.actions.redirect;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n","define('controllers/actionSuccess',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.actionSubmit );\n\t\t},\n\n\t\tactionSubmit: function( response ) {\n\t\t\tif ( _.size( response.errors ) == 0 && 'undefined' != typeof response.data.actions ) {\n\t\t\t\tif ( 'undefined' != typeof response.data.actions.success_message && '' != response.data.actions.success_message ) {\n\t\t\t\t\tvar form_id = response.data.form_id;\n\t\t\t\t\tvar success_message = jQuery( '#nf-form-' + form_id + '-cont .nf-response-msg' );\n\t\t\t\t\tconst read = response.data.actions.success_message.replace( /(<([^>]+)>)/ig, '');\n\t\t\t\t\tsuccess_message.attr('tabindex', '0');\n\t\t\t\t\tsuccess_message.attr('aria-live', 'assertive');\n\t\t\t\t\tsuccess_message.attr(\"aria-label\", read);\n\t\t\t\t\t\n\t\t\t\t\tsuccess_message.html( response.data.actions.success_message ).show();\n\t\t\t\t\tsuccess_message.focus();\n\t\t\t\t\t//Let's check if the success message is already fully visible in the viewport without scrolling\n\t\t\t\t\tvar top_of_success_message = success_message.offset().top;\n\t\t\t\t\tvar bottom_of_success_message = success_message.offset().top + success_message.outerHeight();\n\t\t\t\t\tvar bottom_of_screen = jQuery(window).scrollTop() + jQuery(window).height();\n\t\t\t\t\tvar top_of_screen = jQuery(window).scrollTop();\n\n\t\t\t\t\tvar the_element_is_visible = ((bottom_of_screen > bottom_of_success_message) && (top_of_screen < top_of_success_message));\n\n\t\t\t\t\tif(!the_element_is_visible){\n\t\t\t\t\t\t//The element isn't visible, so let's scroll to the success message as in the previous release, but with a short animation\n\t\t\t\t\t\tjQuery('html, body').animate({\n\t\t\t\t\t\t\tscrollTop: ( success_message.offset().top - 50 )\n\t\t\t\t\t\t}, 300 );\n\t\t\t\t\t}\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/fieldSelect',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\n\t\t\tthis.listenTo( nfRadio.channel( 'fields' ), 'init:model', function( model ){\n\t\t\t\tif( 'list' == model.get( 'parentType' ) ) this.register( model );\n\t\t\t}, this );\n\n\t\t\tnfRadio.channel( 'listselect' ).reply( 'get:calcValue', this.getCalcValue, this );\n\t\t\tnfRadio.channel( 'listmultiselect' ).reply( 'get:calcValue', this.getCalcValue, this );\n\t\t},\n\n\t\tregister: function( model ) {\n\t\t\tmodel.set( 'renderOptions', this.renderOptions );\n\t\t\tmodel.set( 'renderOtherAttributes', this.renderOtherAttributes );\n\t\t\t/*\n\t\t\t * When we init a model, we need to set our 'value' to the selected option's value.\n\t\t\t * This is the list equivalent of a 'default value'.\n\t\t\t */ \n\t\t\tif ( 0 != model.get( 'options' ).length ) {\n\t\t\t\t//Check to see if there is a value set for the field\n\t\t\t\tvar savedVal = model.get( 'value' );\n\n\t\t\t\t/*\n\t\t\t\t * Check to see if this is a multi-select list.\n\t\t\t\t */\n\t\t\t\tif ( 'listmultiselect' == model.get( 'type' ) ) {\n\t\t\t\t\t/*\n\t\t\t\t\t * We're using a multi-select, so we need to check out any selected options and add them together.\n\t\t\t\t\t */\n\t\t\t\t\tvar selected = _.filter( model.get( 'options' ), function( opt ) { return 1 == opt.selected } );\n\t\t\t\t\tselected = _.map( selected, function( opt ) { return opt.value } );\n\t\t\t\t\tvar value = selected;\n\t\t\t\t} else if ( 'listradio' !== model.get( 'type' ) ) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Check to see if we have a selected value.\n\t\t\t\t\t */\n\t\t\t\t\tvar selected = _.find( model.get( 'options' ), function( opt ) { return 1 == opt.selected } );\n\t\t\t\t\t/*\n\t\t\t\t\t * We don't have a selected value, so use our first option.\n\t\t\t\t\t */\n\t\t\t\t\tif ( 'undefined' == typeof selected ) {\n\t\t\t\t\t\tselected = _.first( model.get( 'options' ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( 'undefined' != typeof selected\n\t\t\t\t\t\t&& 'undefined' != typeof selected.value ) {\n\t\t\t\t\t\tvar value = selected.value;\n\t\t\t\t\t} else if ( 'undefined' != typeof selected ) {\n\t\t\t\t\t\tvar value = selected.label;\n\t\t\t\t\t}\t\n\t\t\t\t}\n\n\t\t\t\t/*\n\t * This part is re-worked to take into account custom user-meta\n\t * values for fields.\n\t */\n\t\t\t\tif( 'undefined' !== typeof savedVal && '' !== savedVal\n\t\t\t\t\t&& Array.isArray( savedVal ) ) {\n\t\t\t\t\tmodel.set( 'value', savedVal );\n\t\t\t\t} else if ( 'undefined' != typeof selected ) {\n\t\t\t\t\tmodel.set( 'value', value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\trenderOptions: function() {\n\t\t\tvar html = '';\n\n\t\t\t_.each( this.options, function( option ) {\n\t\t\t\t/*\n\t\t\t\t* This part has been re-worked to account for values passed in\n\t\t\t\t* via custom user-meta ( a la User Mgmt add-on)\n\t\t\t\t */\n\t\t\t\tif ( _.isArray( this.value ) ) {\n // If we have a multiselect list...\n // AND it has selected values...\n\t\t\t\t\tif( 'listmultiselect' === this.type && 0 < this.value.length &&\n\t\t\t\t\t\t-1 != _.indexOf( this.value[ 0 ].split( ',' ), option.value ) ) {\n\t\t\t\t\t\tvar selected = true;\n\t\t\t\t\t} else if( -1 != _.indexOf( this.value, option.value ) ) {\n\t\t\t\t\t\tvar selected = true;\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! _.isArray( this.value ) && option.value == this.value ) {\n\t\t\t\t\tvar selected = true;\n\t\t\t\t} else if ( ( 1 == option.selected && this.clean )\n\t\t\t\t\t&& 'undefined' === typeof this.value ) {\n\t\t\t\t\tvar selected = true;\n\t\t\t\t} else {\n\t\t\t\t\tvar selected = false;\n\t\t\t\t}\n\n\t\t\t\t/*\n * TODO: This is a bandaid fix for making sure that each option has a \"visible\" property.\n * This should be moved to creation so that when an option is added, it has a visible property by default.\n */\n if ( 'undefined' == typeof option.visible ) {\n option.visible = true;\n }\n\n\t\t\t\toption.selected = selected;\n\t\t\t\toption.fieldID = this.id;\n\t\t\t\toption.classes = this.classes;\n\t\t\t\toption.currentValue = this.value;\n\t\t\t\toption.label = (typeof nfFrontEnd.filter_esc_status !== \"undefined\" && nfFrontEnd.filter_esc_status === \"true\") ? _.escape(option.label) : option.label;\n\t\t\t\t\n option.maybeFilterHTML = this.maybeFilterHTML;\n\t\t\t\tvar template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-listselect-option' );\n\t\t\t\thtml += template( option );\n\t\t\t}, this );\n\n\t\t\treturn html;\n\t\t},\n\n\t\trenderOtherAttributes: function() {\n\t\t\tvar otherAttributes = '';\n\n\t\t\tif( 'listmultiselect' == this.type ){\n\t\t\t\totherAttributes = otherAttributes + ' multiple';\n\n\t\t\t\tvar multiSize = this.multi_size || 5;\n\t\t\t\totherAttributes = otherAttributes + ' size=\"' + multiSize + '\"';\n\t\t\t}\n\n\t\t\treturn otherAttributes;\n\t\t},\n\n\t\tgetCalcValue: function( fieldModel ) {\n\t\t\tvar calc_value = 0;\n\t\t\tvar options = fieldModel.get( 'options' );\n\t\t\tif ( 0 != options.length ) {\n\t\t\t\t/*\n\t\t\t\t * Check to see if this is a multi-select list.\n\t\t\t\t */\n\t\t\t\tif ( 'listmultiselect' == fieldModel.get( 'type' ) ) {\n\t\t\t\t\t/*\n\t\t\t\t\t * We're using a multi-select, so we need to check out any selected options and add them together.\n\t\t\t\t\t */\n\t\t\t\t\t_.each( fieldModel.get( 'value' ), function( val ) {\n\t\t\t\t\t\tvar tmp_opt = _.find( options, function( opt ) { return opt.value == val } );\n\t\t\t\t\t\tcalc_value += Number( tmp_opt.calc );\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\t/*\n\t\t\t\t\t * We are using a single select, so our selected option is in the 'value' attribute.\n\t\t\t\t\t */\n\t\t\t\t\tvar selected = _.find( options, function( opt ) { return fieldModel.get( 'value' ) == opt.value } );\n\t\t\t\t\t/*\n\t\t\t\t\t * We don't have a selected value, so use our first option.\n\t\t\t\t\t */\n\t\t\t\t\tif ( 'undefined' == typeof selected ) {\n\t\t\t\t\t\tselected = fieldModel.get( 'options' )[0];\n\t\t\t\t\t}\t\t\n\t\t\t\t\tcalc_value = selected.calc;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn calc_value;\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/coreSubmitResponse',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.actionSubmit );\n\t\t},\n\n\t\tactionSubmit: function( response ) {\n\t\t\tvar formModel = nfRadio.channel( 'app' ).request( 'get:form', response.data.form_id );\n\t\t\t/*\n\t\t\t * If we have errors, don't hide or clear.\n\t\t\t */\n\t\t\tif ( 0 != _.size( response.errors ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( 1 == response.data.settings.clear_complete ) {\n\t\t\t\t// nfRadio.channel( 'form-' + response.data.form_id ).trigger( 'reset' );\n\t\t\t\tformModel.get( 'fields' ).reset( formModel.get( 'loadedFields' ) );\n if ( 1 != response.data.settings.hide_complete ) {\n nfRadio.channel( 'captcha' ).trigger( 'reset' );\n }\n\t\t\t}\n\n\t\t\tif ( 1 == response.data.settings.hide_complete ) {\n\t\t\t\t/**\n\t\t\t\t * TODO: This needs to be re-worked for backbone. It's not dynamic enough.\n\t\t\t\t */\n\t\t\t\tformModel.trigger( 'hide' );\n\t\t\t\t// jQuery( '.nf-fields' ).hide();\n\t\t\t\t// jQuery( '.nf-form-title' ).hide();\n\t\t\t}\n\t\t}\n\n\t});\n\n\treturn controller;\n} );\n","define('controllers/fieldProduct',[], function() {\n var controller = Marionette.Object.extend( {\n initialize: function() {\n this.listenTo( nfRadio.channel( 'product' ), 'init:model', this.register );\n nfRadio.channel( 'product' ).reply( 'get:calcValue', this.getCalcValue, this );\n },\n\n register: function( model ) {\n model.set( 'renderProductQuantity', this.renderProductQuantity );\n model.set( 'renderProduct', this.renderProduct );\n model.set( 'renderOptions', this.renderOptions );\n },\n\n renderProduct: function(){\n switch( this.product_type ) {\n case 'user':\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-textbox' );\n return template( this );\n break;\n case 'hidden':\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-field-hidden' );\n return template( this );\n break;\n\n case 'dropdown':\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-product-dropdown' );\n return template( this );\n break;\n default:\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-product-single' );\n return template( this );\n }\n },\n\n renderProductQuantity: function(){\n if ( 1 == this.product_use_quantity ) {\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-product-quantity' );\n return template( this );\n }\n },\n\n renderOptions: function() {\n var that = this;\n var html = '';\n _.each( this.options, function( option ) {\n if ( 1 == option.selected ) {\n var selected = true;\n } else {\n var selected = false;\n }\n\n option.selected = selected;\n option.fieldID = that.id;\n option.classes = that.classes;\n option.currentValue = that.value;\n\n var template = nfRadio.channel( 'app' ).request( 'get:template', '#tmpl-nf-product-' + that.product_type + '-option' );\n html += template( option );\n } );\n\n return html;\n },\n\n getCalcValue: function( fieldModel ) {\n\n var product_price = fieldModel.get( 'product_price' );\n var product_quantity = fieldModel.get( 'value' );\n\n return product_price * product_quantity;\n }\n });\n\n return controller;\n} );\n\n","define('controllers/fieldTotal',[], function() {\n var controller = Marionette.Object.extend( {\n\n totalModel: {},\n\n productTotals: {},\n\n initialize: function() {\n this.listenTo( nfRadio.channel( 'total' ), 'init:model', this.register );\n this.listenTo( nfRadio.channel( 'shipping' ), 'init:model', this.registerShipping );\n },\n\n register: function( totalModel ){\n this.totalModel = totalModel;\n\n var formID = totalModel.get( 'formID' );\n this.listenTo( nfRadio.channel( 'form-' + formID ), 'loaded', this.onFormLoaded );\n\n this.listenTo( nfRadio.channel( 'product' ), 'change:modelValue', this.onChangeProduct );\n this.listenTo( nfRadio.channel( 'quantity' ), 'change:modelValue', this.onChangeQuantity );\n },\n\n registerShipping: function( shippingModel ){\n this.shippingCost = shippingModel.get( 'shipping_cost' );\n },\n\n onFormLoaded: function( formModel ){\n\n var fieldModels = formModel.get( 'fields' ).models;\n\n var productFields = {};\n var quantityFields = {};\n\n for( var model in fieldModels ){\n\n var field = fieldModels[ model ];\n var fieldID = field.get( 'id' );\n\n // TODO: Maybe use switch\n if( 'product' == field.get( 'type' ) ){\n productFields[ fieldID ] = field;\n } else if( 'quantity' == field.get( 'type' ) ){\n var productID = field.get( 'product_assignment' );\n quantityFields[ productID ] = field;\n }\n }\n\n for( var productID in productFields ){\n\n var product = productFields[ productID ];\n\n var productPrice = Number( product.get( 'product_price' ) );\n\n if( quantityFields[ productID ] ){\n\n productPrice *= quantityFields[ productID ].get( 'value' );\n\n } else if( 1 == product.get( 'product_use_quantity' ) ){\n\n productPrice *= product.get( 'value' );\n\n }\n\n this.productTotals[ productID ] = productPrice;\n }\n\n this.updateTotal();\n },\n\n onChangeProduct: function( model ){\n var productID = model.get( 'id' );\n var productPrice = Number( model.get( 'product_price' ) );\n var productQuantity = Number( model.get( 'value' ) );\n var newTotal = productQuantity * productPrice;\n this.productTotals[ productID ] = newTotal;\n\n this.updateTotal();\n },\n\n onChangeQuantity: function( model ){\n var productID = model.get( 'product_assignment' );\n var productField = nfRadio.channel( 'fields' ).request( 'get:field', productID );\n var productPrice = Number( productField.get( 'product_price' ) );\n\n var quantity = Number( model.get( 'value' ) );\n\n var newTotal = quantity * productPrice;\n\n this.productTotals[ productID ] = newTotal;\n\n this.updateTotal();\n },\n\n updateTotal: function(){\n\n var newTotal = 0;\n\n for( var product in this.productTotals ){\n newTotal += Number( this.productTotals[ product ] );\n }\n\n if( newTotal && this.shippingCost ) {\n // Only add shipping if there is a cost.\n newTotal += Number(this.shippingCost);\n }\n\n this.totalModel.set( 'value', newTotal.toFixed( 2 ) );\n this.totalModel.trigger( 'reRender' );\n }\n });\n\n return controller;\n});\n","define('controllers/fieldQuantity',[], function() {\n var controller = Marionette.Object.extend( {\n\n initialize: function() {\n this.listenTo( nfRadio.channel( 'quantity' ), 'init:model', this.registerQuantity );\n },\n\n registerQuantity: function( model ){\n var productID = model.get( 'product_assignment' );\n var product = nfRadio.channel( 'fields' ).request( 'get:field', productID );\n\n if( product ) {\n product.set('product_use_quantity', 0);\n }\n },\n\n });\n\n return controller;\n});\n","/**\n * Model that represents a calculation.\n *\n * On init, we trigger a radio message so that controllers can do things when a calc model inits.\n */\ndefine( 'models/calcModel',[], function() {\n\tvar model = Backbone.Model.extend( {\n\t\tinitialize: function() {\n\t\t\t// Set our form id\n\t\t\tthis.set( 'formID', this.collection.options.formModel.get( 'id' ) );\n\t\t\t// Set our initial fields object to empty. This will hold our key/value pairs.\n\t\t\tthis.set( 'fields', {} );\n\t\t\t// Trigger a radio message to let controllers know we've inited this model.\n\t\t\tnfRadio.channel( 'calc' ).trigger( 'init:model', this );\n\t\t\t// When we change the value of this calculation, send out a radio message\n\t\t\tthis.on( 'change:value', this.changeValue, this );\n\t\t},\n\n\t\t/**\n\t\t * Trigger a radio message when a field present in our calculation changes\n\t\t *\n\t\t * The listener that triggers/calls this function is in controllers/calculations\n\t\t * \n\t\t * @since 3.0\n\t\t * @return void\n\t\t */\n\t\tchangeField: function( fieldModel ) {\n\t\t\tnfRadio.channel( 'calc' ).trigger( 'change:field', this, fieldModel );\n\t\t},\n\n\t\tchangeCalc: function( targetCalcModel ) {\n\t\t\tnfRadio.channel( 'calc' ).trigger( 'change:calc', this, targetCalcModel );\n\t\t},\n\n\t\tchangeValue: function() {\n\t\t\tnfRadio.channel( 'calc' ).trigger( 'change:value', this );\n\t\t}\n\t} );\n\n\treturn model;\n} );\n\n","define( 'models/calcCollection',['models/calcModel'], function( CalcModel ) {\n\tvar collection = Backbone.Collection.extend( {\n\t\tmodel: CalcModel,\n\t\tcomparator: 'order',\n\n\t\tinitialize: function( models, options ) {\n\t\t\tthis.options = options;\n _.each( models, function( model ) {\n \tif( 'undefined' == typeof model.dec ) return;\n if ( '' === model.dec.toString().trim() ) model.dec = 2;\n model.dec = parseInt( model.dec );\n } );\n\t\t\t/*\n\t\t\t * Respond to requests for our calc model\n\t\t\t */\n\t\t\tnfRadio.channel( 'form-' + options.formModel.get( 'id' ) ).reply( 'get:calc', this.getCalc, this );\n\t\t},\n\n\t\tgetCalc: function( key ) {\n\t\t\treturn this.findWhere( { name: key } );\n\t\t}\n\t} );\n\treturn collection;\n} );\n","/**\n * Controller responsible for keeping up with calculations.\n */\ndefine('controllers/calculations',['models/calcCollection'], function( CalcCollection ) {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.calcs = {};\n\t\t\tthis.displayFields = {};\n\t\t\t// When our form initialises, check to see if there are any calculations that need to be tracked.\n\t\t\tthis.listenTo( nfRadio.channel( 'form' ), 'loaded', this.registerCalcs );\n \n // When our collection gets reset, reset calculation tracking as well.\n this.listenTo( nfRadio.channel( 'fields' ), 'reset:collection', this.resetCalcs );\n\n\t\t\t// When a calc model is initialised, run a setup function.\n\t\t\t// this.listenTo( nfRadio.channel( 'calc' ), 'init:model', this.setupCalc );\n\n\t\t\t// When a field referenced by a calc model changes, update our calc.\n\t\t\tthis.listenTo( nfRadio.channel( 'calc' ), 'change:field', this.changeField );\n\n\t\t\t// When a calculation referenced by a calc model changes, update our calc.\n\t\t\tthis.listenTo( nfRadio.channel( 'calc' ), 'change:calc', this.changeCalc );\n\n\t\t\t/*\n\t\t\t * Listen to our field model init for fields that want to display calc values.\n\t\t\t * If that field has a calc merge tag, replace it with the default calc value.\n\t\t\t */\n\t\t\tvar that = this;\n\t\t\t_.each( nfFrontEnd.use_merge_tags.calculations, function( fieldType ) {\n\t\t\t\tthat.listenTo( nfRadio.channel( 'fields-' + fieldType ), 'init:model', that.initDisplayField );\n\t\t\t} );\n\t\t\t\n\t\t\t// When we change our calc value, update any display fields.\n\t\t\tthis.listenTo( nfRadio.channel( 'calc' ), 'change:value', this.updateDisplayFields );\n\n\t\t\t// Set an init variable so that we only call reRender on the display field on change, not on init.\n\t\t\tthis.init = {};\n\t\t},\n \n /**\n * Passthrough function to reset tracking of calculations when the fieldCollection is reset.\n * \n * @since 3.2\n * @param backbone.collection fieldCollection\n * @return void\n */\n resetCalcs: function( fieldCollection ) {\n if( 'undefined' != typeof( fieldCollection.options.formModel ) ) {\n this.registerCalcs( fieldCollection.options.formModel ); \n }\n },\n\n\t\t/**\n\t\t * When our form loads, create a collection out of any calculations.\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model formModel\n\t\t * @return void\n\t\t */\n\t\tregisterCalcs: function( formModel ) {\n\t\t\tvar calcCollection = new CalcCollection( formModel.get( 'settings' ).calculations, { formModel: formModel } );\n\t\t\tthis.calcs[ formModel.get( 'id' ) ] = calcCollection;\n\t\t\tvar that = this;\n\n\t\t\t_.each( calcCollection.models, function( calcModel ) {\n\t\t\t\t/*\n\t\t\t\t * We set a property on our init variable for the calc model we're looping over.\n\t\t\t\t * This property is set to true so that when we make changes to the calc model on the next line\n\t\t\t\t * the field view doesn't try to redraw itself.\n\t\t\t\t * If we don't do this, the 'reRender' attribute of the model will be set before the view is initialized,\n\t\t\t\t * which means that setting 'reRender' to true will never re-render the view.\n\t\t\t\t */\n\t\t\t\tthat.init[ calcModel.get( 'name' ) ] = true;\n\t\t\t\t// Setup our calculation models with initial values and register listeners for calc-related fields.\n\t\t\t\tthat.setupCalc( calcModel );\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * When a calculation model is instantiated from the registerCalcs function:\n\t\t *\n\t\t * Use a regex to get an array of the field keys\n\t\t * Setup an initial key/values array\n\t\t * Check for any references to other calculations\n\t\t * Set the initial value of our calculation\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model calcModel\n\t\t * @return void\n\t\t */\n\t\tsetupCalc: function( calcModel ) {\n\t\t\t// Setup our that var so we can access 'this' context in our loop.\n\t\t\tvar that = this;\n\t\t\t// Get our equation\n\t\t\tvar eq = calcModel.get( 'eq' );\n\t\t\t// We want to keep our original eq intact, so we use a different var for string replacment.\n\t\t\tvar eqValues = eq;\n // Store the name for debugging later.\n var calcName = calcModel.get( 'name' );\n\n\t\t\t/* TODO:\n\t\t\t * It might be possible to refactor these two if statements.\n\t\t\t * The difficulty is that each has a different method of retreiving the specific data model.\n\t\t\t */\n\t\t\t// Check to see if we have any field merge tags in our equation.\n\t\t\tvar fields = eq.match( new RegExp( /{field:(.*?)}/g ) );\n\t\t\tif ( fields ) {\n\t\t\t\t/*\n\t\t\t\t * fields is now an array of field keys that looks like:\n\t\t\t\t * ['{field:key'], ['{field:key'], etc.\n\t\t\t\t *\n\t\t\t\t * We need to run a function with each of our field keys to setup our field key array and hook up our field change listner.\n\t\t\t\t */\n\t\t\t\t\n\t\t\t\tfields = fields.map( function( field ) {\n\t\t\t\t\t// field will be {field:key}\n\t\t\t\t\tvar key = field.replace( ':calc}', '' ).replace( '}', '' ).replace( '{field:', '' );\n\n\t\t\t\t\t// Get our field model\n\t\t\t\t\tfieldModel = nfRadio.channel( 'form-' + calcModel.get( 'formID' ) ).request( 'get:fieldByKey', key );\n\n if( 'undefined' == typeof fieldModel ) return;\n\n fieldModel.set( 'clean', false );\n\n\t\t\t\t\t// Register a listener in our field model for value changes.\n\t\t\t\t\tfieldModel.on( 'change:value', calcModel.changeField, calcModel );\n\t\t\t\t\t// Get our calc value from our field model.\n\t\t\t\t\tvar calcValue = that.getCalcValue( fieldModel );\n\t\t\t\t\t// Add this field to our internal key/value object.\n\t\t\t\t\tthat.updateCalcFields( calcModel, key, calcValue );\n\t\t\t\t\t// Update the string tracking our merged eq with the calc value.\n\t\t\t\t\teqValues = that.replaceKey( 'field', key, calcValue, eqValues );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check to see if we have any calc merge tags in our equation.\n\t\t\tvar calcs = eq.match( new RegExp( /{calc:(.*?)}/g ) );\n\t\t\tif ( calcs ) {\n\t\t\t\t/*\n\t\t\t\t * calcs is now an array of calc keys that looks like:\n\t\t\t\t * ['{calc:key'], ['{calc:key'], etc.\n\t\t\t\t *\n\t\t\t\t * We need to run a function with each of our calc keys to setup our calc key array and hook up our calc change listner.\n\t\t\t\t */\n\t\t\t\t\n\t\t\t\tcalcs = calcs.map( function( calc ) {\n\t\t\t\t\t// calc will be {calc:name}\n\t\t\t\t\tvar name = calc.replace( '}', '' ).replace( '{calc:', '' );\n\t\t\t\t\t// Get our calc model\n\t\t\t\t\tvar targetCalcModel = calcModel.collection.findWhere( { name: name } );\n\n\t\t\t\t\tif( 'undefined' == typeof targetCalcModel ) return;\n\n\t\t\t\t\t// Listen for changes on our calcluation, since we need to update our calc when it changes.\n\t\t\t\t\ttargetCalcModel.on( 'change:value', calcModel.changeCalc, calcModel );\n\t\t\t\t\t// // Get our calc value from our calc model.\n\t\t\t\t\tvar calcValue = targetCalcModel.get( 'value' );\n\t\t\t\t\t// Update the string tracking our merged eq with the calc value.\n\t\t\t\t\teqValues = that.replaceKey( 'calc', name, calcValue, eqValues );\n\t\t\t\t} );\n\n\t\t\t}\n\n // Scrub unmerged tags (ie deleted/nox-existent fields/calcs, etc).\n eqValues = eqValues.replace( /{([a-zA-Z0-9]|:|_|-)*}/g, 0 );\n // Scrub line breaks.\n eqValues = eqValues.replace( /\\r?\\n|\\r/g, '' );\n\t\t\t// Evaluate the equation and update the value of this model.\n\t\t\ttry {\n\t\t\t\tthis.debug('Calculation Decoder ' + eqValues + ' -> ' + this.localeDecodeEquation(eqValues) + ' (Setup)');\n\t\t\t\tconst mexp = new Mexp;\n\t\t\t\tcalcModel.set( 'value', Number( mexp.eval( this.localeDecodeEquation(eqValues) ) ).toFixed( calcModel.get( 'dec' ) ) );\n\t\t\t} catch( e ) {\n //console.log( calcName );\n\t\t\t\tconsole.log( e );\n\t\t\t}\n \n // If for whatever reason, we got NaN, reset that to 0.\n if( calcModel.get( 'value' ) === 'NaN' ) calcModel.set( 'value', '0' );\n\n\t\t\t// Debugging console statement.\n\t\t\t// console.log( eqValues + ' = ' + calcModel.get( 'value' ) );\n\t\t},\n\n\t\t/**\n\t\t * Update an item in our key/value pair that represents our fields and calc values.\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model \tcalcModel\n\t\t * @param string \t\t\tkey\n\t\t * @param string \t\t\tcalcValue\n\t\t * @return void\n\t\t */\n\t\tupdateCalcFields: function( calcModel, key, calcValue ) {\n\t\t\tvar fields = calcModel.get( 'fields' );\n\t\t\tfields[ key ] = calcValue;\n\t\t\tcalcModel.set( 'fields', fields );\n\t\t},\n\n\t\t/**\n\t\t * Get a calc value from a field model.\n\t\t *\n\t\t * Sends a request to see if there's a special calc value\n\t\t * Uses the value of the field if there is not.\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model fieldModel\n\t\t * @return value\n\t\t */\n\t\tgetCalcValue: function( fieldModel ) {\n\t\t\t/*\n\t\t\t * Send out a request on the field type and parent type channel asking if they need to modify the calc value.\n\t\t\t * This is helpful for fields like lists that can have a different calc_value than selected value.\n\t\t\t */\n\t\t\tvar value = nfRadio.channel( fieldModel.get( 'type' ) ).request( 'get:calcValue', fieldModel );\n\t\t\t\n\t\t\t// Preset with our field value.\n\t\t\tvar calcValue = fieldModel.get( 'value' );\n\t\t\tif( 'undefined' !== typeof value ) {\n\t\t\t\tif( value || 0 === value ) {\n\t\t\t\t\t// If we got a valid number, use that instead.\n\t\t\t\t\tcalcValue = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar localeConverter = new nfLocaleConverter(nfi18n.siteLocale, nfi18n.thousands_sep, nfi18n.decimal_point);\n\t\t\tvar machineNumber = localeConverter.numberDecoder(calcValue);\n\t\t\tvar formattedNumber = localeConverter.numberEncoder(calcValue);\n\n\t\t\tif ( 'undefined' !== typeof machineNumber && jQuery.isNumeric( machineNumber ) ) {\n\t\t\t\tvalue = formattedNumber;\n\t\t\t} else {\n\t\t\t\tvalue = 0;\n\t\t\t}\n\t\t\t// }\n\n\t\t\tif ( ! fieldModel.get( 'visible' ) ) {\n\t\t\t\tvalue = 0;\n\t\t\t}\n\t\t\n\t\t\treturn value;\n\t\t},\n\n\t\t/**\n\t\t * Replace instances of key with calcValue. This is used to replace one key at a time.\n\t\t *\n\t\t * If no eq is passed, use calcModel eq.\n\t\t *\n\t\t * Returns a string with instances of key replaced with calcValue.\n\t\t * \n\t\t * @since version\n\t\t * @param string \tkey \n\t\t * @param string \tcalcValue \n\t\t * @param string \teq \n\t\t * @return string \teq \n\t\t */\n\t\treplaceKey: function( type, key, calcValue, eq ) {\n\t\t\teq = eq || calcModel.get( 'eq' );\n\n\t\t\ttag = '{' + type + ':' + key + '}';\n\t\t\tvar reTag = new RegExp( tag, 'g' );\n\n\t\t\tcalcTag = '{' + type + ':' + key + ':calc}';\n\t\t\tvar reCalcTag = new RegExp( calcTag, 'g' );\n\n\t\t\teq = eq.replace( reTag, calcValue );\n\t\t\teq = eq.replace( reCalcTag, calcValue );\n\n\t\t\treturn eq;\n\t\t},\n\n\t\t/**\n\t\t * Takes a calcModel and returns a string eq with all keys replaced by their appropriate calcValues.\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model \tcalcModel\n\t\t * @return string\t\t\teq\n\t\t */\n\t\treplaceAllKeys: function( calcModel ) {\n\t\t\tvar eq = calcModel.get( 'eq' );\n\t\t\tvar that = this;\n\t\t\t_.each( calcModel.get( 'fields' ), function( value, key ) {\n\t\t\t\teq = that.replaceKey( 'field', key, value, eq );\n\t\t\t} );\n\n\t\t\t// If we have any calc merge tags, replace those as well.\n\t\t\tvar calcs = eq.match( new RegExp( /{calc:(.*?)}/g ) );\n\t\t\tif ( calcs ) {\n\t\t\t\t_.each( calcs, function( calc ) {\n\t\t\t\t\t// calc will be {calc:key}\n\t\t\t\t\tvar name = calc.replace( '}', '' ).replace( '{calc:', '' );\n\t\t\t\t\tvar targetCalcModel = calcModel.collection.findWhere( { name: name } );\n if( 'undefined' == typeof targetCalcModel ) return;\n\t\t\t\t\tvar re = new RegExp( calc, 'g' );\n\t\t\t\t\teq = eq.replace( re, targetCalcModel.get( 'value' ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn eq;\n\t\t},\n\n\t\t/**\n\t\t * Function that's called when a field within the calculation changes.\n\t\t * \n\t\t * @since 3.0\n\t\t * @param backbone.model calcModel\n\t\t * @param backbone.model fieldModel\n\t\t * @return void\n\t\t */\n\t\tchangeField: function( calcModel, fieldModel ) {\n\t\t\n\t\t\tvar key = fieldModel.get( 'key' );\n\t\t\tvar value = this.getCalcValue( fieldModel );\n\t\t\t\n\t\t\tthis.updateCalcFields( calcModel, key, value );\n\t\t\tvar eqValues = this.replaceAllKeys( calcModel );\n\n // Scrub unmerged tags (ie deleted/nox-existent fields/calcs, etc).\n eqValues = eqValues.replace( /{([a-zA-Z0-9]|:|_|-)*}/g, '0' );\n eqValues = eqValues.replace( /\\r?\\n|\\r/g, '' );\n try {\n\t\t\t\tthis.debug('Calculation Decoder ' + eqValues + ' -> ' + this.localeDecodeEquation(eqValues) + ' (Change Field)');\n\t\t\t\tconst mexp = new Mexp;\n\t\t\t\tcalcModel.set( 'value', Number( mexp.eval( this.localeDecodeEquation(eqValues) ) ).toFixed( calcModel.get( 'dec' ) ) );\n } catch( e ) {\n if(this.debug())console.log( e );\n }\n if( calcModel.get( 'value' ) === 'NaN' ) calcModel.set( 'value', '0' );\n\n\t\t\t// Debugging console statement.\n\t\t\t// console.log( eqValues + ' = ' + calcModel.get( 'value' ) );\t\t\n\t\t},\n\n\t\tinitDisplayField: function( fieldModel ) {\n\n\t\t\tif( ! fieldModel.get( 'default' ) || 'string' != typeof fieldModel.get( 'default' ) ) return;\n\n\t\t\tvar calcs = fieldModel.get( 'default' ).match( new RegExp( /{calc:(.*?)}/g ) );\n\t\t\tif ( calcs ) {\n\t\t\t\t_.each( calcs, function( calcName ) {\n\t\t\t\t\tcalcName = calcName.replace( '{calc:', '' ).replace( '}', '' ).replace( ':2', '' );\n\t\t\t\t\tthis.displayFields[ calcName ] = this.displayFields[ calcName ] || [];\n\t\t\t\t\tthis.displayFields[ calcName ].push( fieldModel );\n\t\t\t\t}, this );\n\t\t\t}\n\t\t},\n\n\t\tupdateDisplayFields: function( calcModel ) {\n\t\t\tvar that = this;\n\t\t\tif ( 'undefined' != typeof this.displayFields[ calcModel.get( 'name' ) ] ) {\n\t\t\t\t_.each( this.displayFields[ calcModel.get( 'name' ) ], function( fieldModel ) {\n\n\t\t\t\t\tvar value = '';\n\n\t\t\t\t\t/**\n\t\t\t\t\t * if we have a html field, we want to use the actual\n\t\t\t\t\t * value and re-evaluate\n\t\t\t\t **/\n\t\t\t\t\tif( \"html\" === fieldModel.get( 'type' ) ) {\n\t\t\t\t\t\tvalue = fieldModel.get( 'value' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if not a html field, use default to re-evaluate\n\t\t\t\t\t\tvalue = fieldModel.get( 'default' );\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\t\t This is a fix for the issue of the merge tags being\n\t\t\t\t\t display'd\n\t\t\t\t\t */\n\n\t\t\t\t\t// Find spans with calc data-key values\n\t\t\t\t\tvar spans = value.match( new RegExp( //g ));\n\t\t\t\t\t_.each( spans, function( spanVar ) {\n\t\t\t\t\t\t// transform the span back into a merge tag\n\t\t\t\t\t\tvar tmpCalcTag = \"{\" + spanVar.replace(\"(.*?)<\\/span>/, \"\" ) + \"}\";\n\n\t\t\t\t\t\tvalue = value.replace( spanVar, tmpCalcTag );\n\t\t\t\t\t} );\n\t\t\t\t\tvar calcs = value.match( new RegExp( /{calc:(.*?)}/g ) );\n\t\t\t\t\t_.each( calcs, function( calc ) {\n//\t\t\t\t\t\tvar rounding = false;\n\t\t\t\t\t\t// calc will be {calc:key} or {calc:key:2}\n\t\t\t\t\t\tvar name = calc.replace( '}', '' ).replace( '{calc:', '' ).replace( ':2', '' );\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * TODO: Bandaid for rounding calculations to two decimal places when displaying the merge tag.\n\t\t\t\t\t\t * Checks to see if we have a :2. If we do, remove it and set our rounding variable to true.\n\t\t\t\t\t\t */\n//\t\t\t\t\t\tif ( -1 != name.indexOf( ':2' ) ) {\n//\t\t\t\t\t\t\trounding = true;\n//\t\t\t\t\t\t\tname = name.replace( ':2', '' );\n//\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar calcModel = that.calcs[ fieldModel.get( 'formID' ) ].findWhere( { name: name } );\n\t\t\t\t\t\tvar re = new RegExp( calc, 'g' );\n\t\t\t\t\t\tvar calcValue = calcModel.get( 'value' ) ;\n//\t\t\t\t\t\tif ( rounding ) {\n//\t\t\t\t\t\t\tcalcValue = calcValue.toFixed( 2 );\n//\t\t\t\t\t\t\trounding = false;\n//\t\t\t\t\t\t}\n\t\t\t\t\t\t\n if( 'undefined' != typeof( calcValue ) ) {\n calcValue = that.applyLocaleFormatting( calcValue, calcModel );\n\t\t\t\t\t\t}\n /*\n * We replace the merge tag with the value\n\t\t\t\t\t\t * surrounded by a span so that we can still find it\n\t\t\t\t\t\t * and not affect itself or other field merge tags\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * Unless this isn't a html field, then we just set\n\t\t\t\t\t\t * value to calcValue\n\t\t\t\t\t\t*/\n if( \"html\" === fieldModel.get( 'type' ) ) {\n\t value = value.replace(re, \"\"\n\t\t + calcValue + \"\");\n } else {\n \tvalue = calcValue;\n }\n\t\t\t\t\t} );\n\t\t\t\t\t\n\t\t\t\t\tfieldModel.set( 'value', value );\n\t\t\t\t\tif ( ! that.init[ calcModel.get( 'name' ) ] ) {\n\t\t\t\t\t\t// fieldModel.set( 'reRender', true );\n\t\t\t\t\t\tfieldModel.trigger( 'reRender' );\n\t\t\t\t\t}\n\t\t\t\t\tthat.init[ calcModel.get( 'name' ) ] = false;\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tgetCalc: function( name, formID ) {\n\t\t\treturn this.calcs[ formID ].findWhere( { name: name } );\n\t\t},\n\n\t\tchangeCalc: function( calcModel, targetCalcModel ) {\n\t\t\tvar eqValues = this.replaceAllKeys( calcModel );\n\t\t\t\n\t\t\teqValues = eqValues.replace( '[', '' ).replace( ']', '' );\n eqValues = eqValues.replace( /\\r?\\n|\\r/g, '' );\n try {\n\t\t\t\tthis.debug('Calculation Decoder ' + eqValues + ' -> ' + this.localeDecodeEquation(eqValues) + ' (Change Calc)');\n\t\t\t\tconst mexp = new Mexp;\n\t\t\t\tcalcModel.set( 'value', Number( mexp.eval( this.localeDecodeEquation( eqValues ) ) ).toFixed( calcModel.get( 'dec' ) ) );\n } catch( e ) {\n console.log( e );\n }\n if( calcModel.get( 'value' ) === 'NaN' ) calcModel.set( 'value', '0' );\n\t\t},\n \n /**\n * Function to apply Locale Formatting to Calculations\n * @since Version 3.1\n * @param Str number\n * \n * @return Str\n */\n applyLocaleFormatting: function( number, calcModel ) {\n\n\t\t\tvar localeConverter = new nfLocaleConverter(nfi18n.siteLocale, nfi18n.thousands_sep, nfi18n.decimal_point);\n\n\t\t\tvar formattedNumber = localeConverter.numberEncoder(number, calcModel.get('dec'));\n \n // // Split our string on the decimal to preserve context.\n // var splitNumber = number.split('.');\n // // If we have more than one element (if we had a decimal point)...\n // if ( splitNumber.length > 1 ) {\n // // Update the thousands and remerge the array.\n // splitNumber[ 0 ] = splitNumber[ 0 ].replace( /\\B(?=(\\d{3})+(?!\\d))/g, nfi18n.thousands_sep );\n // var formattedNumber = splitNumber.join( nfi18n.decimal_point );\n // }\n // // Otherwise (we had no decimal point)...\n // else {\n // // Update the thousands.\n // var formattedNumber = number.replace( /\\B(?=(\\d{3})+(?!\\d))/g, nfi18n.thousands_sep );\n // }\n return formattedNumber;\n\t\t},\n\t\t\n\t\tlocaleDecodeEquation: function( eq ) {\n\t\t\tvar result = '';\n\t\t\tvar expression = '';\n\t\t\tvar pattern = /[0-9.,]/;\n\t\t\tvar localeConverter = new nfLocaleConverter(nfi18n.siteLocale, nfi18n.thousands_sep, nfi18n.decimal_point);\n\t\t\t// This pattern accounts for all whitespace characters (including thin space).\n\t\t\teq = eq.replace( /\\s/g, '' );\n\t\t\teq = eq.replace( / /g, '' );\n\t\t\tvar characters = eq.split('');\n\t\t\t// foreach ( characters as character ) {\n\t\t\tcharacters.forEach( function( character ) {\n\t\t\t\t// If the character is numeric or '.' or ','\n\t\t\t\tif (pattern.test(character)) {\n\t\t\t\t\texpression = expression + character;\n\t\t\t\t} else {\n\t\t\t\t\t// If we reach an operator char, append the expression to the result\n\t\t\t\t\tif ( 0 < expression.length ) {\n\t\t\t\t\t\tresult = result + localeConverter.numberDecoder( expression );\n\t\t\t\t\t\texpression = '';\n\t\t\t\t\t}\n\t\t\t\t\tresult = result + character;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// The following catches the case of the last character being a digit.\n\t\t\tif ( 0 < expression.length ) {\n\t\t\t\tresult = result + localeConverter.numberDecoder( expression );\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\tdebug: function(message) {\n\t\t\tif ( window.nfCalculationsDebug || false ) console.log(message);\n\t\t}\n\t\n\t});\n\n\treturn controller;\n} );\n\n","define('controllers/dateBackwardsCompat',[], function() {\n var controller = Marionette.Object.extend({\n\n initialize: function () {\n this.listenTo( Backbone.Radio.channel( 'pikaday-bc' ), 'init', this.dateBackwardsCompat );\t\n },\n\n dateBackwardsCompat: function( dateObject, fieldModel ) {\n \n /**\n * Start backwards compatibility for old pikaday customisation\n */\n // Legacy properties\n dateObject.pikaday = {};\n dateObject.pikaday._o = {};\n\n //Old hook for Pikaday Custom code\n nfRadio.channel( 'pikaday' ).trigger( 'init', dateObject, fieldModel );\n\n // If we've set a disableDayFn property in custom code, hook it up to Flatpickr\n if ( typeof dateObject.pikaday._o.disableDayFn !== 'undefined') {\n dateObject.set( 'disable', [ dateObject.pikaday._o.disableDayFn ] );\n }\n\n //Compatibility for i18n pikaday function\n if ( typeof dateObject.pikaday._o.i18n !== 'undefined' || typeof dateObject.pikaday._o.firstDay !== 'undefined') {\n\n let locale = dateObject.config.locale;\n\n if ( typeof dateObject.pikaday._o.firstDay !== 'undefined') {\n locale.firstDayOfWeek = dateObject.pikaday._o.firstDay;\n }\n\n if ( typeof dateObject.pikaday._o.i18n !== 'undefined') {\n if ( typeof dateObject.pikaday._o.i18n.weekdays !== 'undefined') {\n locale.weekdays.longhand = dateObject.pikaday._o.i18n.weekdays;\n }\n\n if ( typeof dateObject.pikaday._o.i18n.weekdaysShort !== 'undefined') {\n locale.weekdays.shorthand = dateObject.pikaday._o.i18n.weekdaysShort;\n }\n \n if ( typeof dateObject.pikaday._o.i18n.months !== 'undefined') {\n jQuery( '.flatpickr-monthDropdown-months > option' ).each( function() {\n this.text = dateObject.pikaday._o.i18n.months[ this.value ];\n } );\n }\n }\n\n dateObject.set( 'locale', locale );\n \n }\n\n if ( Object.keys(dateObject.pikaday._o).length > 0 ) {\n console.log(\"%cDeprecated Ninja Forms Pikaday custom code detected.\", \"color: Red; font-size: large\");\n console.log(\"You are using deprecated Ninja Forms Pikaday custom code. Support for this custom code will be removed in a future version of Ninja Forms. Please contact Ninja Forms support for more details.\");\n }\n\n }\n\n });\n\n return controller;\n});\n","define('controllers/fieldDate',[], function() {\n var controller = Marionette.Object.extend({\n\n initialize: function () {\n this.listenTo( nfRadio.channel( 'date' ), 'init:model', this.initModel );\n this.listenTo( nfRadio.channel( 'date' ), 'render:view', this.initDatepicker );\n },\n\n initModel: function(model) {\n this.registerFunctions(model);\n },\n\n registerFunctions: function( model ) {\n model.set( 'renderHourOptions', this.renderHourOptions );\n model.set( 'renderMinuteOptions', this.renderMinuteOptions );\n model.set( 'maybeRenderAMPM', this.maybeRenderAMPM );\n model.set( 'customClasses', this.customClasses );\n // Overwrite the default getValue() method.\n model.getValue = this.getValue;\n },\n\n renderHourOptions: function() {\n return this.hours_options;\n },\n\n renderMinuteOptions: function() {\n return this.minutes_options;\n },\n\n maybeRenderAMPM: function() {\n if ( 'undefined' == typeof this.hours_24 || 1 == this.hours_24 ) {\n return;\n }\n var requiredAttr = (this.required == 1) ? 'aria-required=\"true\" required' : '';\n return `
`;\n },\n\n initDatepicker: function ( view ) {\n view.model.set( 'el', view.el );\n var el = jQuery( view.el ).find( '.nf-element' )[0];\n view.listenTo( nfRadio.channel( 'form-' + view.model.get( 'formID' ) ), 'before:submit', this.beforeSubmit, view );\n\n // If we are using a time_only date_mode, then hide the date input.\n if ( 'undefined' != typeof view.model.get( 'date_mode' ) && 'time_only' == view.model.get( 'date_mode' ) ) {\n jQuery( el ).hide();\n return false;\n }\n\n // Make sure date format is correctly converted.\n var dateFormat = this.convertDateFormat( view.model.get( 'date_format' ) );\n // Make sure this is a deep conversion of the original model.\n view.model.set('date_format', dateFormat);\n\n var dateSettings = {\n onReady: ( selectedDates, datestr, dateObject ) => {\n dateObject.altInput.setAttribute( 'aria-labelledby', jQuery( el ).attr( \"aria-labelledby\" ) );\n dateObject.altInput.setAttribute( 'aria-invalid', false );\n },\n dateFormat: dateFormat,\n altFormat: dateFormat,\n altInput: true,\n ariaDateFormat: dateFormat,\n mode: \"single\",\n allowInput: true,\n disableMobile: \"true\",\n minDate: this.getMinDate(view.model),\n maxDate: this.getMaxDate(view.model),\n };\n \n const nfCustomLocale = this.checkCustomLocale();\n if(nfCustomLocale){\n dateSettings.locale = nfCustomLocale;\n }\n\n // Filter our datepicker settings object.\n let filteredDatePickerSettings = nfRadio.channel( 'flatpickr' ).request( 'filter:settings', dateSettings, view );\n if ( 'undefined' != typeof filteredDatePickerSettings ) {\n dateSettings = filteredDatePickerSettings;\n }\n\n var dateObject = flatpickr( el, dateSettings );\n \n if ( 1 == view.model.get( 'date_default' ) ) {\n dateObject.defaultDate = new Date();\n dateObject.setDate(dateObject.defaultDate);\n view.model.set( 'value', dateObject.defaultDate );\n }\n\n //Trigger Pikaday backwards compatibility\n nfRadio.channel( 'pikaday-bc' ).trigger( 'init', dateObject, view.model, view );\n\n nfRadio.channel( 'flatpickr' ).trigger( 'init', dateObject, view.model, view );\n },\n\n beforeSubmit: function( formModel ) { \n //Get value from input if the default date wasn't edited in the field and the value is still a global unformatted date object\n if( _.isObject( this.model.get( 'value' ) ) ){\n const inputID = this.el.id.replace(\"-wrap\", '');\n const date_value = this.el.querySelector(\"#\"+inputID).value;\n this.model.set( 'value', date_value );\n }\n\n if ( 'date_only' == this.model.get( 'date_mode' ) ) {\n return false;\n }\n let hour = jQuery( this.el ).find( '.hour' ).val();\n let minute = jQuery( this.el ).find( '.minute' ).val();\n let ampm = jQuery( this.el ).find( '.ampm' ).val();\n let current_value = this.model.get( 'value' );\n let date = false;\n\n if ( _.isObject( current_value ) ) {\n date = current_value.date;\n } else {\n date = current_value;\n }\n\n let date_value = {\n date: date,\n hour: hour,\n minute: minute,\n ampm: ampm,\n };\n\n this.model.set( 'value', date_value );\n },\n\n getMinDate: function( fieldModel ) {\n let minDate = null;\n if(typeof fieldModel.get( 'year_range_start' ) !== \"undefined\"){\n const yearRangeStart = fieldModel.get( 'year_range_start' );\n if( yearRangeStart ) {\n minDate = flatpickr.formatDate(new Date(String( yearRangeStart )), fieldModel.get('date_format'));\n }\n } \n return minDate;\n },\n\n getMaxDate: function( fieldModel ) {\n let maxDate = null;\n if(typeof fieldModel.get( 'year_range_end' ) !== \"undefined\"){\n const yearRangeEnd = fieldModel.get( 'year_range_end' );\n if( yearRangeEnd ) {\n maxDate = flatpickr.formatDate(new Date(String( yearRangeEnd )), fieldModel.get('date_format'));\n }\n }\n return maxDate;\n },\n\n convertDateFormat: function( dateFormat ) {\n //If dateFormat is empty or null, try to get a value from the Field's model\n if(!dateFormat && this.model){\n dateFormat = this.model.get('date_format');\n } \n //If it is still empty or null set it to be \"default\"\n if (!dateFormat){\n dateFormat = \"default\";\n }\n //Convert PHP format in setting to flatPickr expected setting if needed\n const lookup = {\n 'MM/DD/YYYY': 'm/d/Y',\n 'MM-DD-YYYY': 'm-d-Y',\n 'MM.DD.YYYY': 'm.d.Y',\n 'DD/MM/YYYY': 'd/m/Y',\n 'DD-MM-YYYY': 'd-m-Y',\n 'DD.MM.YYYY': 'd.m.Y',\n 'YYYY-MM-DD': 'Y-m-d',\n 'YYYY/MM/DD': 'Y/m/d',\n 'YYYY.MM.DD': 'Y.m.d',\n 'dddd, MMMM D YYYY': 'l, F d Y',\n 'default': nfi18n.dateFormat ? nfi18n.dateFormat : 'default'\n };\n return Object.keys(lookup).includes(dateFormat) ? lookup[dateFormat] : dateFormat;\n },\n\n customClasses: function( classes ) {\n if ( 'date_and_time' == this.date_mode ) {\n classes += ' date-and-time';\n }\n return classes;\n },\n //retrieve localized values and assign them to flatpickr locale format\n checkCustomLocale: function() {\n let customLocale = {};\n if(nfi18n){\n if(nfi18n.months || nfi18n.monthsShort){\n customLocale.months = {};\n if(nfi18n.months){\n customLocale.months.longhand = nfi18n.months;\n }\n if(nfi18n.monthsShort){\n customLocale.months.shorthand = nfi18n.monthsShort;\n }\n }\n if(nfi18n.weekdays || nfi18n.weekdaysShort){\n customLocale.weekdays = {};\n if(nfi18n.weekdays){\n customLocale.weekdays.longhand = nfi18n.weekdays;\n }\n if(nfi18n.weekdaysShort){\n customLocale.weekdays.shorthand = nfi18n.weekdaysShort;\n }\n }\n if(nfi18n.startOfWeek){\n customLocale.firstDayOfWeek = nfi18n.startOfWeek;\n }\n }\n return _.isEmpty(customLocale) ? false : customLocale;\n },\n\n // This function is called whenever we want to know the value of the date field.\n // Since it could be a date/time field, we can't return just the value.\n getValue: function() {\n\n if ( 'date_only' == this.get( 'date_mode' ) ) {\n return this.get( 'value' );\n }\n let el = this.get( 'el' );\n let hour = jQuery( el ).find( '.hour' ).val();\n let minute = jQuery( el ).find( '.minute' ).val();\n let ampm = jQuery( el ).find( '.ampm' ).val();\n let current_value = this.get( 'value' );\n let date = false;\n\n if ( _.isObject( current_value ) ) {\n date = current_value.date;\n } else {\n date = current_value;\n }\n\n let value = '';\n\n if ( 'undefined' != typeof date ) {\n value += date;\n }\n\n if ( 'undefined' != typeof hour && 'undefined' != typeof minute ) {\n value += ' ' + hour + ':' + minute;\n }\n\n if ( 'undefined' != typeof ampm ) {\n value += ' ' + ampm;\n }\n\n return value;\n\n // let date_value = {\n // date: date,\n // hour: hour,\n // minute: minute,\n // ampm: ampm,\n // };\n\n // this.model.set( 'value', date_value );\n }\n });\n\n return controller;\n});\n\n","define('controllers/fieldRecaptcha',[], function() {\n var controller = Marionette.Object.extend({\n\n initialize: function () {\n this.listenTo( nfRadio.channel( 'recaptcha' ), 'init:model', this.initRecaptcha );\n this.listenTo( nfRadio.channel( 'forms' ), 'submit:response', this.resetRecaptcha );\n },\n\n \tinitRecaptcha: function ( model ) {\n \t\tnfRadio.channel( 'recaptcha' ).reply( 'update:response', this.updateResponse, this, model.id );\n },\n\n updateResponse: function( response, fieldID ) {\n \tvar model = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n\t\t\tmodel.set( 'value', response );\n nfRadio.channel( 'fields' ).request( 'remove:error', model.get( 'id' ), 'required-error' );\n },\n\n resetRecaptcha: function() {\n\t\t\tvar recaptchaID = 0;\n\t\t\tjQuery( '.g-recaptcha' ).each( function() {\n\t\t\t\ttry {\n\t\t\t\t\tgrecaptcha.reset( recaptchaID );\n\t\t\t\t} catch( e ){\n\t\t\t\t\tconsole.log( 'Notice: Error trying to reset grecaptcha.' );\n\t\t\t\t}\n\t\t\t\trecaptchaID++;\n\t\t\t} );\n }\n });\n\n return controller;\n} );\n","define('controllers/fieldRecaptchaV3',[], function() {\n var controller = Marionette.Object.extend({\n\n initialize: function () {\n this.listenTo( nfRadio.channel( 'recaptcha_v3' ), 'init:model', this.initRecaptcha );\n },\n\n \tinitRecaptcha: function ( model ) {\t\t\t\n\t const formID = model.get( 'formID' );\n\t\t\t//Run recaptcha on init to allow cookie validation process\n\t\t\tthis.processRecaptcha(formID, model);\n\t\t\t//Rerun process every 110 seconds ( prevent Google recaptcha timeout out at 12O seconds )\n\t\t\tsetInterval(this.processRecaptcha, 110000, formID, model );\n },\n\n\t\tprocessRecaptcha: function(formID, model) {\n\t\t\ttry{\n\t\t\t\tnfRadio.channel( 'form-' + formID ).trigger( 'disable:submit', model );\n\t\t\t\tgrecaptcha.ready( function() {\n\t\t\t\t\tgrecaptcha.execute( model.get( 'site_key' ), {\n\t\t\t\t\t\taction: 'register'\n\t\t\t\t\t} ).then( function( token ) {\n\t\t\t\t\t\tmodel.set( 'value', token );\n\t\t\t\t\t\tnfRadio.channel( 'form-' + formID ).trigger( 'enable:submit', model );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t} catch (e) {\n\t\t\t\t//Wait for the form to fully load and display error\n\t\t\t\tjQuery(document).on( 'nfFormReady', (layoutView) => {\n\t\t\t\t\t//Get consent details as recaptcha failed to load\n\t\t\t\t\tlet consent = nf_check_recaptcha_consent();\n\t\t\t\t\n\t\t\t\t\t//Get submit button\n\t\t\t\t\tlet submitFieldID;\n\t\t\t\t\tmodel.collection.models.forEach( (fieldModel) => {\n\t\t\t\t\t\tif(fieldModel.get(\"type\") === \"submit\"){\n\t\t\t\t\t\t\tsubmitFieldID = fieldModel.get(\"id\");\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t\t//Display generic error\n\t\t\t\t\tnfRadio.channel( 'fields' ).request(\"add:error\", submitFieldID, \"recaptcha-v3-missing\", model.collection.options.formModel.get(\"settings\").recaptchaConsentMissing );\n\t\t\t\t\t//Create error message and add possible interaction with cookie consent depending on consent result\n\t\t\t\t\t//Display filterable error to add consent\n\t\t\t\t\tthis.nf_build_default_consent_action(model, consent.services, submitFieldID, layoutView );\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tnf_build_default_consent_action: function ( model, services, submitFieldID, layoutView ) {\n\t\t\t//Return if no consent management is detected\n\t\t\tconst returnIf = services.length <= 1 && services.includes(\"missing_cookie\") || services.length <= 0;\n\t\t\tif( !returnIf ){ \n\t\t\t\tlet actionElement = document.createElement(\"div\");\n\t\t\t\tactionElement.setAttribute(\"id\", \"nf_recaptcha_consent_event\");\n\t\t\t\tactionElement.innerText += model.collection.options.formModel.get(\"settings\").recaptchaConsentEvent;\n\n\t\t\t\tconst detailData = {\n\t\t\t\t\t\"services\": services,\n\t\t\t\t\t\"element\": actionElement,\n\t\t\t\t\t\"submitFieldID\": submitFieldID, \n\t\t\t\t\t\"layoutView\": layoutView\n\t\t\t\t}\n\t\t\t\t//Allow filtering of the element before printing it\n\t\t\t\tlet nf_consent_link_event = new CustomEvent('nf_consent_link', {detail: detailData});\n\t\t\t\tdocument.dispatchEvent(nf_consent_link_event);\n\n\t\t\t\t//Append action to error element\n\t\t\t\tconst genericErrorElements = document.getElementsByClassName(\"nf-error-recaptcha-v3-missing\");\n\t\t\t\tconst genericErrorElementsList = Array.prototype.slice.call(genericErrorElements);\n\t\t\t\tgenericErrorElementsList.forEach( (error) => {\n\t\t\t\t\terror.append( actionElement );\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n });\n\n return controller;\n} );\n","define('controllers/fieldHTML',[], function() {\n var controller = Marionette.Object.extend({\n\n htmlFields: [],\n trackedMergeTags: [],\n\n initialize: function () {\n this.listenTo( Backbone.Radio.channel( 'fields-html' ), 'init:model', this.setupFieldMergeTagTracking );\n },\n\n setupFieldMergeTagTracking: function( fieldModel ) {\n this.htmlFields.push( fieldModel );\n\n var formID = fieldModel.get( 'formID' );\n\n this.listenTo( nfRadio.channel( 'form-' + formID ), 'init:model', function( formModel ){\n\n var mergeTags = fieldModel.get( 'default' ).match( new RegExp( /{field:(.*?)}/g ) );\n if ( ! mergeTags ) return;\n\n _.each( mergeTags, function( mergeTag ) {\n var fieldKey = mergeTag.replace( '{field:', '' ).replace( '}', '' );\n var fieldModel = formModel.get( 'fields' ).findWhere({ key: fieldKey });\n if( 'undefined' == typeof fieldModel ) return;\n\n this.trackedMergeTags.push( fieldModel );\n this.listenTo( nfRadio.channel( 'field-' + fieldModel.get( 'id' ) ), 'change:modelValue', this.updateFieldMergeTags );\n }, this );\n\n // Let's get this party started!\n this.updateFieldMergeTags();\n }, this );\n },\n\n updateFieldMergeTags: function( fieldModel ) {\n _.each( this.htmlFields, function( htmlFieldModel ){\n var value = htmlFieldModel.get( 'value' );\n _.each( this.trackedMergeTags, function( fieldModel ){\n\n /* Search the value for any spans with mergetag data-key\n * values\n */\n var spans = value.match( new RegExp( //g ) );\n\t _.each( spans, function( spanVar ) {\n\t /* See if the span string contains the current\n * fieldModel's key. If so replace the span with a\n * merge tag for evaluation.\n */\n if( -1 < spanVar.indexOf( \"data-key=\\\"field:\" + fieldModel.get( 'key' ) ) ) {\n\t value = value.replace( spanVar, \"{field:\" + fieldModel.get( 'key' ) + \"}\" );\n }\n\t } );\n\n var mergeTag = '{field:' + fieldModel.get( 'key' ) + '}';\n\n const fieldValue = fieldModel.get( 'type' ) === \"repeater\" ? this.displayRepeaterData(fieldModel) : fieldModel.getValue();\n\n\t /* We replace the merge tag with the value\n\t * surrounded by a span so that we can still find it\n\t * and not affect itself or other field merge tags\n\t */\n value = value.replace( mergeTag, \"\"\n + fieldValue + \"\" );\n }, this ) ;\n htmlFieldModel.set( 'value', value );\n htmlFieldModel.trigger( 'reRender' );\n }, this );\n },\n\n displayRepeaterData: function(fieldModel) {\n const repeaterFieldIDs = Object.keys(fieldModel.getValue());\n let returnHTML = \"\", passedFields = [];\n\n _.each(repeaterFieldIDs, function(fieldID){\n if(passedFields.indexOf(fieldID) === -1) {\n const field = nfRadio.channel( 'fields' ).request( 'get:field', fieldID );\n if(typeof field !== \"undefined\"){\n const excluded = ['submit', 'html', 'hidden', 'password', 'passwordconfirm', 'divider', 'hr', 'note', 'unknown', 'button', 'confirm', 'creditcard', 'creditcardcvc', 'creditcardexpiration', 'creditcardfullname', 'creditcardnumber', 'creditcardzip', 'recaptcha', 'recaptcha_v3' ];\n if(excluded.indexOf(field.get('type')) === -1 && field.getValue().toString().length > 0){\n const index = Number(fieldID.split(\"_\").pop()) + 1;\n returnHTML += \"

\"+ field.get(\"label\") + \" \" + index + \" : \" + field.getValue() + \"

\";\n passedFields.push(fieldID);\n } \n }\n }\n });\n\n return returnHTML;\n }\n\n });\n\n return controller;\n});\n\n","/**\n* When a form is loaded, enable any help text that appears on the page.\n*/\ndefine('controllers/helpText',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n\t\t\tthis.listenTo( nfRadio.channel( 'form' ), 'render:view', this.initHelpText );\n\n\t\t\tnfRadio.channel( 'form' ).reply( 'init:help', this.initHelpText );\n\t\t},\n\n\t\tinitHelpText: function( view ) {\n\t\t\tjQuery( view.el ).find( '.nf-help' ).each( function() {\n\t\t\t\tvar jBox = jQuery( this ).jBox( 'Tooltip', {\n\t\t\t\t\ttheme: 'TooltipBorder',\n\t\t\t\t\tcontent: jQuery( this ).data( 'text' ),\n\t\t\t\t\ttrigger: 'mouseenter focus',\n\t\t\t\t\tcloseOnMouseleave: true,\n\t\t\t\t\tcloseOnClick: true\n\t\t\t\t});\n\t\t\t// Hide tooltip on keydown and mouseleave\n\t\t\tjQuery(this).on('keydown mouseleave', function() {\n\t\t\t\tjBox.close();\n\t\t\t});\n\t\t\t} );\n\t\t}\n\t});\n\n\treturn controller;\n } );\n","define('controllers/fieldTextbox',[], function() {\n\tvar controller = Marionette.Object.extend( {\n\t\tinitialize: function() {\n nfRadio.channel( 'textbox' ).reply( 'get:calcValue', this.getCalcValue, this );\n\t\t},\n\n\t\tgetCalcValue: function( fieldModel ) {\n if('currency' == fieldModel.get('mask')){\n var form = nfRadio.channel( 'app' ).request( 'get:form', fieldModel.get( 'formID' ) );\n var currencySymbol = ('undefined' !== typeof form) ? form.get( 'currencySymbol' ) : '';\n var currencySymbolDecoded = jQuery('