{"version":3,"file":"origami.js","sourceRoot":"","sources":["../../ScriptSource/origami.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint no-var: off */\r\n/* eslint eqeqeq: off */\r\n/* eslint no-prototype-builtins: off */\r\n/* eslint no-useless-escape: off */\r\n/* eslint no-shadow-restricted-names: off */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/ban-types */\r\n/* eslint-disable @typescript-eslint/no-this-alias */\r\n/* eslint-disable @typescript-eslint/camelcase */\r\n/* eslint-disable @typescript-eslint/no-use-before-define */\r\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\n\r\ninterface Document {\r\n documentMode?: any;\r\n}\r\n\r\ninterface Window {\r\n console: any;\r\n JSON: any;\r\n clipboardData: any;\r\n minimizeModal: (title: string) => void;\r\n}\r\n\r\ninterface KeyboardEvent {\r\n isKeyCodePrintableCharacter: () => boolean;\r\n}\r\n\r\ninterface Number {\r\n format: (format: string) => string;\r\n toMoney: () => string;\r\n}\r\n\r\ninterface Object {\r\n byString: (o: any, s: string) => any;\r\n}\r\n\r\ninterface String {\r\n replaceAll: (target, replacement) => string;\r\n reverse: () => string;\r\n leftPad: (size, ch) => String;\r\n rightPad: (size, ch) => String;\r\n trimRight: () => string;\r\n trimLeft: () => string;\r\n escape: (str: string) => string;\r\n stripTags: () => string;\r\n escapeHTML: () => string;\r\n unescapeHTML: () => string;\r\n toTitleCase: () => string;\r\n escapeXML: () => string;\r\n unescapeXML: () => string;\r\n repeat: (num: number) => string;\r\n}\r\n\r\ninterface DateConstructor {\r\n firstDayOfWeek: number;\r\n format: string;\r\n}\r\n\r\ninterface JQueryStatic {\r\n attr: (element: any, name: string) => any;\r\n browser: any;\r\n css: any;\r\n curCSS: any;\r\n datepicker: any;\r\n jqm: (options: any) => any;\r\n}\r\n\r\ninterface JQuery {\r\n autocomplete: (url: string, config: any) => any;\r\n cloneSelects: any;\r\n datepicker: (options: any) => any;\r\n inputmask: (options: any) => any;\r\n maskedInput: (options?: any) => any;\r\n maskedDateInput: () => any;\r\n hoverIntent: (config: any) => void;\r\n jqm: (options: any) => any;\r\n jqmAddTrigger: (options: any) => any;\r\n jqmHide: any;\r\n jqmShow: any;\r\n live: (event: string, callback: () => any) => any;\r\n preventDoubleSubmission: () => any;\r\n qtip: (options: any) => any;\r\n size(): number;\r\n sortable: (options: any) => void;\r\n timeEntry: (options: any) => void;\r\n unautocomplete: () => void;\r\n origamiSpinner: (any) => void;\r\n dialog: (...any) => JQuery;\r\n}\r\n\r\ndeclare var getCurrentAccountLogin: () => any;\r\ndeclare var afterCloseIframeModal: () => void;\r\ndeclare var clearRadioButtons: () => void;\r\ndeclare var evaluateFormExpressions: (element: any) => void; //($(this).closest(\"div.origamiform\"));\r\ndeclare var enableEssentialCookiesOnly: boolean;\r\ndeclare var getFieldsFromFormula: (string: any) => string;\r\ndeclare var getCurrentClientID: () => string;\r\ndeclare var getControllerName: () => string;\r\ndeclare var getControllerAction: () => string;\r\ndeclare var getRecordID: () => number; // currently only works on edit pages\r\ndeclare var getCurrentSessionKey: () => string;\r\ndeclare var getCurrentUserUsesAssistiveTechnology: () => number;\r\ndeclare var getCurrentUserNumberGroupSeparator: () => string;\r\ndeclare var getCurrentUserNumberDecimalSeparator: () => string;\r\ndeclare var getDefaultPhoneCountry: () => string;\r\ndeclare var getEnableTimeoutWarning: () => boolean;\r\ndeclare var getTimeoutDuration: () => number;\r\ndeclare var getToolTipTheme: () => string;\r\ndeclare var getTPAClientID: () => string;\r\ndeclare var gridHandleDroppedElement: () => void;\r\ndeclare var initMaskedInput: () => void;\r\ndeclare var isValidEmail: (email: string) => boolean;\r\ndeclare var inputnameprefix: string;\r\ndeclare var getServerAppRoot: () => string;\r\ndeclare var Highcharts: any;\r\ndeclare var removeFieldsFromDefinitionAlreadyInView: () => void;\r\ndeclare var tippy: (o: any, useOptions: any) => any;\r\ndeclare var toggleFieldChanged: (propName: string, x: boolean) => void;\r\ndeclare var TryHideParentPopup: () => void;\r\ndeclare var _userJqueryDateFormat: string;\r\ndeclare var _userDateFormatMask: string;\r\ndeclare var libphonenumber: any;\r\ndeclare var Inputmask: any;\r\ndeclare var initializeMap: (node: any) => void;\r\ndeclare var skipCodeDependencySetup: (input: any) => boolean;\r\ndeclare var ajaxGridPost: boolean;\r\ndeclare var resizeModal: () => void;\r\ndeclare var getSensitiveFieldChanges: () => object[]; // only works on edit pages, defined in Edit.cshtml\r\ndeclare var formulaFieldChangeFunction: () => void; // defined in formformulas.js\r\n\r\nif (!window.console) window.console = {};\r\nif (!window.console.log) window.console.log = function () { };\r\n\r\n//#region number and string helper functions\r\n/**\r\n* Formats the number according to the ‘format’ string;\r\n* adherses to the american number standard where a comma\r\n* is inserted after every 3 digits.\r\n* note: there should be only 1 contiguous number in the format,\r\n* where a number consists of digits, period, and commas\r\n* any other characters can be wrapped around this number, including ‘$’, ‘%’, or text\r\n* examples (123456.789):\r\n* ‘0′ - (123456) show only digits, no precision\r\n* ‘0.00′ - (123456.78) show only digits, 2 precision\r\n* ‘0.0000′ - (123456.7890) show only digits, 4 precision\r\n* ‘0,000′ - (123,456) show comma and digits, no precision\r\n* ‘0,000.00′ - (123,456.78) show comma and digits, 2 precision\r\n* ‘0,0.00′ - (123,456.78) shortcut method, show comma and digits, 2 precision\r\n*\r\n* @method format\r\n* @param format {string} the way you would like to format this text\r\n* @return {string} the formatted number\r\n* @public\r\n*/\r\n\r\nif (typeof KeyboardEvent != 'undefined') {\r\n KeyboardEvent.prototype.isKeyCodePrintableCharacter = function () {\r\n var that: any = this;\r\n var keycode: number = that.keyCode;\r\n\r\n var printable =\r\n (keycode > 47 && keycode < 58) || // number keys\r\n keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns)\r\n (keycode > 64 && keycode < 91) || // letter keys\r\n (keycode > 95 && keycode < 112) || // numpad keys\r\n (keycode > 185 && keycode < 193) || // ;=,-./` (in order)\r\n (keycode > 218 && keycode < 223); // [\\]' (in order)\r\n\r\n return printable;\r\n };\r\n}\r\n\r\nNumber.prototype.format = function(format) {\r\n var hasComma = -1 < format.indexOf(','),\r\n hasDecimal = -1 < format.indexOf('.'),\r\n psplit = format.replace(/[^0-9\\u2013\\-\\.]/g, '').split('.'),\r\n that: any = this;\r\n\r\n // compute precision\r\n if (1 < psplit.length) {\r\n // fix number precision\r\n that = that.toFixed(psplit[1].length);\r\n }\r\n // error: too many periods\r\n else if (2 < psplit.length) {\r\n throw ('NumberFormatException: invalid format, formats should have no more than 1 period: ' + format);\r\n }\r\n // remove precision\r\n else {\r\n that = that.toFixed(0);\r\n }\r\n\r\n // get the string now that precision is correct\r\n var fnum = that.toString();\r\n\r\n // format has comma, then compute commas\r\n if (hasComma) {\r\n // remove precision for computation\r\n psplit = fnum.split('.');\r\n\r\n var cnum = psplit[0],\r\n parr = [],\r\n j = cnum.length,\r\n m = Math.floor(j / 3),\r\n n = (cnum.length % 3) || 3; // n cannot be ZERO or causes infinite loop\r\n\r\n // break the number into chunks of 3 digits; first chunk may be less than 3\r\n for (var i = 0; i < j; i += n) {\r\n if (0 !== i) { n = 3; }\r\n parr[parr.length] = cnum.substr(i, n);\r\n m -= 1;\r\n }\r\n\r\n // put chunks back together, separated by comma\r\n fnum = parr.join(',');\r\n\r\n if (fnum.substr(0, 2) == \"-,\")\r\n fnum = \"-\" + fnum.substr(2);\r\n\r\n // add the precision back in\r\n if (psplit[1]) { fnum += '.' + psplit[1]; }\r\n }\r\n\r\n // replace the number portion of the format with fnum\r\n var invariantResult = format.replace(/[\\d,?\\.?]+/, fnum);\r\n\r\n if (!hasComma && !hasDecimal)\r\n return invariantResult;\r\n\r\n\r\n var groupSeparator = UseGroupSeparator();\r\n var decimalSeparator = UseDecimalSeparator();\r\n\r\n if (invariantGroupSeparator == groupSeparator && invariantDecimalSeparator == decimalSeparator)\r\n return invariantResult;\r\n\r\n var decParts = invariantResult.split(invariantDecimalSeparator);\r\n var groupParts = decParts[0].split(invariantGroupSeparator);\r\n\r\n decParts[0] = groupParts.join(groupSeparator);\r\n\r\n return decParts.join(decimalSeparator);\r\n\r\n};\r\n\r\nNumber.prototype.toMoney = function () {\r\n\r\n return this.format(\"0,0.00\");\r\n\r\n};\r\n\r\nObject.byString = function (o, s) {\r\n s = s.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\r\n s = s.replace(/^\\./, ''); // strip a leading dot\r\n var a = s.split('.');\r\n for (var i = 0, n = a.length; i < n; ++i) {\r\n var k = a[i];\r\n if (k in o) {\r\n o = o[k];\r\n } else {\r\n return;\r\n }\r\n }\r\n return o;\r\n}\r\n\r\nMath.trunc = Math.trunc || function (x) {\r\n if (isNaN(x)) {\r\n return NaN;\r\n }\r\n if (x > 0) {\r\n return Math.floor(x);\r\n }\r\n return Math.ceil(x);\r\n};\r\n\r\nvar invariantGroupSeparator = \",\";\r\nvar invariantDecimalSeparator = \".\";\r\n\r\nfunction dynamicLoadJavascript(url, callback) {\r\n jQuery.ajax({\r\n url: url,\r\n dataType: 'script',\r\n success: callback,\r\n cache: true,\r\n async: true\r\n });\r\n}\r\n\r\nfunction GetRawInvariantNumber(input)\r\n{\r\n if (input == null)\r\n return null;\r\n\r\n var groupSeparator = UseGroupSeparator();\r\n var decimalSeparator = UseDecimalSeparator();\r\n\r\n input = input.replaceAll(' ', ' ');\r\n\r\n var removeNonNumeric = new RegExp(\"[^0-9\" + groupSeparator + decimalSeparator + \"\\-]\", \"g\");\r\n input = input.replace(removeNonNumeric, '');\r\n\r\n var decParts = input.split(decimalSeparator);\r\n var groupPart = decParts[0].replaceAll(groupSeparator,'');\r\n\r\n if(decParts.length == 1)\r\n return groupPart;\r\n\r\n var result = groupPart.concat('.', decParts[1]);\r\n\r\n return result;\r\n}\r\n\r\nfunction GetUserNumberFromInvariant(input) {\r\n if (isNaN(input))\r\n return input;\r\n\r\n var val = eval(input);\r\n\r\n var decParts = input.toString().split(invariantDecimalSeparator);\r\n var useformat = \"0,000\";\r\n\r\n if (decParts.length == 1)\r\n return val.format(useformat);\r\n\r\n var numDecimals = decParts[1].length;\r\n\r\n if (numDecimals > 0) {\r\n for (let i = 0; i < numDecimals; i++) {\r\n if (i == 0)\r\n useformat = useformat + \".0\";\r\n else\r\n useformat = useformat + \"0\";\r\n }\r\n }\r\n\r\n return val.format(useformat);\r\n}\r\n\r\nfunction SafeParseFloat(input) {\r\n if (input === null || input === 'undefined') {\r\n return NaN;\r\n }\r\n input = GetRawInvariantNumber(input);\r\n if (isNaN(input)) {\r\n return NaN;\r\n }\r\n return parseFloat(input);\r\n}\r\n\r\n\r\nfunction UseGroupSeparator()\r\n{\r\n return (typeof getCurrentUserNumberGroupSeparator == 'function') ? getCurrentUserNumberGroupSeparator() : invariantGroupSeparator;\r\n}\r\n\r\nfunction UseDecimalSeparator()\r\n{\r\n return (typeof getCurrentUserNumberDecimalSeparator == 'function') ? getCurrentUserNumberDecimalSeparator() : invariantDecimalSeparator;\r\n}\r\n\r\nfunction getSelectedTextOfElement(elem) {\r\n try {\r\n if (elem.tagName === \"TEXTAREA\" ||\r\n (elem.tagName === \"INPUT\" && elem.type === \"text\")) {\r\n return elem.value.substring(elem.selectionStart,\r\n elem.selectionEnd);\r\n }\r\n return null;\r\n }\r\n catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction GetFormattedPhoneNumberView(origPhone, defaultCountry) {\r\n try {\r\n const defaultCountrySet = typeof defaultCountry != 'undefined';\r\n const useCountry = defaultCountrySet ? defaultCountry : (typeof getDefaultPhoneCountry == 'function' ? getDefaultPhoneCountry() : 'US');\r\n const parseNumber = new libphonenumber.parsePhoneNumber(origPhone, useCountry);\r\n\r\n if (typeof parseNumber === 'undefined')\r\n return origPhone;\r\n\r\n console.log(parseNumber);\r\n return parseNumber.formatNational();\r\n }\r\n catch (error) {\r\n // Not a phone number, non-existent country, etc.\r\n console.log(error);\r\n return origPhone;\r\n }\r\n}\r\n\r\n/* string helper functions */\r\nString.prototype.replaceAll = function(target, replacement) {\r\n return this.split(target).join(replacement);\r\n};\r\n\r\nString.prototype.trim = function () {\r\n return this.replace(/^\\s*/, \"\").replace(/\\s*$/, \"\");\r\n}\r\nString.prototype.trimLeft =\r\nfunction() {\r\n return this.replace(/^\\s+/, '');\r\n}\r\nString.prototype.trimRight =\r\nfunction() {\r\n return this.replace(/\\s+$/, '');\r\n}\r\n\r\nString.prototype.reverse = function() {\r\n var res = \"\";\r\n for (var i = this.length; i > 0; --i) {\r\n res += this.charAt(i - 1);\r\n }\r\n return res;\r\n}\r\n\r\nString.prototype.leftPad = function(size, ch) {\r\n var result = new String(this);\r\n if (ch == null) {\r\n ch = \" \";\r\n }\r\n while (result.length < size) {\r\n result = ch + result;\r\n }\r\n return result;\r\n}\r\n\r\nString.prototype.rightPad = function(size, ch) {\r\n var result = new String(this);\r\n if (ch == null) {\r\n ch = \" \";\r\n }\r\n while (result.length < size) {\r\n result = result + ch;\r\n }\r\n return result;\r\n}\r\n\r\nString.prototype.repeat = function (num) {\r\n return new Array(num + 1).join(this);\r\n}\r\n\r\nString.prototype.escape = function(string) {\r\n return string.replace(/('|\\\\)/g, \"\\\\$1\");\r\n}\r\n\r\nString.prototype.stripTags = function() {\r\n return this.replace(/<\\/?[^>]+>/gi, '');\r\n}\r\n\r\nString.prototype.escapeHTML = function() {\r\n var div = document.createElement('div');\r\n var text = document.createTextNode(this);\r\n div.appendChild(text);\r\n return div.innerHTML;\r\n}\r\n\r\nString.prototype.escapeXML = function() {\r\n var unsafe = this;\r\n return unsafe.replace(/[<>&'\"]/g, function(c) {\r\n switch(c) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n case '\\'': return ''';\r\n case '\"': return '"';\r\n }\r\n });\r\n}\r\n\r\nString.prototype.unescapeXML = function () {\r\n var unsafe = this;\r\n return unsafe.replace(/[<>&'\"]/g, function (c) {\r\n switch (c) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n case ''': return '\\'';\r\n case '"': return '\"';\r\n }\r\n });\r\n}\r\n\r\nString.prototype.unescapeHTML = function() {\r\n var div = document.createElement('div');\r\n div.innerHTML = this.stripTags();\r\n return div.childNodes[0].nodeValue;\r\n}\r\n\r\nString.prototype.startsWith = function (str) {\r\n return this.indexOf(str) == 0;\r\n};\r\n\r\nString.prototype.endsWith = function (suffix) {\r\n return this.indexOf(suffix, this.length - suffix.length) !== -1;\r\n};\r\n\r\n/* To Title Case © 2018 David Gouch | https://github.com/gouch/to-title-case */\r\n\r\n// eslint-disable-next-line no-extend-native\r\nString.prototype.toTitleCase = function () {\r\n 'use strict'\r\n var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|v.?|vs.?|via)$/i\r\n var alphanumericPattern = /([A-Za-z0-9\\u00C0-\\u00FF])/\r\n var wordSeparators = /([ :–—-])/\r\n\r\n return this.split(wordSeparators)\r\n .map(function (current, index, array) {\r\n if (\r\n /* Check for small words */\r\n current.search(smallWords) > -1 &&\r\n /* Skip first and last word */\r\n index !== 0 &&\r\n index !== array.length - 1 &&\r\n /* Ignore title end and subtitle start */\r\n array[index - 3] !== ':' &&\r\n array[index + 1] !== ':' &&\r\n /* Ignore small words that start a hyphenated phrase */\r\n (array[index + 1] !== '-' ||\r\n (array[index - 1] === '-' && array[index + 1] === '-'))\r\n ) {\r\n return current.toLowerCase()\r\n }\r\n\r\n /* Ignore intentional capitalization */\r\n if (current.substr(1).search(/[A-Z]|\\../) > -1) {\r\n return current\r\n }\r\n\r\n /* Ignore URLs */\r\n if (array[index + 1] === ':' && array[index + 2] !== '') {\r\n return current\r\n }\r\n\r\n /* Capitalize the first letter */\r\n return current.replace(alphanumericPattern, function (match) {\r\n return match.toUpperCase()\r\n })\r\n })\r\n .join('')\r\n}\r\n\r\n//#endregion\r\n\r\n//#region url manipulation\r\n//https://css-tricks.com/snippets/javascript/get-url-variables/\r\nfunction getParameterByName(variable) {\r\n if (variable == null)\r\n return null;\r\n\r\n var searchtext = window.location.search;\r\n if (searchtext == null || searchtext == \"\")\r\n return null;\r\n\r\n var query = searchtext.substring(1);\r\n var vars = query.split(\"&\");\r\n\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0].toLowerCase() == variable.toLowerCase()) { return decodeURIComponent(pair[1].replace(/\\+/g, \" \")); }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction propagateHrefParameter(selector, name) {\r\n var value = getParameterByName(name);\r\n if (value == null || value == \"\")\r\n return;\r\n\r\n $(selector).each(function () {\r\n var href = $(this).attr(\"href\");\r\n if (href == null || href == \"\" && href == undefined)\r\n return;\r\n\r\n if (href.toLowerCase().indexOf(name.toLowerCase()) !== -1)\r\n return;\r\n\r\n href = insertParameterToUrl(href, name, value);\r\n $(this).attr(\"href\", href);\r\n });\r\n}\r\n\r\nfunction insertParameterToUrl(url, key, value) {\r\n var tempArray = url.split(\"?\");\r\n var baseUrl = tempArray[0];\r\n var additionalUrl = tempArray[1];\r\n\r\n if (additionalUrl == null || additionalUrl == undefined)\r\n return baseUrl + \"?\" + [escape(key), encodeURIComponent(value)].join('=');\r\n else {\r\n var newAdditionalUrl = insertParameter(additionalUrl, key, value);\r\n return baseUrl + \"?\" + newAdditionalUrl;\r\n }\r\n}\r\n\r\nfunction removeParameterFromUrl(url, key) {\r\n var tempArray = url.split(\"?\");\r\n var baseUrl = tempArray[0];\r\n var additionalUrl = tempArray[1];\r\n\r\n if (additionalUrl != null && additionalUrl != undefined) {\r\n var newAdditionalUrl = removeParameter(additionalUrl, key);\r\n return baseUrl + \"?\" + newAdditionalUrl;\r\n }\r\n}\r\n\r\nfunction insertParameter(paramString, key, value) {\r\n key = escape(key); value = encodeURIComponent(value);\r\n\r\n var kvp = paramString.split('&');\r\n\r\n var i = kvp.length; var x; while (i--) {\r\n x = kvp[i].split('=');\r\n\r\n if (x[0].toLowerCase() == key.toLowerCase()) {\r\n x[1] = value;\r\n kvp[i] = x.join('=');\r\n break;\r\n }\r\n }\r\n\r\n if (i < 0) { kvp[kvp.length] = [key, value].join('='); }\r\n\r\n return kvp.join('&');\r\n}\r\n\r\nfunction removeParameter(paramString, key) {\r\n key = escape(key);\r\n\r\n var kvp = paramString.split('&');\r\n\r\n var i = kvp.length; var x; while (i--) {\r\n x = kvp[i].split('=');\r\n\r\n if (x[0].toLowerCase() == key.toLowerCase()) {\r\n kvp.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n if (i < 0) { kvp.splice(kvp.length, 1); }\r\n\r\n if (kvp.length == 0)\r\n return kvp;\r\n else\r\n return kvp.join('&');\r\n}\r\n\r\nfunction urlParametersFromDiv(divID, dateFormat, inputPrefix) {\r\n return urlParametersFromElement($(\"#\" + divID), dateFormat, inputPrefix);\r\n}\r\n\r\nfunction urlParametersFromElement(element, dateFormat, inputPrefix) {\r\n var urlParam = \"\";\r\n\r\n // Clear the hidden inputs for the multi-select searches\r\n $('input[type=hidden][name^=__multiselectsearch_]').each(function () {\r\n $(this).val('');\r\n });\r\n\r\n const inputSelector = $(element).find(\"input[name],select[name]\");\r\n $(inputSelector).each(function () {\r\n var type = $(this).attr('type');\r\n var name = $(this).attr('name');\r\n\r\n if (type == 'button' || type == 'submit')\r\n return;\r\n\r\n if (type != null)\r\n type = type.toLowerCase();\r\n\r\n var test = \"\";\r\n if ($(this).hasClass('date') || $(this).hasClass('inputDate') || $(this).hasClass('searchInputDate')) {\r\n test = $(this).val();\r\n if (test.startsWith('='))\r\n test = '=' + convertUserDateValueToUrlDate(test.substring(1));\r\n else\r\n test = convertUserDateValueToUrlDate(test);\r\n\r\n }\r\n else if (type == 'checkbox' && !name.startsWith('__multiselectsearch_')) {\r\n if ($(this).prop('checked'))\r\n test = \"on\";\r\n else\r\n test = \"off\";\r\n }\r\n else if (type == 'checkbox' && name.startsWith('__multiselectsearch_')) {\r\n var hiddenInput = $(\"input[type='hidden'][name='\" + name + \"']\");\r\n\r\n var hiddenValue = hiddenInput.val();\r\n\r\n if ($(this).prop('checked')) {\r\n var addValue = $(this).val() + ',';\r\n if (hiddenInput.val().indexOf(addValue) < 0)\r\n hiddenInput.val(hiddenValue + addValue);\r\n }\r\n\r\n }\r\n else if (type == 'radio') {\r\n if ($(this).prop('checked'))\r\n test = $(this).val();\r\n else\r\n test = \"\";\r\n }\r\n else {\r\n if ($(this).val() == null)\r\n test = \"\";\r\n else\r\n test = $(this).val();\r\n }\r\n if ($(this).attr(\"alt\") == \"integer\")\r\n test = GetRawInvariantNumber(test);\r\n\r\n if ((test.length > 0) || $(this).hasClass('alwaysInclude')) {\r\n if (urlParam != \"\")\r\n urlParam += \"&\";\r\n\r\n if ($(this).parent('span.containsSearch').length > 0 && !test.startsWith('%'))\r\n test = '%' + test;\r\n\r\n var useName = $(this).attr('name');\r\n\r\n if (useName.startsWith('__multiselectsearch_')) {\r\n useName = useName.replace('__multiselectsearch_', '');\r\n if (test.endsWith(','))\r\n test = test.slice(0, -1);\r\n }\r\n\r\n if (type != 'hidden' && typeof inputPrefix != 'undefined' && inputPrefix > '')\r\n useName = inputPrefix + useName;\r\n urlParam += useName + '=' + encodeURIComponent(test);\r\n }\r\n });\r\n\r\n return urlParam;\r\n}\r\n\r\nfunction urlCheckboxParametersFromDiv(divID, fieldname) {\r\n var urlCheckboxParam = \"\";\r\n\r\n const inputSelector = \"#\" + divID + \" input[name]\";\r\n $(inputSelector).each(function () {\r\n\r\n var checkboxID = $(this).attr('id');\r\n if (typeof checkboxID === 'undefined')\r\n checkboxID = $(this).attr('value');\r\n\r\n var type = $(this).attr('type');\r\n var checked = $(this).prop('checked');\r\n\r\n if (type != 'checkbox')\r\n return;\r\n\r\n if (checked == true) {\r\n if (urlCheckboxParam.length > 0) {\r\n urlCheckboxParam += \",\";\r\n }\r\n\r\n urlCheckboxParam += checkboxID;\r\n }\r\n\r\n });\r\n\r\n if (urlCheckboxParam.length > 0) {\r\n urlCheckboxParam = \"&\" + fieldname + \"=\" + urlCheckboxParam;\r\n }\r\n\r\n return urlCheckboxParam;\r\n}\r\n//#endregion\r\n\r\n//#region index request logs\r\n//http://stackoverflow.com/questions/11214404/how-to-detect-if-browser-supports-html5-local-storage\r\nfunction browserSupportsLocalStorage() {\r\n var mod = 'modernizr';\r\n try {\r\n localStorage.setItem(mod, mod);\r\n localStorage.removeItem(mod);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nfunction browserSupportsJSON() {\r\n return (typeof JSON === 'object' && typeof JSON.parse === 'function');\r\n}\r\n\r\nfunction getIndexLog(sessionKey) {\r\n // check if this is a new origami session. if it is, just clear out\r\n // prior indexLogs.\r\n var key = window.localStorage.sessionKey;\r\n if (key == null || sessionKey !== key) {\r\n window.localStorage.indexLog = null;\r\n window.localStorage.sessionKey = sessionKey;\r\n\r\n return [];\r\n }\r\n\r\n var json = window.localStorage.indexLog;\r\n if (json == null || typeof json == \"undefined\")\r\n return [];\r\n\r\n return window.JSON.parse(json);\r\n}\r\n\r\nfunction saveIndexRequestLog(controllerName, queryString) {\r\n // if browser does not support localStorage, GTFO\r\n if (!browserSupportsLocalStorage() || !browserSupportsJSON())\r\n return;\r\n\r\n if (typeof getCurrentSessionKey != 'function')\r\n return;\r\n\r\n var sessionKey = getCurrentSessionKey();\r\n var current = getIndexLog(sessionKey) || [];\r\n\r\n var updated = false;\r\n for (var i in current) {\r\n var pair = current[i];\r\n if (pair.key == controllerName) {\r\n pair.value = queryString;\r\n updated = true;\r\n break;\r\n }\r\n }\r\n if (!updated)\r\n current.push({ key: controllerName, value: queryString });\r\n\r\n window.localStorage.indexLog = window.JSON.stringify(current);\r\n}\r\n\r\nfunction updateLinksWithSearchList(subset) {\r\n //ORDEV-29330 - initializeAll is being called twice on the document queue index page resulting in this function\r\n // executing twice and not restricted to the subset. This caused duplicate _searchList parameter to be added to each link\r\n // when it should only have been added a single time.\r\n var searchList = $(\"table.dataGrid a.searchlist\", subset).first().closest('tbody[searchList]').attr('searchList');\r\n\r\n if (typeof searchList == 'undefined' || searchList == null || searchList == '')\r\n return;\r\n\r\n var encodedString = encodeURIComponent(searchList);\r\n $(\"table.dataGrid a.searchlist\").each(function () {\r\n var url = $(this).attr(\"href\");\r\n if (url.split(\"?\").length > 1)\r\n url += \"&_searchList=\" + encodedString;\r\n else\r\n url += \"?_searchList=\" + encodedString;\r\n\r\n $(this).attr(\"href\", url);\r\n });\r\n\r\n $(\"table.dataGrid a.searchlist[data-editurl]\").each(function () {\r\n var url = $(this).attr(\"data-editurl\");\r\n if (url.split(\"?\").length > 1)\r\n url += \"&_searchList=\" + encodedString;\r\n else\r\n url += \"?_searchList=\" + encodedString;\r\n\r\n $(this).attr(\"data-editurl\", url);\r\n });\r\n}\r\n\r\nfunction updateBreadCrumbsWithIndexRequestLog() {\r\n // if browser does not support localStorage, GTFO\r\n if (!browserSupportsLocalStorage() || !browserSupportsJSON())\r\n return;\r\n\r\n if (typeof getCurrentSessionKey != 'function')\r\n return;\r\n\r\n // no need to update breadcrumbs if nothing in log\r\n var sessionKey = getCurrentSessionKey();\r\n var list = getIndexLog(sessionKey) || [];\r\n\r\n if (list==null || list.length == 0)\r\n return;\r\n\r\n // Handle case where a form that defaults to edit mode needs to respect index log settings when it auto-redirects to index page after save\r\n var controllerNameControl = $(\"#controllerName\");\r\n var controllerName = null;\r\n if (controllerNameControl.length != -1)\r\n controllerName = controllerNameControl.val();\r\n\r\n if (controllerName != null && controllerName != \"\") {\r\n var queryString = null;\r\n for (var i in list) {\r\n if (list[i].key == controllerName) {\r\n queryString = list[i].value;\r\n }\r\n }\r\n if (queryString != null && typeof (queryString) != \"undefined\" && queryString != \"\") {\r\n var indexLogControl = $(\"#indexLog\");\r\n if (indexLogControl.length > 0)\r\n indexLogControl.val(queryString);\r\n }\r\n }\r\n\r\n $(\"div.breadcrumbs a.indexrequest\").each(function () {\r\n\r\n controllerName = $(this).data(\"controllername\");\r\n if (controllerName == null || controllerName == \"\")\r\n return;\r\n\r\n var queryString = null;\r\n for (var i in list) {\r\n if (list[i].key == controllerName) {\r\n queryString = list[i].value;\r\n break;\r\n }\r\n }\r\n if (queryString == null || typeof queryString === \"undefined\" || queryString == \"\")\r\n return;\r\n\r\n var url = $(this).attr(\"href\");\r\n\r\n var tempArray = url.split(\"?\");\r\n var baseUrl = tempArray[0];\r\n var additionalUrl = tempArray[1];\r\n\r\n var newUrl = url;\r\n\r\n // if leading to a list of associations, add Associated to the breadcrumb\r\n if (queryString.indexOf(\"AssociationSource\") >= 0 && queryString.indexOf(\"AssociationSourceInstanceID\") >= 0) {\r\n var curText = $(this).text();\r\n $(this).text(`Associated ${curText}`);\r\n }\r\n\r\n // if nothing to merge because the breadcrumb url does not have any params\r\n if (additionalUrl == null || additionalUrl.trim().length == 0) {\r\n $(this).attr(\"href\", baseUrl + \"?\" + queryString);\r\n return;\r\n }\r\n\r\n var originalKeys = urlParamsToKeyValueArray(queryString);\r\n var newKeys = urlParamsToKeyValueArray(additionalUrl);\r\n var newParams = [];\r\n\r\n for (var i in originalKeys) {\r\n var okey = originalKeys[i][0];\r\n var ovalue = originalKeys[i][1];\r\n\r\n // check if newKeys has it\r\n var added = false;\r\n for (var x in newKeys) {\r\n var nkey = newKeys[x][0];\r\n var nvalue = newKeys[x][1];\r\n if (nkey.toLowerCase() == okey.toLowerCase()) {\r\n if (nvalue !== ovalue)\r\n return;\r\n else {\r\n newParams.push(newKeys[x].join('='));\r\n added = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!added)\r\n newParams.push(originalKeys[i].join('='));\r\n }\r\n\r\n $(this).attr(\"href\", baseUrl + \"?\" + newParams.join(\"&\"));\r\n });\r\n}\r\n\r\nfunction urlParamsToKeyValueArray(paramString) {\r\n var kvp = paramString.split('&');\r\n\r\n var result = [];\r\n for (var i in kvp) {\r\n var test = kvp[i];\r\n if (test.length == 0)\r\n continue;\r\n\r\n var p = test.split('=');\r\n if (p.length == 1)\r\n result.push(p[0], '')\r\n else\r\n result.push([p[0], p[1]]);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n//#endregion\r\n\r\n//#region status messages\r\n\r\nfunction isMobileDevice() {\r\n return navigator.userAgent.match(/Android/i)\r\n || navigator.userAgent.match(/webOS/i)\r\n || navigator.userAgent.match(/iPhone/i)\r\n || navigator.userAgent.match(/iPad/i)\r\n || navigator.userAgent.match(/iPod/i)\r\n || navigator.userAgent.match(/BlackBerry/i)\r\n || navigator.userAgent.match(/Windows Phone/i);\r\n}\r\n\r\nfunction isResponsiveMobileMode() {\r\n\r\n return (window.matchMedia('only screen and (max-width: 768px)').matches);\r\n}\r\n\r\nfunction clearStatusMessage() {\r\n $(\"#message\").removeClass(\"error\");\r\n $(\"#message\").removeClass(\"notification\");\r\n $(\"#message\").removeClass(\"success\");\r\n $(\"#message\").removeClass(\"information\");\r\n $(\"#message\").removeClass(\"warning\");\r\n $(\"#message\").addClass(\"hidden\");\r\n}\r\n\r\nfunction statusErrorMessage(message, fadeOut?, messageIsAlreadyHtmlEncoded?) {\r\n statusMessage(\"error\", message, fadeOut, messageIsAlreadyHtmlEncoded);\r\n}\r\n\r\nfunction statusNotificationMessage(message, fadeOut) {\r\n statusMessage(\"notification\", message, fadeOut);\r\n}\r\n\r\nfunction statusSuccessMessage(message, fadeOut) {\r\n statusMessage(\"success\", message, fadeOut);\r\n}\r\nfunction statusMessage(style, message, fadeOut?, messageIsAlreadyHtmlEncoded?) {\r\n\tvar escapedMessage = \"\";\r\n\tif(messageIsAlreadyHtmlEncoded)\r\n\t\tescapedMessage = message;\r\n\telse\r\n escapedMessage = message.escapeHTML();\r\n\r\n statusMessageHtml(style, escapedMessage, fadeOut);\r\n}\r\n\r\nfunction statusMessageHtml(style, messageHtml, fadeOut?) {\r\n if (style === \"error\") {\r\n let customMessage: string = window.origami.data.CustomRequiredFieldMessage ?? \"\";\r\n customMessage = htmlStringNewLineHelper(customMessage);\r\n messageHtml = (customMessage !== \"\") ? customMessage : messageHtml;\r\n }\r\n\r\n $(\"#message\").html(messageHtml).data(\"messageHtml\", messageHtml);\r\n\r\n if (fadeOut != null && typeof fadeOut != 'undefined' && fadeOut == \"true\")\r\n setTimeout(function () {\r\n $(\"#message\").addClass(\"hidden\");\r\n }, 3000);\r\n\r\n $(\"#message\").removeClass(\"error\");\r\n $(\"#message\").removeClass(\"notification\");\r\n $(\"#message\").removeClass(\"success\");\r\n $(\"#message\").removeClass(\"hidden\");\r\n\r\n $(\"#message\").addClass(style);\r\n\r\n if (getCurrentUserUsesAssistiveTechnology())\r\n if (!$('#message').hasClass('hidden') && !$('#message').hasClass('notification'))\r\n alert($('#message').text());\r\n}\r\n\r\nfunction htmlStringNewLineHelper(message: string): string {\r\n return message.replace(\"\\r\\n\", \"
\").replace(\"\\r\", \"
\").replace(\"\\n\", \"
\");\r\n}\r\n\r\nfunction nextStatusErrorMessage(message) {\r\n nextStatusMessage(\"error\", message);\r\n}\r\n\r\nfunction nextStatusNotificationMessage(message) {\r\n nextStatusMessage(\"notification\", message);\r\n}\r\n\r\nfunction nextStatusSuccessMessage(message) {\r\n nextStatusMessage(\"success\", message);\r\n}\r\n\r\nfunction nextStatusMessage(style, message) {\r\n nextStatusMessageHtml(style, message.escapeHTML());\r\n}\r\n\r\nfunction nextStatusMessageHtml(style, messageHtml) {\r\n var message = {\r\n Style: style,\r\n Html: true,\r\n Text: messageHtml\r\n };\r\n\r\n var json = window.JSON.stringify(message);\r\n eraseCookie('OrigamiTempDataJson64');\r\n\r\n writeCookie(\"OrigamiScriptTempData\", window.btoa(json), 1);\r\n}\r\n\r\n// priority must be one of these: polite, assertive, off\r\nfunction screenReaderMessage(message, assertive) {\r\n if (!message)\r\n return;\r\n\r\n var el = document.createElement('div');\r\n var id = 'sr-accouncement-' + Date.now();\r\n el.setAttribute('id', id);\r\n el.setAttribute('role', 'status');\r\n el.setAttribute('aria-live', assertive ? 'assertive' : 'polite');\r\n el.classList.add('screen-reader');\r\n document.body.appendChild(el);\r\n\r\n window.setTimeout(function () {\r\n document.getElementById(id).innerHTML = message;\r\n }, 100);\r\n\r\n window.setTimeout(function () {\r\n document.body.removeChild(document.getElementById(id));\r\n }, 1000);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region forms and input controls\r\nfunction setFormFocus(selector, ifVisible?) {\r\n if (getCurrentUserUsesAssistiveTechnology())\r\n skipNavigation();\r\n else {\r\n var first = $(selector + \" :input:not(button):visible:enabled\").first();\r\n if (first.length>0) {\r\n if (!ifVisible || (ifVisible && isScrolledIntoView(first))) {\r\n first.trigger(\"focus\");\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction isScrolledIntoView(elem)\r\n{\r\n var docViewTop = $(window).scrollTop();\r\n var docViewBottom = docViewTop + $(window).height();\r\n\r\n var elemTop = $(elem).offset().top;\r\n var elemBottom = elemTop + $(elem).height();\r\n\r\n return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));\r\n}\r\n\r\nfunction setViewFocus(selector) {\r\n var selected = $(selector + \" :tabbable\").first();\r\n $(selector + \" :tabbable\").first().trigger(\"focus\");\r\n}\r\n\r\nfunction showFormFields(fields, visible) {\r\n if (visible)\r\n fields.closest(\"li\").show();\r\n else\r\n fields.closest(\"li\").hide();\r\n}\r\n\r\nvar submitClicked = false;\r\nfunction onClickSubmit() { submitClicked = true; }\r\n\r\nvar goBackwards = false;\r\nfunction onGoBackwards() { goBackwards = true; }\r\n\r\nfunction beforeSaveAndContinueSubmit() : boolean {\r\n //meant to be overridden, return false to bail\r\n return true;\r\n}\r\n\r\nfunction afterSaveAndContinueSubmit(): boolean {\r\n //meant to be overridden, return false to bail\r\n return true;\r\n}\r\n\r\nfunction afterSaveAndContinueSuccess(data): void {\r\n //meant to be overridden\r\n}\r\n\r\nfunction afterSaveAndContinueFailure(data): void {\r\n //meant to be overridden\r\n}\r\n\r\n\r\nfunction clearHiddenPanels(formID) {\r\n var form = $(\"#\" + formID);\r\n $(\"div.panel\", form).each(function () {\r\n var isPanelCollapsed = $(this).find(\"a.expander.collapsed:first\").length;\r\n\t\t$(\"li\", this).each(function(){ // field level clearDataIfHidden settings\r\n\t\t\tvar eraseField = $(this).data(\"clearfield\");\r\n if ((eraseField) && !$(this).is(\":visible\")) {\r\n if (isPanelCollapsed && !$(this).hasClass(\"toggleHidden\")) {\r\n // if field is not visible only because it is in a collapsed panel\r\n // and was not also hidden by some toggle condition, do not clear\r\n return;\r\n }\r\n clearHiddenInputField(this);\r\n }\r\n });\r\n\r\n var toggleField = $(this).data(\"togglefield\");\r\n var toggleValues = $(this).data(\"togglevalues\");\r\n var toggleFormula = $(this).data(\"toggleformula\");\r\n\r\n if (!toggleField && !toggleValues && !toggleFormula)\r\n return;\r\n\r\n if ($(this).is(\":visible\"))\r\n return;\r\n\r\n var erase = $(this).hasClass(\"clearHiddenData\"); // panel level clearDataIfHidden setting\r\n if (erase) {\r\n clearHiddenInputField(this);\r\n }\r\n else if(toggleField || toggleValues){\r\n $(this).addClass(\"renamedNames\");\r\n $(\":input[name]:not(:button,:submit,:reset)\", this).each(function () {\r\n var closestLi = $(this).closest(\"li\"); // get ancestor li element where the field level clearfield (i.e. clearDataIfHidden) setting would be found if present\r\n\r\n var skipRename = false; // If there's a field level clearDataIfHidden override, then DO send the field to the server to be cleared, even if it's in a hidden panel that does not have clearDataIfHidden set at the panel level\r\n if (closestLi.length > 0) {\r\n var doClear = $(closestLi[0]).data(\"clearfield\");\r\n if (doClear) {\r\n skipRename = true;\r\n }\r\n }\r\n if (!skipRename) {\r\n var name = $(this).attr(\"name\");\r\n name = \"__origami_ignore__\" + name;\r\n\r\n $(this).attr(\"name\", name);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nfunction clearHiddenInputField(parentElement) {\r\n //For everything but Radio Buttons, do this\r\n $(\":input\", parentElement)\r\n .not(\":button,:submit,:reset,:radio\")\r\n .val(\"\")\r\n .removeAttr(\"checked\") //Clear checked on checkbox elements\r\n .removeAttr(\"selected\");\r\n $(\"input:radio:checked\", parentElement).each(function () {\r\n clearRadio($(this), true);\r\n });\r\n}\r\n\r\nfunction clearRadio($option, isHiddenInput = false) {\r\n var groupName = $option.attr(\"name\");\r\n var previouslyChecked = $option.attr(\"previouslyChecked\") === \"true\";\r\n var li = $option.closest('li');\r\n var hiddenText = li.find('input[type=\"text\"][name=\"' + groupName.substring(2) + '\"]');\r\n\r\n if (li.length === 1) {\r\n var liClass = li.attr('class') || '';\r\n\r\n if (isHiddenInput || (liClass.split(' ').indexOf('required') === -1 && previouslyChecked)) {\r\n $option.prop(\"checked\", false);\r\n if ($option.is(':visible')) {\r\n $option.trigger(\"change\");\r\n }\r\n if (hiddenText.length === 1) {\r\n hiddenText[0].value = null;\r\n hiddenText.trigger(\"change\");\r\n }\r\n }\r\n else if (hiddenText.length === 1) {\r\n hiddenText[0].value = $option[0].value;\r\n hiddenText.trigger(\"change\");\r\n }\r\n }\r\n $option.parent().parent().children().children('input[type=\"radio\"][name=\"' + groupName + '\"]').each(function () {\r\n $(this).attr(\"previouslyChecked\", String($(this).is(\":checked\")));\r\n });\r\n}\r\n\r\nfunction restoreHiddenPanels(formID) {\r\n\r\n $(\"div.panel.renamedNames :input[name]:not(:button,:submit,:reset)\").each(function () {\r\n\r\n var name = $(this).attr(\"name\");\r\n if (!name.startsWith(\"__origami_ignore__\"))\r\n return;\r\n\r\n $(this).attr(\"name\", name.substring(18));\r\n\r\n });\r\n\r\n $(\"div.panel.renamedNames\").removeClass(\"renamedNames\");\r\n}\r\n\r\nvar _skipValidateGridPanels = false;\r\n\r\nfunction resolveGridProperties(triggerPanelID, id, trigger, statusTarget) {\r\n var targetPanel = $('div.panel[data-panelkey=\"' + triggerPanelID + '\"]');\r\n\r\n var propsData = {};\r\n propsData[\"childdomain\"] = $(trigger).attr('data-domain');\r\n\r\n $.each($(trigger)[0].attributes, function (i, attrib) {\r\n if (!attrib.name.startsWith(\"data-gridprop-\"))\r\n return;\r\n\r\n propsData[attrib.name.substring(14)] = attrib.value;\r\n });\r\n\r\n propsData[\"data-origamiurl\"] = $(targetPanel).attr('data-origamiurl');\r\n\r\n var gridPropsUrl = appendTPAClientID(getServerAppRoot() + getControllerName() + \"/ResolveGridProperties/\" + id);\r\n $.ajax({\r\n type: 'POST',\r\n url: gridPropsUrl,\r\n dataType: 'json',\r\n data: AddAntiForgeryToken(propsData),\r\n async: true,\r\n success: function (result) {\r\n\r\n if (result.status == 'success') {\r\n $(trigger).closest('div.panel').remove();\r\n var newURL = $(targetPanel).attr('data-origamiurl');\r\n\r\n var resultOrigamiUrl = result.results.find(item => item.Key === 'data-origamiurl');\r\n //ORDEV-37132 - GridPanel SaveAndContinue=SaveInline causing error on incident when incident is new.\r\n //This code modifies the url to attach a parentDomainPrimaryKeyValue value.\r\n //In this particular instance, when creating a new Incident, we had an InvolvedParty gridpanel with SaveAndContinue=SaveInline.\r\n //InvolvedParties were being added as orphans without a reference to the IncidentID that was just created via btn to add new InvolvedParty.\r\n //This code fixes this issue.\r\n if (resultOrigamiUrl && newURL !== resultOrigamiUrl.Value) {\r\n newURL = resultOrigamiUrl.Value;\r\n }\r\n\r\n for (var key in result.results) {\r\n var resultItem = result.results[key];\r\n if (newURL.toLowerCase().indexOf(resultItem.Key.toLowerCase() + \"=\") >= 0) {\r\n newURL = insertParameterToUrl(removeParameterFromUrl(newURL, resultItem.Key), resultItem.Key, resultItem.Value);\r\n }\r\n }\r\n\r\n $(targetPanel).attr('data-origamiurl', newURL);\r\n $(targetPanel).data('origamiurl', newURL);\r\n $(targetPanel).removeClass('hidden-saveAndContinue');\r\n ajaxLoadPanel($(targetPanel), true);\r\n markLoaderStopped(statusTarget);\r\n }\r\n else {\r\n markLoaderStopped(statusTarget);\r\n setSaveAndContinueInlineError(result.message, trigger, statusTarget, triggerPanelID);\r\n }\r\n },\r\n error: function (xhr: any, status, error) {\r\n try {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n console.log(err);\r\n markLoaderStopped(statusTarget);\r\n setSaveAndContinueInlineError(\"Unable to resolve grid properties\", trigger, statusTarget, triggerPanelID);\r\n }\r\n catch {\r\n markLoaderStopped(statusTarget);\r\n setSaveAndContinueInlineError(\"Unable to resolve grid properties\", trigger, statusTarget, triggerPanelID);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction saveAndContinueInline(trigger, formid, validateRequired, applyValidations) {\r\n var triggerPanelID = $(trigger).attr('data-panelid');\r\n var statusTarget = $(trigger).closest('div.panel');\r\n\r\n if ($('form#' + formid)[0].hasAttribute('data-recordid')) {\r\n resolveGridProperties(triggerPanelID, $('form#' + formid).attr('data-recordid'), trigger, statusTarget);\r\n markLoaderRunning(statusTarget, \"ld-ring\", \"ld-spin\", \"ld-over\");\r\n return;\r\n }\r\n\r\n onClickSubmit();\r\n\r\n if (validateRequired) {\r\n if ($('input[name=\"_validateRequiredContinue\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_validateRequiredContinue\"]').val(validateRequired);\r\n }\r\n\r\n if (applyValidations) {\r\n if ($('input[name=\"_applyValidationsContinue\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_applyValidationsContinue\"]').val(applyValidations);\r\n }\r\n\r\n if ($('input[name=\"_ContinueToEditAfterSave\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_ContinueToEditAfterSave\"]').val('true');\r\n\r\n if (!beforeSaveAndContinueSubmit())\r\n return false;\r\n\r\n markLoaderRunning(statusTarget, \"ld-ring\", \"ld-spin\", \"ld-over\");\r\n\r\n var ajaxURL = $('form#' + formid).attr(\"action\");\r\n ajaxURL = appendTPAClientID(ajaxURL);\r\n ajaxURL = insertParameterToUrl(ajaxURL, 'json', 'true');\r\n\r\n var ajaxSaveInlineSuccessFunction = function (data) {\r\n console.log(data);\r\n $('input[name=\"_ContinueToEditAfterSave\"]').val('false');\r\n $('input[name=\"_validateRequiredContinue\"]').remove();\r\n $('input[name=\"_applyValidationsContinue\"]').remove();\r\n $(statusTarget).find(\"div.inlineSaveError\").remove();\r\n afterSaveAndContinueSuccess(data);\r\n setFormID(formid, data.ID);\r\n setFormAutoGenerateValueFromInline(formid, data);\r\n resolveGridProperties(triggerPanelID, data.ID, trigger, statusTarget);\r\n }\r\n var ajaxSaveInlineFailureFunction = function (data) {\r\n markLoaderStopped(statusTarget);\r\n $('input[name=\"_ContinueToEditAfterSave\"]').val('false');\r\n $('input[name=\"_validateRequiredContinue\"]').remove();\r\n $('input[name=\"_applyValidationsContinue\"]').remove();\r\n setSaveAndContinueInlineError(data.messageHtml, trigger, statusTarget, triggerPanelID);\r\n afterSaveAndContinueFailure(data);\r\n }\r\n\r\n _skipValidateGridPanels = true;\r\n clearStatusMessage();\r\n $('form#' + formid).find(\":input.input-validation-error\").removeClass('input-validation-error');\r\n submitFormByID(formid, ajaxURL, ajaxSaveInlineSuccessFunction, ajaxSaveInlineFailureFunction);\r\n if (!afterSaveAndContinueSubmit())\r\n return false;\r\n}\r\n\r\nfunction setSaveAndContinueInlineError(errorHtml, trigger, statusTarget, triggerPanelID) {\r\n statusErrorMessage(errorHtml, false, true);\r\n decorateValidationErrorLinks();\r\n if ($(statusTarget).find(\"div.inlineSaveError\").length == 0)\r\n $(trigger).after(\"
An error occurred. See error message at the top of this page for more details.
\");\r\n}\r\n\r\nfunction scrollToTop() {\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n}\r\n\r\nfunction markLoaderRunning(target, loaderIcon, loaderAnimation, loaderPos) {\r\n //ld-over and ld-ext-right\r\n\r\n $(target).addClass(loaderPos);\r\n\r\n if ($(target).children(\"div.ld\").length == 0)\r\n $(target).prepend('
');\r\n\r\n if ($(target).filter(\"body\").length > 0 && loaderPos == \"ld-over\")\r\n $(target).children(\"div.ld\").first().attr(\"style\", \"font-size:500%;\");\r\n else if ($(target).filter(\"div.btn\").length == 0 && $(target).filter(\"button\").length == 0 && loaderPos == \"ld-over\")\r\n $(target).children(\"div.ld\").first().attr(\"style\", \"font-size:200%;\");\r\n else\r\n $(target).children(\"div.ld\").first().attr(\"style\", \"font-size:110%;\");\r\n\r\n $(target).addClass('running');\r\n}\r\n\r\nfunction markLoaderStopped(target) {\r\n $(target).removeClass('running');\r\n}\r\n\r\nfunction changeLoaderIcon(target, loaderIcon, loaderAnimation) {\r\n if ($(target).children(\"div.ld\").length == 0)\r\n return;\r\n\r\n var ldDiv = $(target).children(\"div.ld\").first();\r\n\r\n $(ldDiv).attr(\"class\", \"ld\");\r\n\r\n if (typeof loaderIcon != 'undefined' && loaderIcon !== '')\r\n $(ldDiv).addClass(loaderIcon);\r\n\r\n if (typeof loaderAnimation != 'undefined' && loaderAnimation !== '')\r\n $(ldDiv).addClass(loaderAnimation);\r\n}\r\n\r\nfunction setFormAutoGenerateValueFromInline(formid, data) {\r\n if (data == null)\r\n return;\r\n\r\n if (typeof data.autoGenerateVals == 'undefined' || data.autoGenerateVals == null)\r\n return;\r\n\r\n var formTag = $('form#' + formid);\r\n\r\n for (var key in data.autoGenerateVals) {\r\n $(formTag).find(\"input.AutoNumberField[name='\" + key + \"']\").each(function (k, t) {\r\n if ($(t).val() == \"\")\r\n $(t).val(data.autoGenerateVals[key]).attr(\"disabled\", \"disabled\");\r\n });\r\n }\r\n}\r\n\r\nfunction setFormID(formid, id: number) {\r\n if (id <= 0)\r\n return;\r\n\r\n var formTag = $('form#' + formid);\r\n if ($(formTag).length > 0) {\r\n var formAction = $(formTag).attr('action');\r\n $(formTag).attr('data-recordid', id);\r\n if (formAction.toLowerCase().endsWith('/save') || formAction.toLowerCase().indexOf('/save?') >= 0) {\r\n var newFormAction = '/Origami/' + getControllerName() + '/Save/' + id;\r\n if (formAction.indexOf('?') > -1)\r\n newFormAction += '?' + formAction.split('?')[1];\r\n\r\n $(formTag).attr('action', newFormAction);\r\n console.log('New Form Action Set to ' + newFormAction);\r\n }\r\n }\r\n}\r\n\r\nfunction submitSaveAndContinue(formid, autoAddDomain, validateRequired, applyValidations)\r\n{\r\n onClickSubmit();\r\n\r\n if ($('input[name=\"_ContinueToEditAfterSave\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_ContinueToEditAfterSave\"]').val('true');\r\n\r\n if (autoAddDomain) {\r\n if ($('input[name=\"_AddDomainAfterSave\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_AddDomainAfterSave\"]').val(autoAddDomain);\r\n }\r\n if (validateRequired) {\r\n if ($('input[name=\"_validateRequiredContinue\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_validateRequiredContinue\"]').val(validateRequired);\r\n }\r\n\r\n if (applyValidations) {\r\n if ($('input[name=\"_applyValidationsContinue\"]').length == 0)\r\n $('form#' + formid).append('');\r\n else\r\n $('input[name=\"_applyValidationsContinue\"]').val(applyValidations);\r\n }\r\n\r\n if (!beforeSaveAndContinueSubmit())\r\n return false;\r\n\r\n _skipValidateGridPanels = true;\r\n submitFormByID(formid);\r\n if (!afterSaveAndContinueSubmit())\r\n return false;\r\n}\r\n\r\nfunction autoAddDomainAfterLoad(domain) {\r\n console.log(\"doing auto add for Domain: \" + domain);\r\n\r\n var clicked = false;\r\n $(\"div.ajaxGridPanel\").each(function () {\r\n clicked = $(this).attr('data-clicked') === 'true';\r\n if (clicked)\r\n return;\r\n\r\n var panelDomain = $(this).data(\"domain\");\r\n if (panelDomain === domain) {\r\n\r\n // see if the ajax grid has any data.. if it does, then this is likely a repeat\r\n if ($(\"table.dataGrid tbody tr\", $(this)).length) {\r\n clicked = true;\r\n console.log(\"data already exists in data grid. exiting auto-add.\");\r\n return;\r\n }\r\n\r\n // find a new link\r\n var newLink = $(\"a.panelaction_new\", $(this));\r\n if (newLink.length) {\r\n clicked = true;\r\n $(this).attr('data-clicked', 'true');\r\n newLink.trigger(\"click\");\r\n return;\r\n }\r\n }\r\n\r\n });\r\n\r\n $(\"div[id^='gridpanel_']\").each(function () {\r\n clicked = $(this).attr('data-clicked') === 'true';\r\n if (clicked)\r\n return;\r\n\r\n var panelDomain = $(this).parent().data(\"refreshDomain\");\r\n if (panelDomain === domain) {\r\n\r\n // see if the ajax grid has any data.. if it does, then this is likely a repeat\r\n if ($(\"table.dataGrid tbody tr\", $(this)).length) {\r\n clicked = true;\r\n console.log(\"data already exists in data grid. exiting auto-add.\");\r\n return;\r\n }\r\n\r\n // find a new link\r\n var newLink = $(\"a.panelaction_new\", $(this));\r\n if (newLink.length) {\r\n $(this).attr('data-clicked', 'true');\r\n clicked = true;\r\n newLink.trigger(\"click\");\r\n return;\r\n }\r\n }\r\n\r\n });\r\n\r\n if (!clicked)\r\n console.log(\"Could not find new link for domain: \" + domain);\r\n}\r\n\r\nfunction autoSaveAfterLoad() {\r\n console.log(\"Performing auto save after load\");\r\n\r\n // If the page is loaded via back, forward, or reload, don't attempt to auto save.\r\n if (!isNavigationTypeNavigate()) {\r\n console.log(\"Preventing auto save due to navigation method.\");\r\n return;\r\n }\r\n\r\n // Check for potential error status and prevent auto save if found. This prevents a failure during save to continually loop auto saving.\r\n var statusMessage = $(\"#message\");\r\n var isErrorStatus = statusMessage.hasClass(\"error\") && !statusMessage.hasClass(\"hidden\");\r\n if (isErrorStatus) {\r\n console.log(\"Preventing auto save due to error status.\");\r\n return;\r\n }\r\n\r\n // Check for page being fully initialized, if not, wait for a bit and try again\r\n if (!pageFullyInitialized) {\r\n setTimeout(function () {\r\n autoSaveAfterLoad();\r\n }, 200);\r\n } else {\r\n //\r\n // On save submit populateFormRequiredFieldsList is called, which identifies fields that are required on the form\r\n // If a field is hidden it doesn't consider it required, however, fields that are hidden via toggle formula can be in the middle of an animation\r\n // and not yet fully hidden if the save submit is triggered before they've had a chance to finish\r\n // Therefore, waiting for a bit for any UI animations to complete\r\n setTimeout(function () {\r\n autoSaveAfterFullyInitialized();\r\n }, 200);\r\n }\r\n}\r\n\r\nfunction autoSaveAfterFullyInitialized() {\r\n if (!pageFullyInitialized) {\r\n console.log(\"Attempted to perform autoSave before the page was fully initialized.\");\r\n return;\r\n }\r\n\r\n console.log(\"Performing auto save\");\r\n\r\n // First, try to find the save and close action\r\n var saveAction = $(\"button#useraction_saveandclose\");\r\n if (saveAction.length !== 1) {\r\n // If save and close is not found, try to find the save action\r\n saveAction = $(\"button#useraction_save\");\r\n }\r\n\r\n if (saveAction.length === 1) {\r\n // display overlay so it's clear to the user that the system is attempting to save\r\n $(\".auto-save-overlay\").show();\r\n\r\n saveAction.trigger(\"click\");\r\n console.log(\"Auto save triggered.\");\r\n } else {\r\n console.log(\"Could not auto save: Failed to find save and close or save action.\");\r\n }\r\n}\r\n\r\nfunction AddSaveAndContinueButton(buttonText, formid)\r\n{\r\n if(typeof formid === 'undefined' || formid === null)\r\n formid = \"entryForm\";\r\n\r\n if (typeof buttonText === 'undefined' || buttonText === null)\r\n buttonText = \"Save Changes And Continue Editing\";\r\n\r\n $('button#useraction_save').closest('li').before('
  • ');\r\n\r\n}\r\n\r\nvar beforeSubmitFormActionHandlers = [];\r\nvar beforeSubmitFormAction = null;\r\nvar onFormSubmit = null;\r\nfunction isInterviewGoingBack() {\r\n var val = $(\"input[name=_OrigamiInterviewAction]\").val();\r\n if (val === \"prev\")\r\n return true;\r\n else\r\n return false;\r\n}\r\n\r\nfunction addBeforeSubmitFormHandler(fn) {\r\n beforeSubmitFormActionHandlers.push(fn);\r\n}\r\n\r\nfunction validateBeforeSubmitFormActions() {\r\n\r\n //don't bother with validating panels if in interview, and step is going backwards\r\n if (isInterviewGoingBack())\r\n return true;\r\n\r\n if (Array.isArray(beforeSubmitFormActionHandlers) && beforeSubmitFormActionHandlers.length > 0) {\r\n for (var i = 0; i < beforeSubmitFormActionHandlers.length; i++) {\r\n if (typeof beforeSubmitFormActionHandlers[i] === 'function') {\r\n if (!beforeSubmitFormActionHandlers[i].call())\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nvar _expandTopLevelPanels = false;\r\n\r\n\r\nfunction prepareFormForSubmission(formID) {\r\n var submitForm = true;\r\n\r\n if (!validateBeforeSubmitFormActions()) {\r\n submitForm = false;\r\n return submitForm;\r\n }\r\n\r\n if (!validateDynamicMinMaxFields()) {\r\n submitForm = false;\r\n return submitForm;\r\n }\r\n\r\n if (!validateDynamicRequiredFields()) {\r\n submitForm = false;\r\n return submitForm;\r\n }\r\n\r\n if (!validateGridPanels()) {\r\n submitForm = false;\r\n return submitForm;\r\n }\r\n\r\n if (_expandTopLevelPanels)\r\n expandTopLevelCollapsedPanels(formID);\r\n\r\n clearHiddenPanels(formID);\r\n\r\n if (!goBackwards) {\r\n populateFormRequiredFieldsList(formID);\r\n populateRequiredFormulaMessage(formID);\r\n }\r\n\r\n goBackwards = false;\r\n\r\n // remove all \"disabled\" so elements submit on post (but do it in a way that allows these elements to be re-disabled later)\r\n //ORDEV-38132 ignore sensitive fields that are masked\r\n const disabledInputs = $(\"li.disabled :input\").filter(function () {\r\n // if not sensitive, it's normal, include it\r\n return !$(this).hasClass('sensitiveField')\r\n // if it has this class, we want to save the value, so include it\r\n || $(this).hasClass('sensitiveFieldChanged')\r\n // if it has an unmasked button sibling, we want to save the value, so include it\r\n || $(this).siblings('button.sensitiveFieldButton.unmasked').length > 0;\r\n });\r\n disabledInputs.addClass(\"redisableLater\");\r\n disabledInputs.removeAttr(\"disabled\");\r\n\r\n //any disabled child code dependencies should post\r\n $(\":input.codeDepDisabled\").removeAttr(\"disabled\");\r\n\r\n return submitForm;\r\n}\r\n\r\nfunction submitFormByID(formID: string, ajaxURL?: string, ajaxSuccessFunction?: any, ajaxFailureFunction?: any, includeQueryString: boolean = false) {\r\n var submitFunction = function () {\r\n if (ajaxURL === undefined) {\r\n // append tpaclientid to the url\r\n var selector = \"#\" + formID;\r\n var form = $(selector);\r\n\r\n var url = form.attr(\"action\");\r\n url = appendTPAClientID(url);\r\n\r\n if (includeQueryString) {\r\n // Get current query string values\r\n var queryString = window.location.search;\r\n if (queryString) {\r\n // Append query string to the form action URL\r\n if (url.indexOf('?') === -1) {\r\n url += queryString;\r\n } else {\r\n url += '&' + queryString.substring(1);\r\n }\r\n }\r\n }\r\n\r\n form.attr(\"action\", url);\r\n\r\n $('#ajax_processing').addClass(\"submit\").show();\r\n form.trigger(\"submit\");\r\n }\r\n else {\r\n if (ajaxSuccessFunction === undefined) {\r\n return \"If you define an ajax URL, you must also define a function to run when the ajax call succeeds.\";\r\n }\r\n\r\n if (ajaxFailureFunction === undefined) {\r\n return \"If you define an ajax URL, you must also define a function to run when the ajax call fails.\";\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: ajaxURL,\r\n dataType: 'json',\r\n data: $(\"#\" + formID).serialize(),\r\n async: true,\r\n success: function (data) {\r\n if (data.status === 'success') {\r\n ajaxSuccessFunction(data);\r\n }\r\n else {\r\n ajaxFailureFunction(data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Redisable the inputs that were enabled for submission\r\n $(\".redisableLater\").prop(\"disabled\", true);\r\n $(\".redisableLater\").attr(\"disabled\", \"disabled\");\r\n }\r\n\r\n if (typeof onFormSubmit === \"function\") {\r\n onFormSubmit(submitFunction);\r\n }\r\n\r\n submitFormAction(function () {\r\n if (prepareFormForSubmission(formID)) {\r\n if (beforeSubmitFormAction != null) {\r\n if (!beforeSubmitFormAction(submitFunction))\r\n return;\r\n }\r\n\r\n submitFunction();\r\n }\r\n });\r\n}\r\n\r\nfunction submitFormAction(formAction) {\r\n if (isExpirationCookieValid()) {\r\n formAction();\r\n }\r\n else {\r\n // first validate that the cookie is still valid\r\n var checkUrl = getServerAppRoot() + \"Account/CheckCookie\";\r\n $.getJSON(checkUrl, function (data) {\r\n\r\n if (data.status == \"success\") {\r\n\r\n if (data.authenticated == \"authenticated\") {\r\n formAction();\r\n\r\n }\r\n else if (data.authenticated == \"sso\") {\r\n\r\n // open a new browser window instead of a thickbox to use\r\n var relayUrl = getServerAppRoot() + \"Account/TimeoutMessage?clientID=\" + getCurrentClientID();\r\n window.open(relayUrl, \"Origami.TimeoutReturnPage\", \"toolbar=no, status=no, location=no\");\r\n\r\n }\r\n else if (data.authenticated == \"expired\" && data.issilentlogin == \"true\") {\r\n var relayUrl = getServerAppRoot() + \"Account/Inactive\";\r\n setWindowLocationOnce(relayUrl, false);\r\n }\r\n else {\r\n\r\n // open a new window to a login page\r\n var timeoutUrl = getServerAppRoot() + \"Account/TimeoutLogin?account=\" +\r\n encodeURIComponent(getCurrentAccountLogin()) + \"&clientID=\" + getCurrentClientID();\r\n\r\n openThickboxPopup(timeoutUrl, \"timeoutLogin\");\r\n\r\n }\r\n\r\n } else {\r\n\r\n statusErrorMessage(\"Failed to validate session cookie.\");\r\n formAction();\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction validateDynamicMinMaxFields() {\r\n\tvar dynamicFields = '';\r\n\t$(\"input[data-origami-minvalueformula]\").each(function () {\r\n\t\tvar test = $(this).val();\r\n\t\tif (test == null) return;\r\n\t\tif (test.trim().length == 0) return;\r\n\r\n var testNum = GetRawInvariantNumber(test);\r\n var min = parseFloat($(this).data(\"origami-minvalue\"));\r\n if (isNaN(min) || min <= testNum) return;\r\n\r\n var message = $(this).data(\"origami-required-formula-message\");\r\n\r\n\t\tif (message != null) {\r\n\t\t\tdynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//get the \"text\" from only the immediate label node in the dom and ignore the other text.\r\n\t\tmessage = $(\"label\", $(this).closest(\"li\")).clone().children().remove().end().text();\r\n\t\tif (message != null)\r\n\t\t\tmessage = message.replace('*', '');\r\n\r\n\t\tif (message == null || message.trim().length == 0)\r\n\t\t\tmessage = 'Value below minimum (' + $(this).attr('name') + ')';\r\n\t\telse\r\n\t\t\tmessage = message + ': Value below minimum.';\r\n\r\n\t\tdynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n });\r\n\r\n $(\"input[data-origami-maxvalueformula]\").each(function () {\r\n var test = $(this).val();\r\n if (test == null) return;\r\n if (test.trim().length == 0) return;\r\n\r\n var testNum = GetRawInvariantNumber(test);\r\n var max = parseFloat($(this).data(\"origami-maxvalue\"));\r\n if (isNaN(max) || max >= testNum) return;\r\n\r\n var message = $(this).data(\"origami-required-formula-message\");\r\n\r\n if (message != null) {\r\n dynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n return;\r\n }\r\n //get the \"text\" from only the immediate label node in the dom and ignore the other text.\r\n message = $(\"label\", $(this).closest(\"li\")).clone().children().remove().end().text();\r\n if (message != null)\r\n message = message.replace('*', '');\r\n\r\n if (message == null || message.trim().length == 0)\r\n message = 'Value above maximum (' + $(this).attr('name') + ')';\r\n else\r\n message = message + ': Value above maximum.';\r\n\r\n dynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n });\r\n\r\n\tif (dynamicFields === '')\r\n\t\treturn true;\r\n\r\n\tstatusMessageHtml('error', 'Please correct the following:' + dynamicFields);\r\n\treturn false;\r\n}\r\n\r\nfunction validateDynamicRequiredFields() {\r\n var dynamicFields = '';\r\n $(\":data('origami-dynamic-required')\").each(function () {\r\n $(this).removeClass(\"input-validation-error\");\r\n\r\n var required = $(this).data(\"origami-dynamic-required\");\r\n if (required != \"true\")\r\n return;\r\n\r\n var test = $(this).val();\r\n if (test != null && test.trim().length > 0)\r\n return;\r\n\r\n $(this).addClass(\"input-validation-error\");\r\n var message = $(this).data(\"origami-required-formula-message\");\r\n\r\n if (message != null) {\r\n dynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n return;\r\n }\r\n //get the \"text\" from only the immediate label node in the dom and ignore the other text.\r\n message = $(\"label\", $(this).closest(\"li\")).clone().children().remove().end().text();\r\n if (message != null)\r\n message = message.replace('*', '');\r\n\r\n if (message == null || message.trim().length == 0)\r\n message = 'Required field missing (' + $(this).attr('name') + ')';\r\n else\r\n message = message + ': A value is required.';\r\n\r\n dynamicFields += '
    ' + message.escapeHTML() + '
    ';\r\n });\r\n\r\n if (dynamicFields === '')\r\n return true;\r\n\r\n statusMessageHtml('error', 'Please correct the following:' + dynamicFields);\r\n return false;\r\n}\r\n\r\nfunction validateGridPanels() {\r\n if (_skipValidateGridPanels) {\r\n _skipValidateGridPanels = false;\r\n return true;\r\n }\r\n\r\n $(\":data('origami-dynamic-required')\").each(function () {\r\n });\r\n\r\n var isValid = true;\r\n $(\".panel-validation:visible\").each(function () {\r\n\r\n var validationFormula = $(this).data('validationformula');\r\n if (validationFormula) {\r\n var items = createItemsArrayFromGridPanelTable($(this));\r\n var validationResult = eval(validationFormula);\r\n if (!validationResult) {\r\n var validationMessage = $(this).data('validationmessage');\r\n statusMessageHtml('error', validationMessage);\r\n isValid = false;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n}\r\n\r\nfunction createItemsArrayFromGridPanelTable(gridPanel) {\r\n var items = [];\r\n\r\n try {\r\n var table = $(\"table.dataGrid\", gridPanel);\r\n var columns = [];\r\n $(\"thead tr th\", table).each(function () {\r\n var fieldName = $(this).data(\"fieldname\");\r\n columns.push(fieldName || \"\");\r\n });\r\n\r\n $(\"tbody tr:not([class*='editablegrid'])\", table).each(function (rowIndex, row) {\r\n var item = {};\r\n $(\"td\", row).each(function (cellIndex, cell) {\r\n var fieldValue = $(this).data(\"fieldvalue\");\r\n var column = columns[cellIndex];\r\n item[column] = fieldValue;\r\n });\r\n items.push(item);\r\n });\r\n\r\n return items;\r\n }\r\n catch (error) {\r\n return items;\r\n }\r\n}\r\n\r\nfunction populateRequiredFormulaMessage(formID) {\r\n\r\n var placeholder = $(\"#\" + formID + \" input[name=_OrigamiFormRequiredFormulaMessages]\");\r\n if (placeholder.length == 0)\r\n return;\r\n\r\n if (placeholder.length > 1)\r\n placeholder.not(placeholder.first()).remove();\r\n\r\n var requiredMessageList = [];\r\n $(\"#\" + formID + \" li.required:visible input, #\" + formID + \" li.required:visible select, #\" + formID + \" li.required:visible textarea\").each(function () {\r\n\r\n var formulaMessage = $(this).data('origami-required-formula-message');\r\n if (typeof formulaMessage == 'undefined' || formulaMessage == '')\r\n return true;\r\n\r\n var name: any = $(this).attr('name');\r\n if (typeof name !== 'undefined' && name !== false) {\r\n if (name.startsWith(\"__multiselect_\")) {\r\n var checkName = name.substring(14);\r\n if ($.inArray(checkName, requiredMessageList) == -1)\r\n requiredMessageList.push({ FieldName: checkName, Message: formulaMessage });\r\n }\r\n else {\r\n var isHidden = document.getElementById(name) && (document.getElementById(name).style.display == \"none\" || document.getElementById(name).style.visibility == \"hidden\");\r\n if ($(this).is(\"input.lookupID\") || !isHidden)\r\n requiredMessageList.push({ FieldName: name, Message: formulaMessage });\r\n }\r\n }\r\n });\r\n\r\n if (requiredMessageList.length == 0)\r\n placeholder.val(\"\");\r\n else\r\n placeholder.val(window.JSON.stringify(requiredMessageList));\r\n}\r\n\r\nfunction populateFormRequiredFieldsList(formID) {\r\n\r\n if ($(\"input[name='BypassRequiredFieldsDuringSubmission']\").length > 0 && $(\"input[name='BypassRequiredFieldsDuringSubmission']\").val() == \"True\")\r\n return;\r\n\r\n var placeholder = $(\"#_OrigamiFormRequiredFields\");\r\n if (placeholder.length == 0)\r\n return;\r\n\r\n //JIRA 8240 - Expand any collapsed panels w/required fields so required fields are added to requiredList\r\n expandCollapsedPanelsWithRequiredFields(formID);\r\n\r\n var requiredList = [];\r\n var required = $(\"#\" + formID +\r\n \" li.required:visible input, #\" + formID +\r\n \" li.required:visible select, #\" + formID +\r\n \" li.required:visible textarea, #\" + formID +\r\n \" li.required:visible div.fr-box div.fr-wrapper div.fr-element.fr-view\").each(function () {\r\n var name: any = $(this).attr('name');\r\n\r\n //JIRA 8240 - Textarea elements rendered using the new RTF control are hidden and overlayed.\r\n // If a field renders as a textarea and makes use of the new RTF control, get name of underlying text area element\r\n var visibleRTF = false;\r\n if ($(this).is('div.fr-box div.fr-wrapper div.fr-element.fr-view:visible')) {\r\n name = $(this).closest('li.required').find('textarea').attr('name'); //Get name from underlying textarea element\r\n visibleRTF = true;\r\n }\r\n\r\n if (typeof name !== 'undefined' && name !== false) {\r\n if (name.startsWith(\"__multiselect_\")) {\r\n var checkName = name.substring(14);\r\n if ($.inArray(checkName, requiredList) == -1)\r\n requiredList.push(checkName);\r\n }\r\n else {\r\n var isHidden = document.getElementById(name) && (document.getElementById(name).style.display == \"none\" || document.getElementById(name).style.visibility == \"hidden\");\r\n\r\n //JIRA 8240 - Override hidden when underlying element is hidden but visibleRTF is not\r\n if (isHidden && visibleRTF)\r\n isHidden = false;\r\n\r\n if ($(this).is(\"input.lookupID\") || !isHidden)\r\n requiredList.push(name);\r\n }\r\n }\r\n });\r\n\r\n if (requiredList.length == 0)\r\n placeholder.val(\"\");\r\n else\r\n placeholder.val(requiredList.join());\r\n}\r\n\r\nfunction changeMasterForMultiCodeDependency(input, master, dependency) {\r\n var dependencyValue = $(master).val();\r\n\r\n //ORDEV-11173\r\n if ((master.length > 1) && ('radio' === $(master[0]).attr('type')))\r\n dependencyValue = master.filter(':checked').val();\r\n\r\n var filters = $(input).data(\"filters\");\r\n var dependencyparam = dependency;\r\n if (filters != null && filters.indexOf('_codedependencytypeid') > -1)\r\n dependencyparam = '_codedependencymasterid';\r\n\r\n if (isMasterMultiSelect(input)) {\r\n var masterInputName = getMasterInputName(input, dependency);\r\n if (masterInputName) {\r\n var multiSelectValues = [];\r\n $.each($(\"input[name='\" + masterInputName + \"']:checked,select[name='\" + masterInputName + \"']\"), function () {\r\n var itemValue = $(this).val();\r\n if (Array.isArray(itemValue)) {\r\n Array.prototype.push.apply(multiSelectValues, itemValue);\r\n } else {\r\n multiSelectValues.push(itemValue);\r\n }\r\n });\r\n\r\n dependencyValue = multiSelectValues.join(\",\");\r\n }\r\n }\r\n\r\n var rowPrefix = $(input).closest(\"tr\").data(\"prefix\");\r\n if (rowPrefix) {\r\n dependencyparam = dependencyparam.replace(rowPrefix + \".\", \"\");\r\n }\r\n\r\n filters = insertParameter(filters, dependencyparam, dependencyValue);\r\n $(input).data(\"filters\", filters);\r\n\r\n var url = $(input).data(\"lookupurl\") + '?filters=' + encodeURIComponent(filters);\r\n //console.log(url);\r\n\r\n $.getJSON(url, function (data) {\r\n\r\n //console.log('Number of applicable codes: ' + data.length);\r\n\r\n $(\"li\", input).each(function () {\r\n var check = $(\":checkbox\", this);\r\n var id = check.attr(\"value\");\r\n var found = false;\r\n for (var i in data) {\r\n var row = data[i];\r\n if (row.ID == id)\r\n found = true;\r\n }\r\n\r\n if (!found) {\r\n check.prop(\"checked\", false).trigger(\"change\");\r\n $(this).hide();\r\n } else {\r\n $(this).show();\r\n }\r\n });\r\n\r\n\r\n var isMultiSelect = false;\r\n var name: any = $(input).attr('name');\r\n if (typeof name !== 'undefined' && name !== false) {\r\n if (name.startsWith(\"__multiselect_\")) {\r\n isMultiSelect = true;\r\n }\r\n }\r\n\r\n $(\"option\", input).each(function () {\r\n var option = $(this);\r\n var id = option.attr(\"value\");\r\n var selectElement = option.closest('select');\r\n\r\n if (isMultiSelect && selectElement.val() !== null && selectElement.val() !== '') {\r\n var currentValues = selectElement.val() || [];\r\n\r\n var newValues = data.map(row => row.ID);\r\n var combinedValues = Array.from(new Set([...currentValues, ...newValues]));\r\n\r\n // Skip processing if all values are already selected\r\n if (combinedValues.length === currentValues.length) {\r\n return;\r\n }\r\n }\r\n\r\n var found = false;\r\n for (var i in data) {\r\n var row = data[i];\r\n if (row.ID == id) {\r\n found = true;\r\n } \r\n }\r\n\r\n if (!found) {\r\n\t\t\t\tif(isMultiSelect){\r\n\t\t\t\t\toption.prop({disabled: true});\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\toption.prop({disabled: true}).trigger(\"change\");\r\n\t\t\t\t}\r\n $(this).remove();\r\n } else {\r\n $(this).show();\r\n }\r\n });\r\n\r\n //label contains:\r\n // [ ] Child Check Box A\r\n // [ ] Child Check Box B\r\n // [ ] ... \r\n $(\"label\", input).each(function () {\r\n\r\n var check = $(\":checkbox\", this);\r\n var id = check.attr(\"value\");\r\n var found = false;\r\n for (var i in data) {\r\n var row = data[i];\r\n if (row.ID === id) {\r\n found = true;\r\n }\r\n }\r\n\r\n var br = $(this).next();\r\n if (!found) {\r\n check.prop(\"checked\", false).trigger(\"change\");\r\n $(this).prop({ disabled: true });\r\n if (br !== null && br !== undefined && br.length > 0 && br.is('BR')) {\r\n br.hide(); //each label is followed by the BR. Eliminate that extra spacing when removing an individual UI checkbox.\r\n }\r\n $(this).hide();\r\n } else {\r\n $(this).show();\r\n if (br !== null && br !== undefined && br.length > 0 && br.is('BR')) {\r\n br.show(); //each label is followed by the BR. Eliminate that extra spacing when removing an individual UI checkbox.\r\n }\r\n }\r\n }); //end for each \"label\" which is the parent of an individual checkbox\r\n\r\n window.setTimeout(function () {\r\n $('.chosen-select').trigger('chosen:updated');\r\n }, 750);\r\n });\r\n}\r\n\r\nfunction isMasterMultiSelect(input) {\r\n\r\n var isMasterMultiSelectStr = $(input).data(\"masterismultiselect\");\r\n return (isMasterMultiSelectStr && isMasterMultiSelectStr.toLowerCase()) === \"true\";\r\n}\r\n\r\nfunction getMasterInputName(input, dependency) {\r\n if (!dependency) {\r\n dependency = $(input).data(\"dependency\");\r\n if (!dependency)\r\n return \"\";\r\n }\r\n\r\n if (isMasterMultiSelect(input)) {\r\n dependency = \"__multiselect_\" + dependency;\r\n }\r\n\r\n return dependency;\r\n}\r\n\r\nfunction setupCodeDependencies(subset) {\r\n //JIRA 6397\r\n if (typeof(removeFieldsFromDefinitionAlreadyInView) === 'function') {\r\n removeFieldsFromDefinitionAlreadyInView();\r\n }\r\n\r\n $(\"input.inputLookup\", subset).each(function () {\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency != undefined)\r\n setupCodeDependency(this, dependency, false, $(this).data(\"childfkfield\"));\r\n });\r\n\r\n $(\"select\", subset).each(function () {\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency != undefined)\r\n setupCodeDependency(this, dependency, true, $(this).data(\"childfkfield\"));\r\n });\r\n\r\n $(\"div.dependentrbl\", subset).each(function () {\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency != undefined)\r\n setupCodeDependency(this, dependency, false, $(this).data(\"childfkfield\"));\r\n });\r\n\r\n $(\"ul.multiselectcheckboxlist\", subset).each(function () {\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency == undefined)\r\n return;\r\n\r\n var masterInputName = getMasterInputName(this, dependency);\r\n var master = $(\"input[name='\" + masterInputName + \"'],select[name='\" + masterInputName + \"']\");\r\n if (master.length == 0)\r\n return;\r\n\r\n setupMultiCodeDependency(this, master, dependency);\r\n changeMasterForMultiCodeDependency(this, master, dependency);\r\n });\r\n\r\n $(\"div.multiselectcheckboxlist\", subset).each(function () {\r\n //the default vertical multi select control rendered as checkboxes (Plain HTML).\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency == undefined)\r\n return;\r\n\r\n var masterInputName = getMasterInputName(this, dependency);\r\n var master = $(\"input[name='\" + masterInputName + \"'],select[name='\" + masterInputName + \"']\");\r\n if (master.length === 0)\r\n return;\r\n\r\n setupMultiCodeDependency(this, master, dependency);\r\n changeMasterForMultiCodeDependency(this, master, dependency);\r\n });\r\n\r\n\r\n $(\"select.chosen-select\", subset).each(function () {\r\n var dependency = $(this).data(\"dependency\");\r\n if (dependency == undefined)\r\n return;\r\n\r\n var masterInputName = getMasterInputName(this, dependency);\r\n var master = $(\"input[name='\" + masterInputName + \"'],select[name='\" + masterInputName + \"']\");\r\n if (master.length == 0)\r\n return;\r\n\r\n setupMultiCodeDependency(this, master, dependency);\r\n changeMasterForMultiCodeDependency(this, master, dependency);\r\n });\r\n}\r\n\r\nfunction setupMultiCodeDependency(input,master,dependency)\r\n{\r\n var filters = $(input).data(\"filters\");\r\n var customcodedependency = (filters != null && filters.indexOf('_codedependencytypeid') > -1);\r\n\r\n master.on(\"change\", function () {\r\n changeMasterForMultiCodeDependency(input, this, dependency);\r\n });\r\n}\r\n\r\n//JIRA 6067\r\nvar sysMasterDepFieldIDs = ['BodyPartID', 'CauseID', 'NatureID', 'AccidentTypeID', 'PolicyID', 'CarrierID', 'PolicyCoverageID', 'AgentID', 'SecondAgentID',\r\n 'BrokerAccessGroupID', 'SecondBrokerAccessGroupID', 'BrokerOfficeID', 'JobClassificationID', 'LocationID'];\r\n\r\nfunction disableEnableDependent(dep, disable) {\r\n\tif($(dep).hasClass('locked'))\r\n\t{\r\n\t\treturn;\r\n\t}\r\n dep.disabled = disable;\r\n if(disable) {\r\n $(dep).addClass('codeDepDisabled');\r\n $(dep).attr(\"disabled\", \"disabled\");\r\n } else {\r\n $(dep).removeClass('codeDepDisabled');\r\n $(dep).removeAttr(\"disabled\");\r\n }\r\n\r\n var lookupImage = $(dep).next().next();\r\n if (lookupImage.hasClass('lookupImage')) {\r\n if (disable)\r\n lookupImage.hide();\r\n else\r\n lookupImage.show();\r\n }\r\n}\r\n//End\r\n\r\nfunction setupCodeDependency(input, dependency, dropdown, fkfield) {\r\n if (typeof(skipCodeDependencySetup) === 'function' && skipCodeDependencySetup(input))\r\n return;\r\n\r\n var formPrefix = $(input).closest(\"div.origamiform\").data(\"inputnameprefix\");\r\n var rowPrefix = $(input).closest(\"tr\").data(\"prefix\");\r\n\r\n var depName = dependency;\r\n\r\n if(typeof formPrefix == 'undefined')\r\n formPrefix = '';\r\n\r\n if (formPrefix !== null && formPrefix.trim().length > 0 && !dependency.startsWith(formPrefix + '.'))\r\n depName = formPrefix + '.' + dependency;\r\n\r\n var masterInputName = getMasterInputName(input, depName);\r\n var master = $(\"input[name='\" + masterInputName + \"'],select[name='\" + masterInputName + \"']\");\r\n if (master.length == 0)\r\n return;\r\n\r\n var filters = $(input).data(\"filters\");\r\n var onewaydependency = (filters != null && filters.indexOf('_codedependencytypeid') > -1) ||\r\n ($(input).next() && $(input).next().attr(\"name\") &&\r\n ((sysMasterDepFieldIDs.indexOf($(input).next().attr(\"name\")) >= 0) || (sysMasterDepFieldIDs.indexOf($(input).next().attr(\"name\").replace(formPrefix + \".\", \"\")) >= 0) || //JIRA 6067\r\n (sysMasterDepFieldIDs.indexOf($(input).next().attr(\"name\").replace(rowPrefix + \".\", \"\")) >= 0)));\r\n\r\n var mv = master.val();\r\n if ((master.length > 1) && ('radio' === $(master[0]).attr('type')))\r\n mv = master.filter(':checked').val();\r\n\r\n var showAllWhenParentNull = $(input).data(\"parentnullshowsall\") === 'True';\r\n var allowChildDependencyFirst = $(input).data(\"allowchildfirst\") === 'True';\r\n //JIRA 6067\r\n disableEnableDependent(input, (mv === '') && !showAllWhenParentNull && !allowChildDependencyFirst);\r\n\r\n master.on(\"change\", function () {\r\n\r\n var dependencyValue = $(this).val();\r\n if (('radio' === $(this).attr('type')) && !($(this).is(':checked')))\r\n dependencyValue = '';\r\n\r\n var filters = $(input).data(\"filters\");\r\n var dependencyparam = fkfield || dependency;\r\n if (filters != null && (filters.indexOf('_codedependencytypeid') > -1) || showAllWhenParentNull)\r\n\r\n dependencyparam = '_codedependencymasterid';\r\n\r\n if (isMasterMultiSelect(input)) {\r\n var masterInputName = getMasterInputName(input, depName);\r\n if (masterInputName) {\r\n var multiSelectValues = [];\r\n $.each($(\"input[name='\" + masterInputName + \"']:checked,select[name='\" + masterInputName + \"']\"), function () {\r\n var itemValue = $(this).val();\r\n if (Array.isArray(itemValue)) {\r\n Array.prototype.push.apply(multiSelectValues, itemValue);\r\n } else {\r\n multiSelectValues.push(itemValue);\r\n }\r\n });\r\n\r\n dependencyValue = multiSelectValues.join(\",\");\r\n }\r\n }\r\n if (formPrefix) {\r\n dependencyparam = dependencyparam.replace(formPrefix + \".\", \"\");\r\n }\r\n if (rowPrefix) {\r\n dependencyparam = dependencyparam.replace(rowPrefix + \".\", \"\");\r\n }\r\n\r\n filters = insertParameter(filters, dependencyparam, dependencyValue);\r\n $(input).data(\"filters\", filters);\r\n\r\n //JIRA 6067\r\n disableEnableDependent(input, dependencyValue === '' && !showAllWhenParentNull && !allowChildDependencyFirst);\r\n\r\n if (!dropdown) {\r\n if ($(input).hasClass('dependentrbl')) {\r\n var propName = $(input).data('propname');\r\n var idName = $(input).data('idname');\r\n\r\n //ORDEV-11172 - Preserve currently selected child radio button and restore after rebuild (if currently selected still available)\r\n var csrb = $(input).find('input[type=\"radio\"]:checked');\r\n var csv = (csrb.length === 1) ? csrb.val() : null;\r\n\r\n $(input).empty();\r\n $(input).append('');\r\n\r\n if (dependencyValue.length > 0) {\r\n var url = $(input).data(\"lookupurl\") + '?filters=' + encodeURIComponent(filters);\r\n $.getJSON(url, function (data) {\r\n for (var i = 0, k = data.length; i < k; i++) {\r\n var row = data[i];\r\n $(input).append('');\r\n\r\n var curRadio = $(input).find('input:last');\r\n\r\n //ORDEV-11172 - Restore previous selection if radio button still available\r\n if ((csv !== null) && (csv === row.ID))\r\n curRadio.attr('checked', 'checked');\r\n\r\n //ORDEV-11172 - Wire up control if toggle trigger\r\n if ($('[data-togglefield=\"' + propName + '\"]').length > 0) {\r\n curRadio.on(\"change\", function() {\r\n toggleFieldChanged(propName, false);\r\n });\r\n }\r\n\r\n //ORDEV-11172 - Wire up control if referenced by a formula\r\n if ($('[data-toggleformula*=\"{' + propName + '}\"]').length > 0) {\r\n curRadio.addClass('formulaField').on('blur change', function() {\r\n evaluateFormExpressions($(this).closest(\"div.origamiform\"));\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n $(input).find('input[id=\"rb' + idName + 'None\"]').attr('checked', 'checked');\r\n }\r\n } else {\r\n if (pageFullyInitialized) {\r\n // clear the sub field if the parent field changes\r\n $(input).val(\"\");\r\n $(input).next().val(\"\");\r\n }\r\n\r\n // possible multi-select\r\n $(\"div[data-name='\" + input.id.replace(\"_Adder\", \"\") + \"']\").html(\"\");\r\n\r\n var hrefUrl = $(input).next().next().attr(\"href\");\r\n\r\n //support lookup formula for JobClassification on editigrids \r\n var tableRow = $(input).closest('tr');\r\n if ($(tableRow).length && $(input).attr(\"alt\") === \"JobClassification\" && ($(tableRow).hasClass('editablegridnewrow') || $(tableRow).hasClass('editing')) ) {\r\n var lookupFormula = $(input).attr(\"data-lookupformula\");\r\n if (lookupFormula != null && lookupFormula.trim().length > 0 && lookupFormula.includes(\"LookupStateID\") ) {\r\n var pkid = $(input).closest(\"tr\").data(\"pkid\");\r\n var fields = origami.getFieldsFromFormula(lookupFormula);\r\n for (var i = 0; i < fields.length; i++) {\r\n dependencyparam = dependencyparam.replace(\"clonen\", \"\").replace(\"cloneh\", \"\").replace(rowPrefix + \".\", \"\");\r\n var currentField = fields[i].replace(\"clonen\", \"\").replace(\"cloneh\", \"\").replace(rowPrefix + \".\", \"\");\r\n if (currentField == dependencyparam) {\r\n hrefUrl = insertParameterToUrl(hrefUrl, \"LookupStateID\", dependencyValue);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n hrefUrl = insertParameterToUrl(hrefUrl, dependencyparam, dependencyValue);\r\n }\r\n\r\n if (dependencyparam == \"_codedependencymasterid\" && dependencyValue != '') {\r\n if (hrefUrl.indexOf('_codedependencytypeid') <= -1 && typeof ($(input).data('dependencytypeid')) != 'undefined') {\r\n var dependencyTypeID = $(input).data(\"dependencytypeid\");\r\n if (dependencyTypeID != null && dependencyTypeID != '')\r\n hrefUrl = insertParameterToUrl(hrefUrl, '_codedependencytypeid', dependencyTypeID);\r\n }\r\n }\r\n else if (showAllWhenParentNull) {\r\n hrefUrl = removeParameterFromUrl(hrefUrl, dependencyparam);\r\n hrefUrl = removeParameterFromUrl(hrefUrl, '_codedependencytypeid');\r\n }\r\n\r\n $(input).next().next().attr(\"href\", hrefUrl);\r\n\r\n // reinitialize the input lookup\r\n var isFormulaField = $(input).is('.formulaField');\r\n $(input).unautocomplete();\r\n if (typeof formulaFieldChangeFunction === 'function' && isFormulaField) {\r\n $('.formulaField').on('blur change', formulaFieldChangeFunction);\r\n }\r\n initializeInputLookup(input);\r\n }\r\n }\r\n else {\r\n var toSet = getAutoFillValueForDropDown(input, formPrefix);\r\n\r\n var valueBeforeLookup = $(input).val();\r\n $(input).val(\"\");\r\n\r\n var url = $(input).data(\"lookupurl\") + '?filters=' + encodeURIComponent(filters);\r\n\r\n if (showAllWhenParentNull && dependencyValue === '') {\r\n var urlFilter = removeParameter(filters, \"_codedependencytypeid\");\r\n urlFilter = removeParameter(urlFilter, \"_codedependencymasterid\");\r\n if (urlFilter.trim() != \"\")\r\n url = $(input).data(\"lookupurl\") + '?filters=' + encodeURIComponent(urlFilter); // used for /Origami/Lookups/Code lookups, which need a CodeTypeID even to get the unfiltered list of values\r\n else\r\n url = $(input).data(\"lookupurl\"); // used for /Origami/Lookups/Coverage and similar, which don't need a CodeTypeID to get the unfiltered list\r\n }\r\n\r\n $.getJSON(url, function (data) {\r\n\r\n var select: any = $(input).get(0);\r\n select.length = 0; // clear the options\r\n select.options.add(new Option(\"- None Selected -\", \"\"));\r\n\r\n var isMultiSelect = $(input).hasClass(\"chosen-select\");\r\n //For multi-selects, their values are specifically setup as needed in another function, so we will always set beforeLookupValid to true in that case and will always set the value on the child lookup to the previous value if one existed.\r\n var beforeLookupValid = isMultiSelect;\r\n\r\n for (var i in data) {\r\n var row = data[i];\r\n\t\t\t\t\t//For single-select drop-downs, verify that the value we had before the parent changed is still in our drop-down list on the child. If it is, we will still use that value. If it isn't, the value is cleared.\r\n\t\t\t\t\tif(!isMultiSelect && row.ID === valueBeforeLookup){\r\n\t\t\t\t\t\tbeforeLookupValid = true;\r\n\t\t\t\t\t}\r\n select.options.add(new Option(row.Description, row.ID));\r\n }\r\n\r\n if (valueBeforeLookup && beforeLookupValid)\r\n $(input).val(valueBeforeLookup);\r\n\r\n if (toSet != null)\r\n $(input).val(toSet);\r\n\r\n $(input)[0].dispatchEvent(new CustomEvent(\"origami.selectCodeDepListRefresh\", { detail: select }));\r\n });\r\n }\r\n });\r\n\r\n if (!onewaydependency && !dropdown) {\r\n $(input).next().on(\"change\", function () {\r\n\r\n var childVal = $(this).val();\r\n var masterVal = $(master).next().val();\r\n\r\n if (childVal.length > 0 && (typeof(masterVal) == \"undefined\" || masterVal.length == 0)) {\r\n\r\n var type = $(this).prev().attr(\"alt\");\r\n var url = getServerAppRoot() + 'Lookups/' + type + '/Dependency/' + childVal;\r\n\r\n $.getJSON(url, function (data) {\r\n\r\n if (data.status == \"success\" && data.id != '') {\r\n $(master).val(data.id);\r\n $(master).prev().val(data.description);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (allowChildDependencyFirst) {\r\n $(input).next().on(\"change\", function () {\r\n\r\n var childVal = $(this).val();\r\n var masterVal = $(master).next().val();\r\n\r\n if (childVal.length > 0 && (typeof (masterVal) == \"undefined\" || masterVal.length == 0)) {\r\n\r\n var type = $(this).prev().attr(\"alt\");\r\n var depName = $(this).prev().data(\"dependency\");\r\n\r\n var masterInputName = getMasterInputName(input, depName);\r\n var master = $(\"input[name='\" + masterInputName + \"'],select[name='\" + masterInputName + \"']\");\r\n if (master.length == 0)\r\n return;\r\n\r\n var masterInputField = masterInputName; // field name used for lookup\r\n\r\n // strip any form prefixes off of the master field name\r\n var formPrefix = $(input).closest(\"div.origamiform\").data(\"inputnameprefix\");\r\n if (typeof formPrefix == \"string\" && masterInputField.startsWith(`${formPrefix}.`)) {\r\n masterInputField = masterInputField.replace(`${formPrefix}.`, \"\");\r\n }\r\n\r\n var url = getServerAppRoot() + 'Lookups/' + type + '/DependencyMaster/' + childVal + '/' + masterInputField + '';\r\n\r\n $.getJSON(url, function (data) {\r\n\r\n if (data.status == \"success\" && data.id != '') {\r\n $(master).val(data.id);\r\n $(master).prev().val(data.description);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (onewaydependency && mv != \"\" && $(input)[0].hasAttribute(\"data-codedeprefresh\") && (dropdown || $(input)[0].hasAttribute(\"data-lookupformula\")))\r\n master.trigger(\"change\");\r\n}\r\n\r\n\r\n\r\nDate.firstDayOfWeek = 7;\r\nDate.format = 'mm/dd/yyyy';\r\n\r\nfunction getDateInputValue(input) {\r\n var date = ($(input).val());\r\n if (date == null || date.trim().length == 0)\r\n return null;\r\n\r\n return $.datepicker.parseDate(_userJqueryDateFormat, date);\r\n}\r\n\r\nfunction getDateValue(date) {\r\n if (date == null || date.trim().length == 0)\r\n return null;\r\n\r\n return $.datepicker.parseDate(_userJqueryDateFormat, date);\r\n}\r\n\r\nfunction convertUserDateValueToUrlDate(input) {\r\n return convertDateFormat(input, _userJqueryDateFormat, 'yy-mm-dd');\r\n}\r\n\r\nfunction convertUserDateValueToMdy(input) {\r\n return convertDateFormat(input, _userJqueryDateFormat, 'mm/dd/yy');\r\n\r\n}\r\n\r\nfunction convertUrlDateToUserDateValue(input) {\r\n return convertDateFormat(input, 'yy-mm-dd', _userJqueryDateFormat);\r\n}\r\n\r\nfunction convertMdyToUserDateFormat(input) {\r\n return convertDateFormat(input, 'mm/dd/yy', _userJqueryDateFormat);\r\n}\r\n\r\nfunction convertDateFormat(input, sourceFormat, destFormat) {\r\n if (input == null || input == '')\r\n return input;\r\n\r\n if (typeof sourceFormat === 'undefined' || sourceFormat == null ||\r\n typeof destFormat === 'undefined' || destFormat == null)\r\n return input;\r\n try {\r\n if (sourceFormat == destFormat) {\r\n if (input.substring(0, 1) == \"+\" || input.substring(0, 1) == \"-\")\r\n return input;\r\n\r\n const output = new Date(input);\r\n if (output.toString() === \"Invalid Date\")\r\n return input;\r\n const options: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n };\r\n if (destFormat === 'mm/dd/yy') {\r\n return output.toLocaleDateString('en-US', options);\r\n }\r\n return output.toLocaleDateString('en-GB', options);\r\n }\r\n }\r\n catch (err) {\r\n return input;\r\n }\r\n // if input does not contain two / or - then assume it isn't a date\r\n var matches = input.match(/\\/|-/g);\r\n if (matches == null || matches.length !== 2)\r\n return input;\r\n\r\n try {\r\n var dateValue = $.datepicker.parseDate(sourceFormat, input);\r\n return $.datepicker.formatDate(destFormat, dateValue);\r\n }\r\n catch (err) {\r\n return input;\r\n }\r\n}\r\n\r\nvar applyRestrictions = false;\r\nvar workDays = [0, 1, 2, 3, 4, 5, 6];\r\nvar restrictedDays = [];\r\nvar enableRestrictedSelection = false;\r\nvar indefiniteLeaveStartDate = null;\r\nfunction setDateRestrictions(restrictions) {\r\n applyRestrictions = true;\r\n workDays = restrictions.WorkDays;\r\n restrictedDays = restrictions.NonWorkingDays;\r\n indefiniteLeaveStartDate = restrictions.IndefiniteLeaveStartDate;\r\n enableRestrictedSelection = restrictions.EnableRestrictedSelection;\r\n}\r\nfunction clearDateRestrictions(restrictions) {\r\n applyRestrictions = false;\r\n workDays = [0, 1, 2, 3, 4, 5, 6];\r\n restrictedDays = [];\r\n indefiniteLeaveStartDate = null;\r\n enableRestrictedSelection = false;\r\n}\r\nfunction getRestrictedDay(targetDate) {\r\n if (!restrictedDays) {\r\n return null;\r\n }\r\n for (var i = 0; i < restrictedDays.length; i++) {\r\n if (restrictedDays[i].Date === targetDate) {\r\n return restrictedDays[i];\r\n }\r\n }\r\n return null;\r\n}\r\nfunction isWorkDay(day) {\r\n for (var i = 0; i < workDays.length; i++) {\r\n if (workDays[i] === day) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction isDateAvailable(date) {\r\n if (!applyRestrictions)\r\n return [true, \"\"];\r\n var compareDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString().substr(0, 10);\r\n if (!isWorkDay(date.getDay())) {\r\n return [enableRestrictedSelection, \"nonWorkingDay\", \"Non-work Day\"];\r\n }\r\n if (indefiniteLeaveStartDate !== null && indefiniteLeaveStartDate !== \"\") {\r\n var current = new Date(compareDate);\r\n var startDate = new Date(indefiniteLeaveStartDate);\r\n if (current >= startDate) {\r\n return [enableRestrictedSelection, \"OOO\", \"OOO (Open Ended)\"];\r\n }\r\n }\r\n var restrictedDay = getRestrictedDay(compareDate);\r\n if (restrictedDay !== null) {\r\n return [enableRestrictedSelection, (restrictedDay.Description.substr(0, 3) === \"OOO\" ? \"OOO\" : \"Holiday\"), restrictedDay.Description];\r\n }\r\n return [true, \"availableDate\"];\r\n}\r\n\r\nfunction initializeIntegerSpinnerControl(input) {\r\n if (typeof input == 'undefined')\r\n return;\r\n\r\n if ($(input).is(\":disabled\") || $(input).hasClass(\"locked\"))\r\n return;\r\n\r\n $(input).origamiSpinner({\r\n step: 1,\r\n pageStep: 10\r\n });\r\n}\r\n\r\nfunction initializeDateControl(input) {\r\n\r\n applyDateInputMasking($(input));\r\n\r\n if ($.datepicker) {\r\n\r\n $(input).datepicker({\r\n showOn: \"button\",\r\n buttonText: \"\",\r\n duration: 200,\r\n showAnim: \"slideDown\",\r\n constrainInput: false,\r\n minDate: new Date(1753, 0, 1),\r\n maxDate: new Date(9999, 11, 31),\r\n closeAtTop: false,\r\n changeMonth: true,\r\n changeYear: true,\r\n showOtherMonths: true,\r\n selectOtherMonths: true,\r\n yearRange: '-100:+30',\r\n onSelect: function () { $(input).trigger(\"focus\"); $(input).trigger(\"change\"); }\r\n });\r\n }\r\n\r\n}\r\n\r\nfunction applyDateInputMasking(input) {\r\n var inputMaskOptions = {\r\n jitMasking: true,\r\n mask: _userDateFormatMask.toLowerCase().replaceAll(\"m\", \"9\").replaceAll(\"d\",\"9\").replaceAll(\"y\",\"9\")\r\n };\r\n\r\n $(input).on(\"keydown\", function(event) {\r\n\r\n if ((event.key != '/' && event.keyCode != 8) || $(this).val().trim() == '')\r\n return;\r\n\r\n if ($(this).val().trim().slice(-1) == \"/\" && event.key == '/')\r\n return false;\r\n\r\n if ($(this).val().trim().slice(-1) == \"/\" && event.keyCode == 8)\r\n $(this).val($(this).val().trim().substring(0,$(this).val().trim().length-1));\r\n\r\n return;\r\n });\r\n\r\n $(input).on(\"keyup\", function(event) {\r\n var initVal = $(this).val().trim();\r\n\r\n if(initVal.substring(0,1) == \"+\" || initVal.substring(0,1) == \"-\")\r\n return;\r\n\r\n var currInputParts = initVal.split(\"/\");\r\n var maskParts = inputMaskOptions.mask.split(\"/\");\r\n var adjustedVal = \"\";\r\n\r\n for(var i=0; i < maskParts.length; i++)\r\n {\r\n if(!(currInputParts.length > i + 1)) {\r\n adjustedVal += currInputParts[i];\r\n break;\r\n }\r\n \r\n if(currInputParts[i].length == 1 && maskParts[i].length == 2)\r\n adjustedVal += \"0\" + currInputParts[i] + \"/\";\r\n else\r\n adjustedVal += currInputParts[i] + \"/\";\r\n }\r\n\r\n if(adjustedVal != initVal)\r\n initVal = adjustedVal;\r\n\r\n var formattedDate = Inputmask.format(initVal, inputMaskOptions);\r\n\r\n if(formattedDate != '' && initVal.length <= formattedDate.length)\r\n $(input).val(formattedDate.trim());\r\n });\r\n\r\n $(input).on(\"blur\", function () {\r\n if (typeof _userDateFormatMask == 'undefined' || _userDateFormatMask != 'MM/dd/yyyy')\r\n return;\r\n\r\n var currVal = $(this).val();\r\n if (typeof currVal == 'undefined' || currVal == null || currVal == '')\r\n return;\r\n\r\n var currInputParts = currVal.split(\"/\");\r\n if (currVal.length == 6 && currInputParts.length == 3 && currVal.endsWith(\"/\")) {\r\n $(this).val(currVal + new Date().getFullYear());\r\n }\r\n });\r\n}\r\n\r\nfunction dateInputShowRelativeDateField(input: string): boolean {\r\n if (input == null || input == '')\r\n return false;\r\n\r\n var matchResult = input.match(/^[+-][0-9]+($|[dmy]$)/i);\r\n\r\n if (matchResult != null && matchResult.length > 0)\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nfunction initializeTimeControl(input) {\r\n if (isMobileDevice()) {\r\n if (!(typeof $(input).attr(\"use24hour\") != 'undefined' && $(input).attr(\"use24hour\").toLowerCase() == \"true\")) {\r\n if ($(input).val() != '') {\r\n var convVal = convert12to24Time($(input).val());\r\n if (convVal != '') {\r\n $(input).val(convVal);\r\n $(input).attr(\"type\", \"time\");\r\n }\r\n }\r\n else\r\n $(input).attr(\"type\", \"time\");\r\n }\r\n }\r\n else {\r\n $(input).timeEntry({\r\n ampmPrefix: ' ',\r\n noSeparatorEntry: true,\r\n spinnerImage: '',\r\n initialField: 0.,\r\n useMouseWheel: !(input.disabled)\r\n });\r\n }\r\n}\r\n\r\nfunction convert12to24Time(input: string): string {\r\n if (input === null || input === '')\r\n return '';\r\n\r\n input = input.toLowerCase();\r\n\r\n if (!input.endsWith(\"am\") && !input.endsWith(\"pm\"))\r\n return input;\r\n\r\n var isPm = input.endsWith(\"pm\");\r\n\r\n var inputElems = input.split(\":\");\r\n\r\n var hoursStr = inputElems[0];\r\n var hoursInt = parseInt(hoursStr);\r\n\r\n if (isNaN(hoursInt))\r\n return '';\r\n\r\n if (isPm && hoursInt < 12)\r\n hoursInt = hoursInt + 12;\r\n\r\n if (!isPm && hoursInt === 12)\r\n hoursInt = 0;\r\n\r\n if (hoursInt < 10)\r\n hoursStr = \"0\" + hoursInt.toString();\r\n else\r\n hoursStr = hoursInt.toString();\r\n\r\n var minsStr = inputElems[1].split(\" \")[0];\r\n\r\n return hoursStr + \":\" + minsStr;\r\n}\r\n\r\nfunction initializeTime24Control(input) {\r\n if (isMobileDevice()) {\r\n $(input).attr(\"type\", \"time\");\r\n return;\r\n }\r\n else {\r\n $(input).timeEntry({\r\n show24Hours: true,\r\n noSeparatorEntry: true,\r\n ampmPrefix: ' ',\r\n spinnerImage: '',\r\n initialField: 0\r\n });\r\n }\r\n}\r\n\r\nfunction initializeDecimalControl(input) {\r\n var codedMask = $(input).attr(\"alt\");\r\n if (codedMask == null || codedMask == \"\")\r\n codedMask = \"decimal\";\r\n if ($(input).attr(\"alt\") != null)\r\n\r\n $(input).maskedInput({ mask: codedMask });\r\n}\r\n\r\nfunction initializeIntegerControl(input) {\r\n $(input).maskedInput({ mask: \"integer\" });\r\n}\r\n\r\nfunction initializeDigitsOnlyControl(input) {\r\n $(input).maskedInput({ mask: \"digitsOnly\" });\r\n}\r\n\r\nvar pickerCurrentInput = null;\r\nfunction initializeRelativeDatePicker(input) {\r\n\r\n $(input).next().on('click',function (e) {\r\n pickerCurrentInput = input;\r\n var menu = $('#relativeDatePicker');\r\n openPopup(e, $(input), null, menu);\r\n });\r\n\r\n //Ensure we follow same rules as we do everywhere else for Dates (add formatting)\r\n applyDateInputMasking($(input));\r\n}\r\n\r\nfunction initializeFieldPicker(input, type) {\r\n $(input).siblings(\"#fieldPickerTrigger\").on('click',function (e) {\r\n pickerCurrentInput = input;\r\n var menu = $('#fieldPicker_' + type);\r\n openPopup(e, $(input), null, menu);\r\n });\r\n}\r\n\r\nfunction inputLookupDescriptionAndCode(data) {\r\n var str = data.Description;\r\n if (data.DisplayCode != null && data.DisplayCode.length > 0 && data.DisplayPatternOverwritten !== true)\r\n str += \" (\" + data.DisplayCode + \")\";\r\n\r\n return str;\r\n}\r\n\r\nfunction inputLookupCodeAndDescription(data) {\r\n if (data.DisplayCode != null && data.DisplayCode.length > 0 && data.DisplayPatternOverwritten !== true)\r\n return data.DisplayCode + \" - \" + data.Description;\r\n else\r\n return data.Description;\r\n}\r\n\r\nfunction inputLookupEmailAndID(data) {\r\n if (data.DisplayCode != null) {\r\n var display = isValidEmail(data.DisplayCode) ? data.DisplayCode : data.Email;\r\n }\r\n if (display != null && data.ID != null) {\r\n return `${display}(ID:${data.ID})`;\r\n } else {\r\n return data.Description;\r\n }\r\n}\r\n\r\nfunction inputLookupDescriptionOnly(data) {\r\n return data.Description;\r\n}\r\n\r\nfunction applyDynamicMatchKeysFilters(filters, input) {\r\n if (!input)\r\n return filters;\r\n\r\n // handle any resolved match keys for \");\r\n\r\n hiddenFieldList = \"\";\r\n visibleFieldList = \"\";\r\n\r\n var controls: any = document.querySelectorAll(\"input, select, textarea\");\r\n\r\n for (let index = 0; index < controls.length; ++index) {\r\n\r\n var forceInclude = controls[index].getAttribute(\"autoFillForceInclude\");\r\n var useAutoFillName = controls[index].getAttribute(\"useAutoFillName\");\r\n\r\n var name = controls[index].name;\r\n\r\n if(useAutoFillName){\r\n name = useAutoFillName;\r\n }\r\n\r\n if (name.substring(0, 27) == \"__origamilookupdescription_\")\r\n name = name.substring(27, name.length);\r\n\r\n if (name.substring(0, 8) != \"Origami.\")\r\n {\r\n if (name.indexOf('.') !== -1)\r\n name = name.split('.').pop();\r\n\r\n if ((visibleFieldList.trim().length == 0 || visibleFieldList.indexOf(';' + name + ';') == -1) &&\r\n (hiddenFieldList.trim().length == 0 || hiddenFieldList.indexOf(';' + name + ';') == -1))\r\n {\r\n if (controls[index].type == \"hidden\" && forceInclude != \"true\")\r\n {\r\n if (hiddenFieldList == null || hiddenFieldList.trim().length == 0)\r\n hiddenFieldList = ';' + name + ';';\r\n else\r\n hiddenFieldList = hiddenFieldList + name + ';';\r\n }\r\n else\r\n {\r\n if (visibleFieldList == null || visibleFieldList.trim().length == 0)\r\n visibleFieldList = ';' + name + ';';\r\n else\r\n visibleFieldList = visibleFieldList + name + ';';\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (hiddenFieldList.length)\r\n hiddenFieldList = hiddenFieldList.substring(1, hiddenFieldList.length - 1)\r\n\r\n if (visibleFieldList.length)\r\n visibleFieldList = visibleFieldList.substring(1, visibleFieldList.length - 1)\r\n}\r\n\r\nfunction setLookupValueForControl(controlID, id, description) {\r\n hidePopup();\r\n var trigger = $(\"#\" + controlID);\r\n setLookupValueForTrigger(trigger, id, description);\r\n $(trigger).trigger(\"focus\");\r\n setSelectOption(trigger);\r\n}\r\n\r\nfunction onSetLookupValueForTrigger(trigger, id, description): boolean {\r\n return false;\r\n}\r\n\r\nfunction setLookupValueForTrigger(trigger, id, description) {\r\n if (onSetLookupValueForTrigger(trigger, id, description) == true)\r\n return;\r\n\r\n if (trigger.hasClass(\"inputLookup\")) {\r\n trigger.val(description).next().val(id).trigger(\"change\");\r\n trigger.trigger(\"change\");\r\n clearTemporaryValueForTrigger(trigger);\r\n onLookupSelected(trigger);\r\n }\r\n else if (trigger.hasClass(\"autofill\")) {\r\n autoFillFromTrigger(trigger, id);\r\n }\r\n}\r\n\r\nfunction setLookupTemporaryValueForTrigger(trigger, id, description) {\r\n if (trigger.hasClass(\"inputLookup\")) {\r\n var triggerInputName = trigger.next().attr(\"name\");\r\n var temporaryInputName = \"TemporaryValue.\" + triggerInputName;\r\n var temporaryInput = $(\"input[name='\" + temporaryInputName + \"']\");\r\n if (temporaryInput.length === 0) {\r\n\r\n var newHiddenInput = $(\"\");\r\n var triggerForm = trigger.closest(\"form\");\r\n triggerForm.append(newHiddenInput);\r\n\r\n temporaryInput = $(\"input[name='\" + temporaryInputName + \"']\");\r\n }\r\n\r\n trigger.val(description).next().val(\"\").trigger(\"change\");\r\n temporaryInput.val(id).trigger(\"change\");\r\n trigger.trigger(\"change\");\r\n onLookupSelected(trigger);\r\n }\r\n else if (trigger.hasClass(\"autofill\")) {\r\n autoFillFromTrigger(trigger, id);\r\n }\r\n}\r\n\r\nfunction clearTemporaryValueForTrigger(trigger) {\r\n if (trigger.hasClass(\"inputLookup\")) {\r\n var triggerInputName = trigger.next().attr(\"name\");\r\n var temporaryInputName = \"TemporaryValue.\" + triggerInputName;\r\n var temporaryInput = $(\"input[name='\" + temporaryInputName + \"']\");\r\n if (temporaryInput.length !== 0) {\r\n temporaryInput.val(\"\").trigger(\"change\");\r\n }\r\n }\r\n}\r\n\r\nfunction setLookupValue(id, description) {\r\n\r\n hidePopup();\r\n\r\n var controlID;\r\n\r\n if (_currentLookupControl)\r\n controlID = _currentLookupControl.attr('id');\r\n else\r\n controlID = $('#jqmParams').val();\r\n\r\n if (controlID.length > 0) {\r\n var trigger;\r\n\r\n if (_currentLookupControl)\r\n trigger = _currentLookupControl;\r\n else\r\n trigger = $(\"#\" + controlID);\r\n\r\n setLookupValueForTrigger(trigger, id, description);\r\n }\r\n}\r\n\r\nfunction setLookupTemporaryValue(id, description) {\r\n\r\n hidePopup();\r\n\r\n var controlID;\r\n\r\n if (_currentLookupControl)\r\n controlID = _currentLookupControl.attr('id');\r\n else\r\n controlID = $('#jqmParams').val();\r\n\r\n if (controlID.length > 0) {\r\n var trigger;\r\n\r\n if (_currentLookupControl)\r\n trigger = _currentLookupControl;\r\n else\r\n trigger = $(\"#\" + controlID);\r\n\r\n setLookupTemporaryValueForTrigger(trigger, id, description);\r\n }\r\n}\r\n\r\nfunction getLookupValue() {\r\n var controlID = $('#jqmParams').val();\r\n if (controlID.length > 0) {\r\n var input = $(\"#\" + controlID);\r\n if (input.hasClass(\"inputLookup\"))\r\n return input.next().val();\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction autoFillForm(sourceDomain, formDomain, setName, id, inputnameprefix, additionalFilterParam = null) {\r\n if (hiddenFieldList == null || hiddenFieldList.trim().length == 0 || visibleFieldList == null || visibleFieldList.trim().length == 0)\r\n InitializeAutoFillComponents();\r\n\r\n var url = appendTPAClientID(getServerAppRoot() + \"Forms/AutoFillStandard\");\r\n\r\n $.ajax({\r\n url: url,\r\n data: AddAntiForgeryToken({ setName: setName, sourceDomain: sourceDomain, formDomain: formDomain, sourceId: id, includeFields: visibleFieldList, excludeFields: hiddenFieldList, additionalFilterParam: additionalFilterParam }),\r\n type: 'post',\r\n success: function (data) {\r\n if (data.status == \"success\") {\r\n\r\n if (data.excludedFieldSetGUID.length > 0) {\r\n var guids = $('input[name=\"_DelayedAutoFillTokens\"]').val();\r\n\r\n if (guids.length > 0)\r\n guids += ';' + data.excludedFieldSetGUID;\r\n else\r\n guids = data.excludedFieldSetGUID;\r\n\r\n $('input[name=\"_DelayedAutoFillTokens\"]').val(guids);\r\n }\r\n\r\n autoFillFormFields(data.items, inputnameprefix);\r\n }\r\n else\r\n alert(\"Could not locate record.\");\r\n }\r\n });\r\n}\r\n\r\nfunction autoFillFormByFilter(sourceDomain, formDomain, setName, filter) {\r\n\r\n if (hiddenFieldList == null || hiddenFieldList.trim().length == 0 || visibleFieldList == null || visibleFieldList.trim().length == 0)\r\n InitializeAutoFillComponents();\r\n\r\n var url = appendTPAClientID(getServerAppRoot() + \"Forms/AutoFillByFilter\");\r\n\r\n $.ajax({\r\n url: url,\r\n data: AddAntiForgeryToken({ setName: setName, sourceDomain: sourceDomain, formDomain: formDomain, sourceQuery: encodeURIComponent(filter), includeFields: visibleFieldList, excludeFields: hiddenFieldList }),\r\n type: 'post',\r\n success: function (data) {\r\n if (data.status == \"success\") {\r\n\r\n if (data.excludedFieldSetGUID.length > 0) {\r\n var guids = $('input[name=\"_DelayedAutoFillTokens\"]').val();\r\n\r\n if (guids.length > 0)\r\n guids += ';' + data.excludedFieldSetGUID;\r\n else\r\n guids = data.excludedFieldSetGUID;\r\n\r\n $('input[name=\"_DelayedAutoFillTokens\"]').val(guids);\r\n }\r\n\r\n autoFillFormFields(data.items, inputnameprefix);\r\n }\r\n else\r\n alert(\"Could not locate record.\");\r\n }\r\n });\r\n}\r\n\r\n\r\nvar _autoFillingItems = null;\r\nfunction getAutoFillValueForDropDown(input, prefix) {\r\n if (_autoFillingItems==null)\r\n return null;\r\n\r\n if (prefix.length > 0)\r\n prefix += \"_\";\r\n\r\n for (var i in _autoFillingItems) {\r\n var item = _autoFillingItems[i];\r\n\r\n if ($(input).is(\"#\" + prefix + item.name))\r\n return item.value;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction autoFillFormFields(items, inputnameprefix) {\r\n _autoFillingItems = items;\r\n\r\n var prefix = \"#\";\r\n if (inputnameprefix != null && inputnameprefix.trim().length > 0)\r\n prefix = \"#\" + inputnameprefix + \"_\";\r\n\r\n for (var i in items) {\r\n var item = items[i];\r\n var value = item.value;\r\n var idselector = prefix + item.name;\r\n\r\n if ($(idselector).data('sensitive-readonly')) {\r\n // if this is a readonly sensitive field, clear as sf functionality and just make it standard readonly after autofill\r\n $(idselector).removeClass('sensitiveField').attr('placeholder', null).parent().find('button.sensitiveFieldButton').remove();\r\n }\r\n\r\n if (item.type == \"lookup\" || $(idselector).is(\".inputLookup\")) {\r\n if ($(idselector).attr('type') == \"hidden\")\r\n $(idselector).val(item.value);\r\n else\r\n $(idselector).val(item.description).next().val(item.value).trigger(\"change\");\r\n }\r\n else if (item.type == \"boolean\") {\r\n var check = $(idselector);\r\n if (check.is(\":checkbox\"))\r\n check.prop('checked', (item.value == \"True\" || item.value == true)).trigger(\"change\");\r\n else if ($(\"input[type='radio'][name='\" + item.name + \"']\").is(\":radio\")) {\r\n $(\"input[name=\" + item.name + \"][value=\" + value + \"]\").prop('checked', true);\r\n }\r\n // Looks like the naming of some or all(?) radio buttons changed, the conditional above may not be necessary, but keeping it here for now\r\n else if ($(\"input[type='radio'][name='rb\" + item.name + \"']\").is(\":radio\")) {\r\n $(\"input[name=rb\" + item.name + \"][value=\" + value + \"]\").prop('checked', true);\r\n }\r\n else\r\n check.val(value).trigger(\"change\");\r\n }\r\n else if (item.type == \"date\") {\r\n if (value != null && value.trim().length > 0)\r\n value = convertUrlDateToUserDateValue(value);\r\n\r\n $(idselector).val(value).trigger(\"change\");\r\n }\r\n else if (idselector.includes(\"CustomMultiSelectCode\")) {\r\n var dropDownSelector = $(\"select[name='__multiselect_\" + item.name + \"']\");\r\n if (dropDownSelector[0]) { //If this was configured to be a dropdown\r\n value.split(',').filter(x => x).forEach(function (v) {\r\n var optSelector = $(\"select[name='__multiselect_\" + item.name + \"'] option[value='\" + v + \"']\");\r\n optSelector.prop('selected', true);\r\n });\r\n dropDownSelector.trigger(\"chosen:updated\");\r\n }\r\n else {\r\n value.split(',').filter(x => x).forEach(function (v) {\r\n var optSelector = $(\"input[name='__multiselect_\" + item.name + \"'][value='\" + v + \"']\");\r\n optSelector.prop('checked', true);\r\n optSelector.trigger(\"change\");\r\n });\r\n }\r\n }\r\n else {\r\n var nameSelector = idselector.slice(1).replace('_', '.');\r\n if ($(\"input[type='radio'][name='rb\" + nameSelector + \"']\").length) {\r\n $(\"[name='rb\" + nameSelector + \"']\").removeAttr('checked');\r\n $(\"input[name='rb\" + nameSelector + \"'][value = '\" + value + \"']\").prop('checked', true);\r\n $(`input[name=${nameSelector}]`).val(value).trigger(\"change\");\r\n }\r\n else {\r\n var input = $(idselector);\r\n if (input.is(\".buttonGroupInput\")) {\r\n var ul = input.next();\r\n $(\"li\", ul).removeClass(\"selected\");\r\n\r\n if (value != null && value.trim().length > 0)\r\n $('li[data-value=\"' + value + '\"]', ul).addClass(\"selected\");\r\n }\r\n input.val(value).trigger(\"change\");\r\n }\r\n }\r\n }\r\n\r\n _autoFillingItems = null;\r\n}\r\n\r\n\r\nfunction onLookupSelected(lookup) {\r\n\r\n if (!lookup.hasClass(\"autofill\"))\r\n return;\r\n\r\n var id = lookup.next().val();\r\n if (id == null || id.length == 0)\r\n return;\r\n\r\n autoFillFromTrigger(lookup, id);\r\n}\r\n\r\nfunction autoFillFromTrigger(trigger, id) {\r\n\r\n var sourceDomain = trigger.attr(\"sourceDomain\");\r\n var formDomain = trigger.attr(\"formDomain\");\r\n var setName = trigger.attr(\"setName\");\r\n var inputnameprefix = trigger.attr(\"inputnameprefix\");\r\n var additionalFilterParam = trigger.attr(\"additionalFilterParam\");\r\n\r\n var prompt = trigger.attr(\"autoFillPrompt\");\r\n if (prompt != null && prompt.length > 0) {\r\n if (!confirm(prompt))\r\n return;\r\n }\r\n\r\n autoFillForm(sourceDomain, formDomain, setName, id, inputnameprefix, additionalFilterParam);\r\n}\r\n//#endregion\r\n\r\n//#region navigation menu\r\nfunction openMenu(e) {\r\n //var button = $(this).addClass('active');\r\n var button = $(this);\r\n var menu = $('#' + button.attr('name'));\r\n\r\n openPopup(e, button, button, menu);\r\n}\r\n\r\nvar hidePopupListeners = [];\r\nfunction addHidePopupListener(fn) {\r\n hidePopupListeners.push(fn);\r\n}\r\n\r\nfunction hidePopup() {\r\n if (window.origami.settings.UseNewModalWindow) {\r\n $('#or-modal-popup').dialog(\"close\");\r\n $('#or-modal-popup-frame').attr('src', '');\r\n $('#or-modal-popup-frame').html('');\r\n } else {\r\n if (jQuery().jqmHide)\r\n $('#modalWindow').jqmHide();\r\n }\r\n\r\n for (var i in hidePopupListeners) {\r\n var callback = hidePopupListeners[i];\r\n callback();\r\n }\r\n}\r\n\r\nfunction closeMinModal() {\r\n hidePopup();\r\n $(\"#minimizedModalWindow\").hide();\r\n}\r\n\r\nfunction minimizeModal(headerText) {\r\n var bgColor = $('div.titleArea').css('backgroundColor');\r\n var color = $('div.titleArea').css('color');\r\n\r\n $(\"#minimizedModalWindow\").css('backgroundColor', bgColor);\r\n $(\"#minimizedModalWindow\").css('color', color);\r\n $(\"span#minModalText\").text(headerText);\r\n\r\n if (window.origami.settings.UseNewModalWindow) {\r\n $('.ui-widget-overlay').hide();\r\n $(\".or-modal-popup\").animate({ top: '100%', left: '97%', width: '100px', height: '10px' },\r\n 150,\r\n function () {\r\n $('#or-modal-popup').dialog('close');\r\n $(\".or-modal-popup\").css({ top: null, left: null, width: null, height: null });\r\n $(\"#minimizedModalWindow\").show();\r\n }\r\n );\r\n } else {\r\n $(\"div.jqmOverlay\").hide();\r\n $(\"#modalWindow\").hide();\r\n $(\"#minimizedModalWindow\").show();\r\n }\r\n}\r\n\r\nfunction maximizeModal() {\r\n if (window.origami.settings.UseNewModalWindow) {\r\n $('#or-modal-popup').dialog('open');\r\n resizeModal();\r\n } else {\r\n $(\"div.jqmOverlay\").show();\r\n $(\"#modalWindow\").show();\r\n }\r\n $(\"#minimizedModalWindow\").hide();\r\n}\r\n\r\nfunction callMinimizeModal(elem) {\r\n //This assumes it will be called from a modal.\r\n var toolbarTitle = $('div.title').text().trim();\r\n if (!toolbarTitle) {\r\n toolbarTitle = $('span.pagetitle').data('title');\r\n }\r\n window.parent.minimizeModal(toolbarTitle);\r\n}\r\n\r\nfunction hidePopupAndReload() {\r\n hidePopup();\r\n window.location.reload();\r\n}\r\n\r\n// An element's position is relative to the closest ancestor element that is positioned,\r\n// but the offset value is relative to the viewport. To set an element's position using \r\n// offset values, you must first subtract the offset values of the position context.\r\nfunction getPositionContextOffset(element: JQuery) : JQueryCoordinates {\r\n let parent = element.parent();\r\n if(!parent.offset()) {\r\n return element.offset();\r\n } else if(parent.css(\"position\") == \"static\") {\r\n return getPositionContextOffset(parent)\r\n } else {\r\n return parent.offset();\r\n }\r\n}\r\n\r\n\r\nfunction openPopup(e, align, button, menu, above = false, callbackfunc = closePopupCallback) {\r\n var offset = align.offset();\r\n var parentOffset = getPositionContextOffset(menu);\r\n var h = (align.outerHeight) ? align.outerHeight() : align.height();\r\n var w = (align.outerWidth) ? align.outerWidth() : align.width();\r\n var wmenu = (menu.outerWidth) ? menu.outerWidth() : menu.width();\r\n\r\n var isFixed = $(menu).css(\"position\");\r\n if (isFixed === \"fixed\") {\r\n h = h - $(window).scrollTop();\r\n w = w - $(window).scrollLeft();\r\n }\r\n\r\n var left = offset.left - parentOffset.left + w - wmenu;\r\n if (left < 0)\r\n left = 0;\r\n\r\n var top = offset.top - parentOffset.top + h;\r\n if (above)\r\n top = top - menu.height() - h; \r\n\r\n if (shouldLockNavAndSidePanelsWhenOpeningPopup(menu, top)) {\r\n menu.addClass('active').css({\r\n 'bottom': 0, 'left': left\r\n }).on('click', function (e) { e.stopPropagation(); }).slideDown(200, function () {\r\n $(document).one('click', { button: button, menu: menu }, closePopupCallback);\r\n });\r\n }\r\n else {\r\n menu.addClass('active').css({\r\n 'top': top, 'left': left\r\n }).on('click', function (e) { e.stopPropagation(); }).slideDown(200, function () {\r\n $(document).one('click', { button: button, menu: menu }, closePopupCallback);\r\n menu.off(\"actionMenu.origami\");\r\n });\r\n }\r\n menu.one(\"actionMenu.origami\", customMenuOnEvent(e, null));\r\n menu.triggerHandler(\"actionMenu.origami\", null);\r\n\r\n $(\"a:not(.ui-datepicker-prev,.ui-datepicker-next)\", menu).one('click', { button: button, menu: menu }, closePopupCallback);\r\n $(menu).find(\"a\").first().trigger(\"focus\");\r\n}\r\n\r\nfunction shouldLockNavAndSidePanelsWhenOpeningPopup(menu, top) {\r\n const setting = window.origami.settings.LockNavAndSidePanels;\r\n const totalHeight = $(\"body\").height();\r\n const menuId = $(menu).attr(\"id\") || \"\";\r\n const excludedMenuLists = [\"moreActionsMenu\"];\r\n\r\n if (!setting || excludedMenuLists.indexOf(menuId) >= 0) {\r\n return false; // setting is turned off; or the menu element is excluded\r\n }\r\n\r\n return (window == window.top) && ((top + 450) > totalHeight);\r\n}\r\n\r\nfunction closePopupCallback(e) {\r\n closePopup(e.data.menu, e.data.button);\r\n}\r\n\r\nfunction closePopup(menu, button, callbackfunc = closePopupCallback) {\r\n $(document).off('click', closePopupCallback);\r\n $(\"a\", menu).off('click', closePopupCallback);\r\n\r\n menu.removeClass('active').slideUp(100, function() {\r\n// if (button!=null)\r\n// button.removeClass('active');\r\n });\r\n\r\n if (button!=null)\r\n button.one('click', openMenu);\r\n}\r\n//#endregion\r\n\r\n//#region toolbar positioning and manipulation\r\nlet pager_marker;\r\nlet pagerbar_div;\r\nlet headerOffsetTop = 0;\r\n\r\nfunction lockTitleArea() {\r\n let titleArea = $('div.titleArea');\r\n if (titleArea.closest(\"nav\").length > 0)\r\n return;\r\n\r\n // Only apply locking if setting enabled and window is not a modal\r\n if (window.origami.settings.LockNavAndSidePanels && (window == window.top)) {\r\n lockNavAndSidePanels();\r\n $(function () {\r\n lockNavAndSidePanels();\r\n //var speed = $.noty.get($(\".noty_bar\").attr(\"id\")).options.animation.speed;\r\n $(\".noty_message\").click(function () { setTimeout(() => { lockNavAndSidePanels() }, 1001); });\r\n });\r\n } else {\r\n $(window).scroll(adjustTitleArea);\r\n $(window).resize(adjustTitleArea);\r\n }\r\n}\r\n\r\n// This implements many CSS adjustments to allow the locked UI to work properly. \r\nfunction lockNavAndSidePanels() {\r\n // Use this CSS class to conditionally set the styles in CSS files so it can be overriden in CSS as needed.\r\n $(\"body\").addClass(\"lockNavAndSidePanels\");\r\n\r\n let content_top = $('#content').offset().top;\r\n var isSelectClient = false;\r\n try {\r\n isSelectClient = (window.origami.login.isSelectClient === 'true');\r\n }\r\n catch (err) {\r\n console.error(err);\r\n }\r\n $('#content').css(\"overflow-y\", \"auto\");\r\n if (isSelectClient) {\r\n $('#content').css(\"padding-top\", \"10px\");\r\n }\r\n else {\r\n $('#content').css(\"padding-top\", \"0\");\r\n }\r\n $('#content').css(\"max-height\", \"calc(100vh - \" + content_top + \"px)\");\r\n\r\n $('#content div.panel-contents').css(\"margin-top\", \"1em\");\r\n\r\n $('#shift').css(\"margin-right\", \"3px\");\r\n $('#shift').css(\"left\", \"0px\");\r\n $('#shift').css(\"width\", \"100%\");\r\n\r\n let popupMenu_top = content_top + 5;\r\n\r\n $('#moreActionsMenu').css(\"overflow-y\", \"auto\");\r\n $('#moreActionsMenu').css(\"max-height\", \"calc(100vh - \" + popupMenu_top + \"px)\");\r\n\r\n // For some reason, section headers for the LockoutTagoutProcedure View Screen \r\n // use a CSS class that makes them sticky, when they shouldn't be normally\r\n $('.tg-xqil').css(\"position\", \"relative\");\r\n $('.tg-xqil').css(\"top\", \"0px\");\r\n\r\n \r\n\r\n let sidePanel = $('#secondaryContent');\r\n sidePanel.css(\"position\", \"sticky\");\r\n sidePanel.css(\"top\", headerOffsetTop + \"px\");\r\n if (!($(\"#secondaryContent div[data-panel-key-desc='(Panel Key: ValidFieldsPanel)']\").length))\r\n sidePanel.css(\"overflow-y\", \"auto\");\r\n sidePanel.css(\"height\", \"calc(100vh - \" + headerOffsetTop + \"px)\");\r\n if (sidePanel.hasClass('secondaryContentOverride') === true) {\r\n //sidePanel.css(\"width\", \"370px\");\r\n sidePanel.css(\"padding-right\", \"5px\");\r\n sidePanel.css(\"padding-left\", \"12px\");\r\n sidePanel.addClass('sidebarLockNavAndSidePanelsOverride')\r\n }\r\n else {\r\n sidePanel.css(\"width\", \"19.7em\");\r\n }\r\n}\r\n\r\nfunction adjustTitleArea() {\r\n const titleArea = $('div.titleArea');\r\n const primaryTitleArea = titleArea.not('.secondaryTitleArea, .tertiaryTitleArea');\r\n const secondaryTitleArea = $('.secondaryTitleArea').filter(function() {\r\n return $(this).outerHeight() > 0;\r\n });\r\n const tertiaryTitleArea = $('.tertiaryTitleArea');\r\n\r\n if (primaryTitleArea.length > 0) {\r\n const primaryHeight = primaryTitleArea.outerHeight();\r\n const primaryWidth = $('#page').width();\r\n const scrollTop = $(window).scrollTop();\r\n const primaryStickyClass = \"stuckheader\";\r\n const otherStickyClass = \"fixedPositionHeader\";\r\n let secondaryHeight = 0;\r\n\r\n if (secondaryTitleArea.length > 0) {\r\n secondaryHeight = secondaryTitleArea.outerHeight();\r\n secondaryTitleArea.each(function () {\r\n const currElement = $(this);\r\n \r\n if (scrollTop > headerOffsetTop) {\r\n currElement.addClass(otherStickyClass);\r\n currElement.css({\r\n 'top': `${primaryHeight}px`,\r\n 'width': `${primaryWidth}px`,\r\n });\r\n $('#content').css('margin-top', currElement.css('height'));\r\n } else {\r\n currElement.removeClass(otherStickyClass);\r\n currElement.css({\r\n 'top': '',\r\n 'width': '',\r\n });\r\n $('#content').css('margin-top', '');\r\n }\r\n });\r\n }\r\n\r\n if (tertiaryTitleArea.length > 0) {\r\n tertiaryTitleArea.each(function () {\r\n const currElement = $(this);\r\n\r\n if (scrollTop > headerOffsetTop) {\r\n currElement.addClass(otherStickyClass);\r\n currElement.css({\r\n 'top': `${primaryHeight + secondaryHeight}px`,\r\n 'width': `${primaryWidth}px`,\r\n });\r\n $('#content').css('margin-top', currElement.css('height'));\r\n } else {\r\n currElement.removeClass(otherStickyClass);\r\n currElement.css({\r\n 'top': '',\r\n 'width': '',\r\n });\r\n $('#content').css('margin-top', '');\r\n }\r\n });\r\n }\r\n\r\n primaryTitleArea.each(function () {\r\n const currElement = $(this);\r\n\r\n if (scrollTop > headerOffsetTop) {\r\n currElement.addClass(primaryStickyClass);\r\n currElement.css('width', `${primaryWidth}px`);\r\n $('#content').css('margin-top', currElement.css('height'));\r\n } else {\r\n currElement.removeClass(primaryStickyClass);\r\n currElement.css('width', '');\r\n $('#content').css('margin-top', '');\r\n }\r\n });\r\n\r\n //ORDEV-46741 adds and removes the tertiaryTitleArea class to certain objects so we will have straggler elements that still have the fixed position. Remove the straggler class.\r\n $('.fixedPositionHeader').not('.titleArea, .secondaryTitleArea, .tertiaryTitleArea').removeClass('fixedPositionHeader');\r\n }\r\n}\r\n\r\nfunction highlightTitleTab() {\r\n let titleTabs = $('.titleTab');\r\n if (!(titleTabs.length > 0)) {\r\n return;\r\n }\r\n\r\n const actionName = getControllerAction();\r\n const targetTab = titleTabs.filter(`.action_${actionName}`);\r\n\r\n if (targetTab.length > 0) {\r\n targetTab.addClass('selectedTitleTab');\r\n }\r\n}\r\n\r\nfunction stickyPagerBar() {\r\n var window_bottom = $(window).scrollTop() + $(window).height();\r\n var marker_bottom = pager_marker.offset().top + pager_marker.height();\r\n\r\n if (window_bottom < marker_bottom) {\r\n pagerbar_div.addClass(\"moving\");\r\n //var newtop = $(window).height() - pagerbar_div.height() - 5;\r\n //pagerbar_div.css(\"top\", newtop + \"px\");\r\n pagerbar_div.css(\"bottom\", \"0\");\r\n\r\n var calcwidth = $(\"#page\").width() - pagerbar_div.offset().left - 12;\r\n if (window.origami.settings.LockNavAndSidePanels) {\r\n calcwidth = calcwidth - 5;\r\n }\r\n pagerbar_div.css(\"width\", calcwidth + \"px\");\r\n }\r\n else {\r\n pagerbar_div.removeClass(\"moving\");\r\n //pagerbar_div.css(\"top\", \"0px\");\r\n pagerbar_div.css(\"width\", \"100%\");\r\n }\r\n}\r\n\r\nfunction lockPagerBar() {\r\n pagerbar_div = $(\"div.pager.keepVisible\");\r\n if (pagerbar_div.length == 1) {\r\n\r\n pager_marker = $(\"
    \");\r\n pagerbar_div.after(pager_marker);\r\n\r\n $(window).on(\"scroll\", stickyPagerBar);\r\n $(window).on(\"resize\", stickyPagerBar);\r\n stickyPagerBar();\r\n }\r\n}\r\n\r\nfunction ensureToolbar() {\r\n var toolbar = $(\"#toolBar\");\r\n if (toolbar.length > 0)\r\n return toolbar;\r\n\r\n toolbar = $(\"
    \");\r\n $(\"#page\").append(toolbar);\r\n\r\n return toolbar;\r\n}\r\n\r\nfunction addToolbarButton(name, onclickFunction) {\r\n ensureToolbar();\r\n\r\n var li = $(\"
  • \");\r\n $(\"#toolBar ul.toolbar\").prepend(li);\r\n\r\n $(\"button\", li).on('click',onclickFunction);\r\n}\r\n//#endregion\r\n\r\n\r\nfunction positionAndShowModal(modalWindow) {\r\n modalWindow.show();\r\n}\r\n\r\nfunction openThickboxPopup(url, x?: any) { \r\n if (window.origami.settings.UseNewModalWindow) {\r\n openUrlPopup(url, this, x); \r\n } else {\r\n if (!(typeof x != 'undefined' && x == \"allowCrossClient\"))\r\n url = appendTPAClientID(url);\r\n //Note: jqmShow() method below calls loadInIframeModal():\r\n if (jQuery().jqmShow)\r\n $(\"#modalWindow\").jqmShow();\r\n $(\"#modalWindow iFrame\").attr(\"src\", url);\r\n }\r\n}\r\n\r\nfunction openUrlPopup(url, source, x?: any) {\r\n screenReaderMessage('Opening modal window within current window', true);\r\n let trigger = $(source);\r\n var modal = $('#or-modal-popup');\r\n\r\n if (beforeLoadModal && typeof beforeLoadModal === \"function\") {\r\n beforeLoadModal(trigger, modal, function () { finishLoadInIframeModal(null, trigger, null); });\r\n } else {\r\n finishLoadInIframeModal(null, trigger, null);\r\n }\r\n if (!(typeof x != 'undefined' && x == \"allowCrossClient\"))\r\n url = appendTPAClientID(url);\r\n\r\n if (url.length >= 2048 && !isFireFox()) {\r\n window.origami.message.openModalPost(url);\r\n } else if (url.length >= 2048 && isFireFox()) {\r\n console.error('FireFox does not handle a URL longer than 2048 characters.');\r\n alert('FireFox does not handle a URL longer than 2048 characters.');\r\n } else {\r\n window.origami.message.openModal(url);\r\n }\r\n}\r\n\r\nfunction isFireFox() {\r\n return navigator.userAgent.indexOf(' Firefox/') > -1\r\n}\r\n\r\nfunction attachLookupUrlModifier(lookupInput, func) {\r\n // check to see if this is a lookup\r\n if (!lookupInput.hasClass(\"inputLookup\")) {\r\n console.log(\"lookupInput parameter is not a lookup control.\");\r\n return;\r\n }\r\n\r\n var ctl = lookupInput.get(0);\r\n if (!ctl.hasOwnProperty('LookupUrlModifiers')) {\r\n ctl[\"LookupUrlModifiers\"] = [];\r\n }\r\n\r\n var modifiers = ctl.LookupUrlModifiers;\r\n modifiers.push(func);\r\n}\r\n\r\nfunction triggerLookupUrlModifiers(lookupInput, url) {\r\n var ctl = lookupInput.get(0);\r\n if (!ctl.hasOwnProperty('LookupUrlModifiers'))\r\n return url;\r\n\r\n var modifiers = ctl.LookupUrlModifiers;\r\n if (modifiers==null || modifiers.length==0)\r\n return url;\r\n\r\n for (var i in modifiers) {\r\n var fn = modifiers[i];\r\n if (fn==null)\r\n continue;\r\n\r\n url = fn(url, lookupInput);\r\n if (url==null)\r\n return url;\r\n }\r\n\r\n return url;\r\n}\r\n\r\n//The .autocomplete we use \"locks\" in the param values when the control is initialized.\r\n//We need to add any dynamic params prior to the control being initialized.\r\n//This will check to see if the control that will become an auto complete control has the data attribute \r\n//that let's it know a function needs to be ran to obtain additional client-side parameters.\r\n//function autoCompleteAddClientSideParams(autoCompleteInput) {\r\nfunction lookupDataDashUrlModifiers(autoCompleteInput) {\r\n\r\n var input = $(autoCompleteInput);\r\n\r\n if (input && input.length > 0) {\r\n\r\n var moduleName = input.data('attachlookupurlmodifiermodule');\r\n var functionName = input.data('attachlookupurlmodifierfunction');\r\n\r\n if (moduleName && functionName) {\r\n // @ts-ignore: next line will use the window to find a module and execute a function in that module.\r\n //this will better keep specific implementations outside of this code.\r\n return window[moduleName][functionName]();\r\n }\r\n }\r\n\r\n return \"\";\r\n};\r\n\r\nvar _currentLookupControl;\r\nvar beforeLoadModal: (trigger, modal, successCallback: () => void) => void;\r\nvar loadInIframeModal = function (hash) {\r\n var trigger = $(hash.t);\r\n var modal = $(hash.w);\r\n\r\n if (beforeLoadModal && typeof beforeLoadModal === \"function\") {\r\n beforeLoadModal(trigger, modal, function () { finishLoadInIframeModal(hash, trigger, modal); });\r\n return;\r\n } else {\r\n finishLoadInIframeModal(hash, trigger, modal);\r\n }\r\n};\r\n\r\nvar finishLoadInIframeModal = function (hash, trigger, modal) {\r\n _currentLookupControl = null;\r\n\r\n $(window).on(\"beforeunload\", checkForMinimizedPopup);\r\n\r\n if (trigger.hasClass(\"lookupImage\")) {\r\n _currentLookupControl = trigger.prev().prev();\r\n var controlId = _currentLookupControl.attr(\"id\");\r\n\r\n $('#jqmParams').val(controlId).trigger(\"change\");\r\n }\r\n else if (trigger.hasClass(\"autofill\")) {\r\n $('#jqmParams').val(trigger.attr(\"id\"));\r\n }\r\n\r\n var myUrl = trigger.attr('href');\r\n\r\n if (_currentLookupControl != null && _currentLookupControl.hasClass(\"inputLookup\")) {\r\n myUrl = triggerLookupUrlModifiers(_currentLookupControl, myUrl);\r\n\r\n var additionalParams = lookupDataDashUrlModifiers(_currentLookupControl);\r\n\r\n if (additionalParams) {\r\n myUrl = myUrl + additionalParams;\r\n }\r\n\r\n if (myUrl == null) {\r\n console.log('bailing out of popup...');\r\n\r\n if (hash) {\r\n hash.a = false; // needed so subsequent popups show\r\n hash.o.remove();\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n myUrl = appendTPAClientID(myUrl);\r\n if (modal) {\r\n var modalContent = $(\"iframe\", modal);\r\n modalContent.html('').attr('src', myUrl);\r\n positionAndShowModal(modal);\r\n } \r\n\r\n if (getCurrentUserUsesAssistiveTechnology()) {\r\n makeUntabbable();\r\n }\r\n};\r\n\r\nvar closeIframeModal = function (hash) {\r\n $(window).off(\"beforeunload\", checkForMinimizedPopup);\r\n if (getCurrentUserUsesAssistiveTechnology())\r\n restoreTabbable();\r\n hash.w.hide();\r\n hash.o.remove();\r\n $(\"#modalWindow iFrame\").attr(\"src\", null);\r\n $(\"#helpHeaderHtml\").hide();\r\n\r\n if (typeof(afterCloseIframeModal) === 'function')\r\n afterCloseIframeModal();\r\n};\r\n\r\nvar checkForMinimizedPopup = function (e) {\r\n if ($('#minimizedModalWindow').is(':visible')){\r\n maximizeModal();\r\n return \"Close Popups Before Leaving\";\r\n }\r\n}\r\n//#endregion\r\n\r\n//#region content area and ajax panels\r\nfunction refreshSidePanels()\r\n{\r\n ajaxLoadPanel($('div#secondaryContent div.inlineExternal').first(), true);\r\n}\r\n\r\nfunction refreshSidePanelsAndClosePopup() {\r\n hidePopup();\r\n refreshSidePanels();\r\n}\r\n\r\n\r\nfunction addSidePanel(panel) {\r\n $(\"#secondaryContent #shift\").append(panel);\r\n}\r\n\r\nfunction refreshWidgetAjaxGrid(item) {\r\n ajaxLoadPanel($(item), true);\r\n}\r\n\r\nvar panelLoadListeners = [];\r\nvar initLoadedListeners = [];\r\n\r\nfunction addPanelLoadListener(fn) {\r\n panelLoadListeners.push(fn);\r\n}\r\n\r\nfunction addInitLoadedListener(fn) {\r\n initLoadedListeners.push(fn);\r\n}\r\n\r\nfunction notifyPanelLoaded(panel) {\r\n for (var i in panelLoadListeners) {\r\n var listener = panelLoadListeners[i];\r\n if (listener !== null && typeof listener === 'function') {\r\n listener(panel);\r\n }\r\n }\r\n}\r\n\r\nfunction notifyInitLoaded(subset) {\r\n\r\n for (var i in initLoadedListeners) {\r\n var listener = initLoadedListeners[i];\r\n if (listener !== null && typeof listener === 'function') {\r\n listener(subset);\r\n }\r\n }\r\n}\r\n\r\nfunction ajaxLoadPanel(panel, showLoading) {\r\n\r\n origami.startDelayLoad();\r\n\r\n var src = panel.data('origamiurl');\r\n\r\n if (src == null || src == '')\r\n return;\r\n\r\n if (src.substr(0, 2) == '~/') {\r\n src = getServerAppRoot() + src.substr(2);\r\n }\r\n\r\n src = appendTPAClientID(src);\r\n //console.log(\"Loading ajax panel: \" + src);\r\n\r\n if (showLoading) {\r\n var loading = panel.data('loading-message');\r\n var loadingIcon = panel.data('loading-message-icon');\r\n if (loading != null && loading != '') {\r\n var icon = \" \";\r\n if (loadingIcon != null && loadingIcon != '')\r\n icon = loadingIcon;\r\n\r\n var loadingDiv = $(\"
    \" + icon + loading.escapeHTML() + \"
    \");\r\n\r\n panel.append(loadingDiv);\r\n }\r\n }\r\n\r\n var successMethod = function (response, status, xhr) {\r\n\r\n origami.runPanelCompletes(this);\r\n\r\n\t\t// Apply drag and drop reordering to reloaded grid if it has a UserControlledSequence (and thus is denoted as a drag and drop grid)\r\n if (typeof(gridHandleDroppedElement) === \"function\") {\r\n $(\".dragAndDropGrid tbody\").sortable({\r\n stop: gridHandleDroppedElement\r\n });\r\n }\r\n\r\n $(panel).data(\"load-status\", status);\r\n if (status == \"error\") {\r\n if (xhr.status != 0) {\r\n var msg = \"
    Error loading panel: \" + xhr.status + \" \" + xhr.statusText + \"
    \";\r\n panel.html(msg);\r\n }\r\n }\r\n else {\r\n initLoaded(this);\r\n notifyPanelLoaded(this);\r\n }\r\n\r\n if (origami && origami.evaluateFormExpressions) {\r\n $(\"div.origamiform\").each(function () {\r\n origami.evaluateFormExpressions($(this));\r\n });\r\n }\r\n\r\n //This will be specific to editableGrids that are reloaded and use the ajax functionality\r\n //In some cases we need to totally reload an EditableGrid when a records is added, modified, or deleted.\r\n //For example, Involved Parties has an stored procedure that runs and recalculates things that are displayed in the grid.\r\n //In a case like this the entire grid will be reloaded to show the newest calculations. \r\n //Since the panel is reloaded from an ajax call we need to reinitialize the chosen jquery plug-in\r\n //Historically it doesn't appear that the chosen controls are integrated into the editableGrids\r\n //To prevent ripple effects into other areas (standard code, custom code, custom pages, ..) we will specifically only perform this initialization \r\n //for editableGrids that have the $(element)).chosen({\r\n placeholder_text_multiple: \"Select all that apply\",\r\n no_results_text: \"No results match\",\r\n width: \"250px\",\r\n search_contains: true,\r\n single_backstroke_delete: false\r\n });\r\n }\r\n });\r\n\r\n origami.completeDelayLoad();\r\n };\r\n\r\n if (typeof (ajaxGridPost) !== 'undefined' && ajaxGridPost !== null && ajaxGridPost === true\r\n && (src.indexOf('viewFilter') !== -1 || src.indexOf('filter') !== -1)) {\r\n\r\n // Parse querystring formatted parameters into a JSON object, to trigger jQuery's .load method to use a POST instead of a GET call\r\n var queryStringIndex = src.indexOf('?');\r\n var url = src.substr(0, queryStringIndex);\r\n if (url == \"\") // should never occur, but just in case\r\n url = src;\r\n\r\n var queryString = src.substr(queryStringIndex + 1, src.length - queryStringIndex - 1);\r\n\r\n var params = {};\r\n\r\n if (typeof (URLSearchParams) === 'undefined') { // In IE, some older versions of other browsers\r\n params = parseParams(queryString);\r\n }\r\n else {\r\n var urlSearchParams = new URLSearchParams(queryString);\r\n urlSearchParams.forEach(function (value, key, parent) {\r\n params[key] = value;\r\n });\r\n }\r\n\r\n panel.load(url, params, successMethod); // Load content using POST\r\n }\r\n else {\r\n panel.load(src, successMethod); // Load content using GET\r\n }\r\n}\r\n\r\nfunction parseParams(str) {\r\n return str.split('&').reduce(function (params, param) {\r\n var paramSplit = param.split('=').map(function (value) {\r\n return decodeURIComponent(value.replace(/\\+/g, ' '));\r\n });\r\n params[paramSplit[0]] = paramSplit[1];\r\n return params;\r\n }, {});\r\n}\r\n\r\nfunction isInSidePanel(panel) {\r\n var side = $(panel).closest(\"#secondaryContent\");\r\n return side.length > 0;\r\n}\r\n\r\nfunction appendTPAClientID(url) {\r\n var tpaClientID = getTPAClientID();\r\n if (tpaClientID == null || tpaClientID == '')\r\n return url;\r\n\r\n if (url == null || typeof url === 'undefined' || url.trim().length==0)\r\n return url;\r\n\r\n if (url.toLowerCase().indexOf('_tpaclientid=') > -1)\r\n return url;\r\n\r\n return insertParameterToUrl(url, '_tpaclientid', tpaClientID);\r\n}\r\n\r\nfunction refreshIndexGrid() {\r\n var container = $(\"#_IndexRefreshContainer\");\r\n if (container.length == 0)\r\n return;\r\n\r\n var url = window.location + \" #_IndexRefreshContent\";\r\n $(\"#_IndexRefreshContainer\").on('load', url, function () {\r\n initLoaded(container);\r\n });\r\n}\r\n\r\nfunction refreshAjaxGridByClassName(className) {\r\n var count = refreshPartials(className);\r\n\r\n if (count == 0) {\r\n // nothing to refresh, then just reload the page\r\n // show the status message after reload so that reloading doesn't inadvertently hide it\r\n var messageHtml = $(\"#message:not(.hidden)\").data(\"messageHtml\");\r\n var messageStyle = $(\"#message\").attr(\"class\");\r\n if(messageHtml)\r\n nextStatusMessageHtml(messageStyle, messageHtml);\r\n window.location.reload();\r\n }\r\n}\r\n\r\nfunction fullyRefreshCardsAndParentAjaxGridByClassName(className,id) {\r\n \r\n //If this is called then the user created a contact, employee, location, territory outside the normal flow from within a CARD.\r\n //we will add the new card using the domain and primary key that was returned\r\n\r\n //then refresh all the cards within the UI and all the grids that deal with this className/domain\r\n\r\n // @ts-ignore: next line will use the editableCard module which should be loaded since we are working with cards in this case.\r\n editableCard.ipCallBackSaveAndRefreshCards(id);\r\n}\r\n\r\n\r\nfunction initLoaded(container) {\r\n initializeAll(container);\r\n\r\n if (!window.origami.settings.UseNewModalWindow && jQuery().jqmAddTrigger) {\r\n $('a.thickbox, .lookupImage, img.thickbox, button.thickbox', container).each(function () {\r\n $('#modalWindow').jqmAddTrigger(this);\r\n });\r\n }\r\n};\r\n\r\nfunction refreshPartials(domain) {\r\n if (!domain)\r\n return;\r\n\r\n var count = 0;\r\n $(\"div.inlineExternal,div.ajaxGrid\").each(function () {\r\n var refresh = $(this).data(\"refresh-domain\");\r\n\r\n // Fix for JIRA #15404, only for custom entities \r\n if (domain.startsWith(\"custom_\")) {\r\n domain = domain.replace(\"custom_\", \"Custom.\");\r\n }\r\n\r\n var domainName = domain.toLowerCase();\r\n\r\n if (refresh == null)\r\n return;\r\n\r\n var refreshDomains = refresh.toLowerCase().split(',');\r\n if ($.inArray(domainName, refreshDomains) == -1)\r\n return;\r\n\r\n count++;\r\n ajaxLoadPanel($(this), false);\r\n });\r\n\r\n $(\".cardViewPanel\").each(function () {\r\n\r\n //loop through each card view panel and make sure they are refreshed in case any information has changes since it was initially shown.\r\n var parentDomainID = $(this).data(\"parentdomainid\");\r\n var parentDomainPrimaryKeyName = $(this).data(\"parentdomainprimarykeyname\");\r\n var parentDomainPrimaryKeyValue = $(this).data(\"parentdomainprimarykeyvalue\");\r\n var cardViewPanelGuidId = $(this).data(\"cardviewpanelguidid\");\r\n if(parentDomainID && parentDomainPrimaryKeyName && parentDomainPrimaryKeyValue && cardViewPanelGuidId){\r\n \r\n // @ts-ignore: next line will use the editableCard module which should be loaded since we are working with cards in this case.\r\n if(editableCard){\r\n count++;\r\n // @ts-ignore: next line will use the editableCard module which should be loaded since we are working with cards in this case.\r\n editableCard.fullyRefreshCards(parentDomainID, parentDomainPrimaryKeyName, parentDomainPrimaryKeyValue, cardViewPanelGuidId);\r\n }\r\n }\r\n }); //end looping through all card view panels\r\n\r\n return count;\r\n}\r\n//#endregion\r\n\r\n//#region grid actions\r\nvar afterJsonDeleteAction = null;\r\nvar clearRowAfterJsonDelete = true;\r\n\r\nfunction doJsonDeleteAction(clickedObject, action, confirmMessage) {\r\n clearStatusMessage();\r\n\r\n if ((confirmMessage != undefined) && (confirmMessage != null) && (confirmMessage.length != 0))\r\n if (!confirm(confirmMessage))\r\n return;\r\n\r\n var row = $(clickedObject).closest(\"tr\");\r\n var prefix;\r\n\r\n if (action.indexOf(\"?\") > 0)\r\n prefix = \"&\";\r\n else\r\n prefix = \"?\";\r\n\r\n $.post(action + prefix + \"json=true\", AddAntiForgeryToken({}),\r\n function (data) {\r\n if (data.status == \"success\") {\r\n var didRefreshPartials = false;\r\n if (clearRowAfterJsonDelete)\r\n row.hide('fast', function () {\r\n row.remove();\r\n // re-evaluate the form expression if refreshPartials didn't reload the panel\r\n if (!didRefreshPartials) {\r\n if (origami && origami.evaluateFormExpressions) {\r\n $(\"div.origamiform\").each(function () {\r\n origami.evaluateFormExpressions($(this));\r\n });\r\n }\r\n }\r\n });\r\n\r\n var table = $(row).closest(\"table\");\r\n if (table.length) {\r\n var domain = table.data(\"origamidomain\");\r\n if (domain != null) {\r\n var refreshCount = refreshPartials(domain);\r\n didRefreshPartials = refreshCount > 0;\r\n }\r\n }\r\n\r\n if (afterJsonDeleteAction != null && typeof afterJsonDeleteAction == 'function')\r\n afterJsonDeleteAction(table, row);\r\n }\r\n else if (data.status == \"fail\") {\r\n statusErrorMessage(data.message);\r\n window.scrollTo(0, 0);\r\n }\r\n });\r\n}\r\n\r\nfunction postJsonActionWithRedirect(action, confirmMessage) {\r\n if ((confirmMessage != undefined) && (confirmMessage != null) && (confirmMessage.length != 0))\r\n if (!confirm(confirmMessage))\r\n return;\r\n\r\n $.post(action, AddAntiForgeryToken({}),\r\n function (data) {\r\n if (data.status == \"success\") {\r\n window.location = data.redirectAction;\r\n }\r\n else if (data.status == \"fail\") {\r\n statusErrorMessage(data.message);\r\n }\r\n });\r\n}\r\n//#endregion\r\n\r\n\r\n//#region multiselect lists\r\nvar _listsForGrid = '';\r\nvar _currentMultiSelectList = null;\r\nvar _simpleMultiSelectList = [];\r\nvar _selectedDescriptions = [];\r\nvar _lockedMultiSelectList = [];\r\n\r\nfunction initializeGridLists(gridName, preSelectedIDs, lockedIDs = []) {\r\n if (_listsForGrid != gridName) {\r\n _listsForGrid = gridName;\r\n //_currentMultiSelectList = null;\r\n _simpleMultiSelectList = preSelectedIDs;\r\n _lockedMultiSelectList = lockedIDs;\r\n }\r\n}\r\n\r\nfunction isInMultiSelectList(key, list) {\r\n if (list === undefined || list == null)\r\n list = _currentMultiSelectList;\r\n\r\n if (list == null){\r\n\r\n return (_simpleMultiSelectList.indexOf(key) >= 0);\r\n }\r\n\r\n var found = false;\r\n $(\"div.listitem\", list).each(function () {\r\n if ($(this).data(\"value\") == key)\r\n found = true;\r\n });\r\n\r\n return found;\r\n}\r\n\r\nfunction isInLockedMultiSelectList(key) {\r\n return (_lockedMultiSelectList.indexOf(key) >= 0);\r\n}\r\n\r\nfunction getAllLockedMultiSelectKeys() {\r\n return _lockedMultiSelectList;\r\n}\r\n\r\nfunction getMultiSelectKeys(list) {\r\n var result = [];\r\n\r\n if (list === undefined || list == null)\r\n list = _currentMultiSelectList;\r\n\r\n if (list == null)\r\n return _simpleMultiSelectList;\r\n\r\n $(\"div.listitem\", list).each(function () {\r\n result.push($(this).data(\"value\"));\r\n });\r\n\r\n return result;\r\n}\r\n\r\n// Note: This only works if the multiselect list is all shown on a single page\r\nfunction reorderSinglePageMultiSelectList(movedKey, priorSelectedKey, list) {\r\n\r\n if (list === undefined || list == null)\r\n list = _currentMultiSelectList;\r\n\r\n if (list == null) {\r\n list = _simpleMultiSelectList;\r\n }\r\n\r\n if (priorSelectedKey == null)\r\n var idx = 0;\r\n else\r\n\r\n\r\n if (idx != 0) {\r\n removeMultiSelectItem(movedKey);\r\n idx = _simpleMultiSelectList.indexOf(priorSelectedKey) + 1;\r\n }\r\n _simpleMultiSelectList.splice(idx, 0, movedKey);\r\n}\r\n\r\nfunction addMultiSelectItem(key, description, list) {\r\n if (list === undefined || list == null)\r\n list = _currentMultiSelectList;\r\n\r\n if (list == null){\r\n if (!isInMultiSelectList(key, list)){\r\n _simpleMultiSelectList.push(key);\r\n _selectedDescriptions.push(description);\r\n }\r\n return;\r\n }\r\n\r\n if (isInMultiSelectList(key, list))\r\n return;\r\n\r\n var name = $(list).data(\"name\");\r\n var div = $(\"
    \" + description.escapeHTML() +\r\n \"\\\"Delete\\\"\" +\r\n \"
    \");\r\n\r\n $(list).append(div);\r\n $(list).scrollTop($(list).scrollTop() + $(div).position().top);\r\n\r\n // attach the on-delete behavior\r\n $(\"img.deletelistitem\", div).on(\"click\", function () {\r\n $(this).closest(\"div.listitem\").remove();\r\n });\r\n}\r\n\r\nfunction removeMultiSelectItem(key, list?) {\r\n if (list === undefined || list == null)\r\n list = _currentMultiSelectList;\r\n\r\n if (list == null){\r\n var idx = _simpleMultiSelectList.indexOf(key);\r\n if (idx >= 0){\r\n _simpleMultiSelectList.splice(idx, 1);\r\n _selectedDescriptions.splice(idx, 1);\r\n }\r\n return;\r\n }\r\n\r\n var item = null;\r\n $(\"div.listitem\", list).each(function () {\r\n if ($(this).data(\"value\") == key)\r\n item = $(this);\r\n });\r\n\r\n if (item != null)\r\n $(item).remove();\r\n}\r\n\r\nfunction clearBulkActionSelections() {\r\n var url = window.frames[0].location.href\r\n if (url.includes(\"BulkAction\")) {\r\n _simpleMultiSelectList = [];\r\n _selectedDescriptions = [];\r\n }\r\n}\r\n\r\nfunction initGridCollapseColumns(subset)\r\n{\r\n var showMore = function (e) {\r\n $(e.currentTarget).parent().addClass('hidden');\r\n $(e.currentTarget).parent().next().removeClass('hidden').find('a.showLessGridColumn').attr(\"aria-expanded\", \"true\").focus();\r\n e.preventDefault();\r\n }\r\n\r\n var showLess = function (e) {\r\n $(e.currentTarget).parent().addClass('hidden');\r\n $(e.currentTarget).parent().prev().removeClass('hidden').find('a.showMoreGridColumn').attr(\"aria-expanded\", \"false\").focus();\r\n e.preventDefault();\r\n }\r\n\r\n //listening keydown on space bar is necessary for accessibility\r\n $(subset).find('a.showMoreGridColumn').click(showMore).keydown(function (e) { if (e.which == 32) showMore(e) });\r\n $(subset).find('a.showLessGridColumn').click(showLess).keydown(function (e) { if (e.which == 32) showLess(e) });\r\n}\r\n\r\nfunction initMultiSelects(subset) {\r\n $(\"div.multiselectlookuplist\", subset).each(function () {\r\n var initial = $(this).data(\"initialvalues\");\r\n\r\n if (initial != null && initial.length > 0) {\r\n var keys = eval(initial);\r\n for (var i in keys) {\r\n var code = keys[i];\r\n addMultiSelectItem(code.Key, code.Description, this);\r\n }\r\n }\r\n });\r\n\r\n $(\"div.multiselectlookuplist div.listitem img.deletelistitem\", subset).on(\"click\", function () {\r\n $(this).closest(\"div.listitem\").remove();\r\n });\r\n\r\n $(\"input.multiselectadderid:hidden\", subset).on(\"change\", function () {\r\n\r\n var input = $(\"input.inputLookup\", $(this).closest(\"div.adder\"));\r\n\r\n var key = $(this).val();\r\n if (key == null || key.trim().length == 0) {\r\n return;\r\n }\r\n\r\n var text = $(input).val();\r\n\r\n var list = $(\"div.multiselectlookuplist\", $(this).closest(\"div.multiselectlookup\"));\r\n addMultiSelectItem(key, text, list);\r\n\r\n $(this).val(\"\");\r\n $(input).val(\"\");\r\n\r\n $(input).trigger(\"focus\");\r\n });\r\n}\r\n\r\nfunction doSearch(trigger, url) {\r\n\r\n console.log('Search URL: ' + url);\r\n\r\n if (trigger) {\r\n var inline = $(trigger).closest(\"div.inlineExternal\");\r\n if (inline.length > 0) {\r\n\r\n inline.data(\"origamiurl\", url);\r\n ajaxLoadPanel(inline, false);\r\n return;\r\n\r\n }\r\n }\r\n\r\n window.location = url;\r\n}\r\n\r\n//#endregion\r\n\r\nvar csrfHrefCalled = false;\r\n\r\nfunction handlePostActionLinks(subset) {\r\n $(\".postAction[onclick]\", subset).each(function (k, t) {\r\n var onclickAttr = $(this).attr(\"onclick\");\r\n $(t).attr(\"onclick\", null);\r\n $(t).attr(\"data-onclick\", onclickAttr);\r\n });\r\n\r\n $(\".postAction\", subset).on('click',function (event) {\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var onclickAttr = $(this).attr(\"data-onclick\");\r\n if (typeof onclickAttr != 'undefined' && onclickAttr != '') {\r\n var onclickFunc = new Function(onclickAttr);\r\n if (onclickFunc.call(this) === false)\r\n return false;\r\n }\r\n\r\n if (!csrfHrefCalled)\r\n postCRSFHref($(this).attr(\"href\"));\r\n return false;\r\n });\r\n}\r\n\r\nfunction postCRSFHref(href) {\r\n csrfHrefCalled = true;\r\n var cloneInput = $(\"#_csrfPostForm > input[name='__AjaxRequestVerificationToken']\").clone();\r\n\r\n $(cloneInput).attr(\"name\", \"__RequestVerificationToken\");\r\n\r\n var form;\r\n form = $('
    ', {\r\n action: href,\r\n method: \"post\",\r\n style: 'display: none;'\r\n });\r\n\r\n $(cloneInput).appendTo(form);\r\n form.appendTo('body').trigger(\"submit\");\r\n}\r\n\r\nfunction initializeAll(subset) {\r\n\r\n try {\r\n\r\n handlePostActionLinks(subset);\r\n\r\n handleTextAreaCarriageReturns();\r\n\r\n handleTextAreaMaxLength();\r\n\r\n initMultiSelects(subset);\r\n\r\n initGridCollapseColumns(subset);\r\n\r\n $(\"div.origamiformidentifier[data-formrepoids]\", subset).each(function () {\r\n var repoids = $(this).attr(\"data-formrepoids\");\r\n var allids = repoids.split(\",\");\r\n if (allids == null || allids.length == 0)\r\n return;\r\n\r\n var baseUrl = window.location.origin + getServerAppRoot();\r\n var formsUrl = baseUrl + \"Forms/ViewByRepoID?repoID=\";\r\n\r\n if (allids.length == 1) {\r\n console.log(\"Form Definition RepoID: \" + allids[0] + \" -> \" + formsUrl + encodeURIComponent(allids[0]));\r\n }\r\n else if (allids.length > 1) {\r\n console.log(\"Form Definition RepoIDs:\");\r\n for (var i in allids) {\r\n console.log(\" \" + allids[i] + \" -> \" + formsUrl + encodeURIComponent(allids[i]));\r\n }\r\n }\r\n });\r\n\r\n $(\"input.formCheckbox\", subset).on(\"change\", function () {\r\n\r\n $(this).next().val($(this).prop(\"checked\") ? \"True\" : \"False\").trigger(\"change\");\r\n\r\n });\r\n\r\n $(\"a.thumbnail-preview, span.thumbnail-preview\", subset).each(function () {\r\n var myThis: any = $(this)[0];\r\n var ThumbnailHoverConfig =\r\n {\r\n sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)\r\n interval: 500, // number = milliseconds for onMouseOver polling interval\r\n timeout: 0, // number = milliseconds delay before onMouseOut\r\n over: function (e) {\r\n myThis.t = myThis.title;\r\n myThis.title = \"\";\r\n var xOffset = 30;\r\n var yOffset = 30;\r\n var maxWidth = 400;\r\n var xInitial;\r\n var caption = (myThis.t != \"\") ? \"
    \" + myThis.t : \"\";\r\n $(\"body\").append(\"
    Image preview\" + caption + \"
    \");\r\n\r\n if (e.pageX > ($(window).width() / 2))\r\n xInitial = e.pageX - $(\"#thumbpreview\").width() - xOffset;\r\n else\r\n xInitial = e.pageX + xOffset;\r\n\r\n $(\"#thumbpreview\")\r\n .css(\"top\", (e.pageY - yOffset) + \"px\")\r\n .css(\"left\", (xInitial) + \"px\")\r\n .fadeIn(\"slow\");\r\n\r\n $(\"#thumbpreview img\").attr('src', $(myThis).data('src'));\r\n\r\n //attach event handler\r\n $(\"#thumbpreview img\").on('load', function () {\r\n var windowBottom = $(window).scrollTop() + $(window).height();\r\n var windowRight = $(window).width();\r\n var imgHeight = $(this).height();\r\n var imgWidth = $(this).width();\r\n var imgTop = $(this).offset().top;\r\n var imgLeft = $(this).offset().left;\r\n\r\n if ((imgTop + imgHeight) > windowBottom - 75) {\r\n $(\"#thumbpreview\")\r\n .css(\"top\", (windowBottom - imgHeight - 75) + \"px\");\r\n }\r\n if ((imgLeft + imgWidth) > windowRight - 300) {\r\n $(\"#thumbpreview\")\r\n .css(\"left\", (e.pageX - imgWidth - xOffset) + \"px\");\r\n }\r\n });\r\n\r\n },\r\n out: function () {\r\n myThis.title = myThis.t;\r\n $(\"#thumbpreview\").remove();\r\n }\r\n }\r\n\r\n $(this).hoverIntent(ThumbnailHoverConfig);\r\n });\r\n\r\n const measureSpan = $(\"\", { \"class\": \"pageNumber-measure\" }).appendTo($(\"div.pager\"));\r\n const pageNumberInput = $(\"div.pager input.pageNumber\", subset);\r\n const syncWidth = () => {\r\n $(measureSpan).html(pageNumberInput.val());\r\n pageNumberInput.width(`${measureSpan.width()}px`);\r\n };\r\n syncWidth(); // make sure the width is adjusted when page is loaded\r\n pageNumberInput.on('keyup', function (event) {\r\n\r\n if (event.keyCode == 13) {\r\n var newPage = $(this).val();\r\n var pageCount = $(this).data(\"pagecount\");\r\n if ((pageCount > 0 && newPage > pageCount) || newPage <= 0) {\r\n alert(\"Invalid Page entry.\");\r\n return false;\r\n }\r\n var url = $(this).data(\"src\").replace(\"page={pageN}\", \"page=\" + newPage);\r\n window.location = url;\r\n }\r\n else { // allow the width of the pageNumber input field to dynamically adjust\r\n syncWidth();\r\n }\r\n });\r\n\r\n if (jQuery().qtip) {\r\n $(\"a.jTipAjax\", subset).each(function () {\r\n $(this).qtip({\r\n content: {\r\n text: 'Loading...',\r\n ajax: {\r\n url: $(this).attr('rel')\r\n },\r\n title: {\r\n text: $(this).attr('name')\r\n }\r\n },\r\n position: {\r\n my: 'left center',\r\n at: 'right center',\r\n viewport: $(window),\r\n effect: false\r\n },\r\n style: {\r\n classes: 'qtip-origami ' + $(this).data('tooltipstyle')\r\n }\r\n })\r\n });\r\n\r\n $(\"a.jTipInline\", subset).each(function () {\r\n var style = $(this).data('tooltipstyle');\r\n if (style != '' && style != null && style != undefined)\r\n style = ' ' + style;\r\n else\r\n style = '';\r\n\r\n $(this).qtip({\r\n content: {\r\n text: $(\"div.tooltipcontent\", this).text(),\r\n title: {\r\n text: $(this).attr('name')\r\n }\r\n },\r\n position: {\r\n my: 'left center',\r\n at: 'right center',\r\n viewport: $(window),\r\n effect: false\r\n },\r\n style: {\r\n classes: 'qtip-origami' + style\r\n }\r\n })\r\n });\r\n }\r\n\r\n $(\"a.cancelPopup\", subset).on('click', function () {\r\n var searchParams = new URLSearchParams(window.location.search);\r\n\r\n TryHideParentPopup();\r\n });\r\n\r\n $(\".linkIcon\").on('click',function () {\r\n var href: any = $(this).attr(\"href\");\r\n if (href != null && href.length > 0) {\r\n if ($(this).hasClass(\"thickbox\")) {\r\n openThickboxPopup(href);\r\n } else {\r\n window.location = href;\r\n }\r\n }\r\n });\r\n\r\n $('button.search', subset).each(function () {\r\n var divId = $(this).data('divid');\r\n if (divId == undefined || divId == null)\r\n return;\r\n\r\n var button = $(this);\r\n\r\n $(this).closest(\"#\" + divId).find(\":input\").on(\"keydown\", function (event) {\r\n if (event.keyCode == 13) {\r\n event.preventDefault();\r\n button.trigger(\"click\");\r\n }\r\n });\r\n });\r\n\r\n $('button.clearSearch', subset).on('click',function () {\r\n\r\n var divId = $(this).data('divid');\r\n if (divId == undefined || divId == null)\r\n return;\r\n\r\n // Clear the hidden inputs for the multi-select searches\r\n $('input[type=hidden][name^=__multiselectsearch_]').each(function () {\r\n $(this).val('');\r\n });\r\n\r\n // Clear the checkboxes for the multi-select searches\r\n $('input[type=checkbox][name^=__multiselectsearch_]').each(function () {\r\n $(this).prop(\"checked\", false);\r\n });\r\n\r\n // reset all values\r\n $(this).closest(\"#\" + divId).find(\":input:not(.constant,:button)\").val(\"\");\r\n\r\n $(this).closest(\"#\" + divId).find(\".chosen-select\").val('').trigger(\"chosen:updated\");\r\n });\r\n\r\n // popup menu\r\n $('button.menu', subset).one('click', openMenu);\r\n\r\n $('td.money', subset).each(function () {\r\n if (parseFloat(GetRawInvariantNumber($(this).text())) < 0) {\r\n $(this).addClass('red');\r\n }\r\n });\r\n\r\n $('td.link', subset).on(\"mouseenter\", function () {\r\n $(this).addClass('highlight');\r\n }).on(\"mouseleave\",\r\n function () {\r\n $(this).removeClass('highlight');\r\n }\r\n );\r\n\r\n //Search Control - Date Fields:\r\n $('input.searchInputDate:not(.inputDate)', subset).each(function () {\r\n applyDateInputMasking($(this));\r\n });\r\n\r\n $(\"input[type='text']\", subset).addClass('textInput');\r\n\r\n $(\"input.socialsecurity\", subset).maskedInput({ mask: \"ssn\" });\r\n\r\n $(\"input.socialsecurity_partial\", subset).maskedInput({ mask: \"ssn_partial\" });\r\n $(\"input.socialsecurity_partial\", subset).attr(\"placeholder\", \"9999\");\r\n\r\n $(\"input.fein\", subset).maskedInput({ mask: \"fein\" });\r\n\r\n $(\"span.passwordInputShow\", subset).on('click',function () {\r\n var textField = $(this).closest(\"span.value\").find('input[name]')[0];\r\n if (typeof textField == 'undefined')\r\n return;\r\n\r\n var showText = $(this).hasClass(\"faded\");\r\n\r\n if (showText)\r\n $(textField).attr('type', 'text');\r\n else\r\n $(textField).attr('type', 'password');\r\n\r\n $(this).toggleClass(\"faded\");\r\n });\r\n\r\n $('input.inputDate', subset).each(function () {\r\n //Don't add a date lookup button if the input field is read-only. ORDEV-10718\r\n if (!$(this).attr(\"readOnly\")) {\r\n initializeDateControl(this);\r\n }\r\n });\r\n\r\n $('input.integerPicker', subset).each(function () {\r\n initializeIntegerSpinnerControl(this);\r\n });\r\n\r\n $(\".ui-datepicker-trigger\").each(function () {\r\n $(this).attr('aria-label', 'Click to select date from calendar');\r\n $(this).attr('title', 'Click to select date from calendar');\r\n });\r\n\r\n $('input.relativeDatePicker', subset).each(function () {\r\n initializeRelativeDatePicker(this);\r\n });\r\n\r\n // ensure that maskedInput function is loaded\r\n if (typeof initMaskedInput == 'function') {\r\n $('input.masked', subset).maskedInput();\r\n $('input.maskedDecimal', subset).each(function () { initializeDecimalControl(this) });\r\n $('input.maskedInteger', subset).each(function () { initializeIntegerControl(this) });\r\n $('input.maskedDigitsOnly', subset).each(function () { initializeDigitsOnlyControl(this) });\r\n }\r\n\r\n\t\t// Disable inputs (including buttons) in disabled li, but still allow unmasking of sensitive fields\r\n $(\"li.disabled :input:not(.sensitiveFieldButton)\").attr(\"disabled\", \"disabled\").addClass(\"locked\");\r\n $(\"li.disabled .lookupImage\").hide();\r\n $(\"li.disabled .ui-datepicker-trigger\").hide();\r\n\r\n $('input.inputTime', subset).each(function () {\r\n initializeTimeControl(this);\r\n });\r\n\r\n $('input.inputTime24', subset).each(function () {\r\n initializeTime24Control(this);\r\n });\r\n\r\n $('input.inputLookup', subset).each(function () {\r\n initializeInputLookup(this);\r\n });\r\n\r\n $('#relativeDatePicker a', subset).on('click',function () {\r\n $(pickerCurrentInput).val($(this).attr(\"alt\"));\r\n $(pickerCurrentInput).trigger(\"change\");\r\n closePopup($(\"#relativeDatePicker\"), null);\r\n });\r\n\r\n if ($.datepicker) {\r\n $('#relativeDatePicker_staticDate', subset).datepicker({\r\n changeMonth: true,\r\n changeYear: true,\r\n showOtherMonths: true,\r\n selectOtherMonths: true,\r\n beforeShowDay: isDateAvailable,\r\n yearRange: '-100:+30',\r\n onSelect: function (dateText) {\r\n $(pickerCurrentInput).val(dateText);\r\n $(pickerCurrentInput).trigger(\"change\");\r\n closePopup($(\"#relativeDatePicker\"), null);\r\n }\r\n });\r\n }\r\n\r\n $('div.fieldPicker a', subset).on('click',function () {\r\n $(pickerCurrentInput).val($(this).attr(\"alt\"));\r\n });\r\n\r\n $('div.inlineExternal', subset).each(function () {\r\n\r\n if ($(this).is('.hidden-saveAndContinue'))\r\n return;\r\n\r\n ajaxLoadPanel($(this), true);\r\n });\r\n\r\n $(\".inlineAnchor\", subset).on('click',function () {\r\n\r\n var url = $(this).data(\"origamiurl\");\r\n if (url == null || url.trim().length == 0)\r\n return;\r\n\r\n var parent = $(this).closest(\"div.inlineExternal\");\r\n if (parent.length == 0)\r\n return;\r\n\r\n parent.data(\"origamiurl\", url);\r\n ajaxLoadPanel(parent, false);\r\n });\r\n\r\n $('div.collapseDetails div.collapseMarker:first', subset).each(function () { collapseDetails(this); });\r\n\r\n initializeExpanders(subset);\r\n\r\n initializeConfigurablePanels();\r\n\r\n //OUT OF OFFICE\r\n $('a.turnoffoutofficebanner', subset).on('click',function () {\r\n var url = getServerAppRoot() + \"OutOfOfficeDetails/CloseOutOfOfficeFromBanner\";\r\n $.get(url, function (data) {\r\n if (data.status == \"fail\") {\r\n statusErrorMessage(data.message);\r\n } else {\r\n $('div.outofoffice.message').hide();\r\n }\r\n });\r\n });\r\n\r\n //Save and Continue Button on Grid Panels\r\n $(\"button.saveAndContinueGridPanel\", subset).on('click', function () {\r\n var autoAddDomain = null;\r\n var validateRequired = ($(this).hasClass(\"validateRequired\"));\r\n var applyValidations = ($(this).hasClass(\"applyValidations\"));\r\n if ($(this).hasClass(\"autoAdd\")) {\r\n autoAddDomain = $(this).data(\"domain\");\r\n }\r\n\r\n if ($(this).hasClass(\"inlineSave\"))\r\n saveAndContinueInline($(this), 'entryForm', validateRequired, applyValidations);\r\n else\r\n submitSaveAndContinue('entryForm', autoAddDomain, validateRequired, applyValidations);\r\n });\r\n\r\n $(\"ul.buttonGroup:not(.viewonly)\", subset).each(function () {\r\n var fieldname = $(this).data(\"fieldname\");\r\n if (fieldname == null)\r\n return;\r\n\r\n var inputctl = $(\":hidden[name='\" + fieldname + \"']\");\r\n var startval = inputctl.val();\r\n if (startval != \"\") {\r\n $('li[data-value=\"' + startval + '\"]', this).addClass(\"selected\");\r\n }\r\n\r\n $(\"li\", this).on('click',function () {\r\n if ($(this).hasClass(\"selected\")) {\r\n $(this).removeClass(\"selected\");\r\n $(inputctl).val(\"\").trigger(\"change\");\r\n return;\r\n }\r\n\r\n var ul = $(this).closest(\"ul\");\r\n $(\"li\", ul).removeClass(\"selected\");\r\n\r\n $(this).addClass(\"selected\");\r\n $(inputctl).val($(this).data(\"value\")).trigger(\"change\");\r\n });\r\n });\r\n\r\n $(\"div.image-slideshow\", subset).each(function () {\r\n var images = $(\".slide-image\", this);\r\n if (images.length == 0)\r\n return;\r\n\r\n $(images).eq(0).addClass(\"active\").show();\r\n\r\n var fadeInSeconds = $(this).data(\"fadeInSeconds\");\r\n var retainSeconds = $(this).data(\"retainSeconds\");\r\n\r\n if (fadeInSeconds == null)\r\n fadeInSeconds = 3;\r\n\r\n if (retainSeconds == null)\r\n retainSeconds = 5;\r\n\r\n var div = $(this);\r\n\r\n setInterval(function () { cycleSlideShow(div, fadeInSeconds * 1000) }, retainSeconds * 1000);\r\n });\r\n\r\n initSensitiveFields(subset);\r\n\r\n initializeToolTips(subset);\r\n\r\n initializeSignalRProxies();\r\n }\r\n catch (err) {\r\n console.error(err);\r\n }\r\n finally {\r\n notifyInitLoaded(subset);\r\n }\r\n}\r\n\r\nfunction cycleSlideShow(div, fadeIn) {\r\n\r\n var $active = $('.slide-image.active', div);\r\n var $next = ($active.next('.slide-image').length > 0) ? $active.next('.slide-image') : $('.slide-image', div).first();\r\n\r\n $next.css('z-index', 2).show();\r\n $active.fadeOut(fadeIn, function () {\r\n $active.css('z-index', 1).show().removeClass('active');\r\n $next.css('z-index', 3).addClass('active');\r\n });\r\n\r\n}\r\n\r\nfunction ieOrOldEdge() {\r\n return (document.documentMode || /Edge/.test(navigator.userAgent));\r\n}\r\n\r\nfunction initializeToolTips(subset) {\r\n\r\n var tippyDefaultOptions = {\r\n theme: (typeof getToolTipTheme === 'function' ? getToolTipTheme() : 'dark'),\r\n animateFill: false,\r\n interactive: true,\r\n placement: \"top-start\",\r\n a11y: (typeof getCurrentUserUsesAssistiveTechnology === 'function' ? getCurrentUserUsesAssistiveTechnology() : 0) == 1\r\n };\r\n\r\n var tippyAjaxDefaultOptions = {\r\n content: 'Loading...',\r\n animateFill: false,\r\n animation: 'fade',\r\n flipOnUpdate: true,\r\n a11y: (typeof getCurrentUserUsesAssistiveTechnology === 'function' ? getCurrentUserUsesAssistiveTechnology() : 0) == 1\r\n };\r\n\r\n $(\"[data-tippy-content]\", subset).each(function () {\r\n var useOptions: any = tippyDefaultOptions;\r\n if (typeof $(this).attr('data-tippy-max-width') != 'undefined')\r\n useOptions.maxWidth = $(this).attr('data-tippy-max-width');\r\n\r\n if (ieOrOldEdge()) {\r\n if ($(this).parent('label[title]').length > 0)\r\n useOptions.placement = \"right-start\";\r\n }\r\n\r\n var thisTippy = tippy(this, useOptions);\r\n\r\n if (thisTippy) {\r\n thisTippy.props.onMount = function (instance) {\r\n shrinkTooltipIfNecessary(instance);\r\n }\r\n }\r\n });\r\n\r\n $(\"[data-tippy-image]\", subset).each(function () {\r\n var useOptions: any = tippyDefaultOptions;\r\n var srcUrl = $(this).attr('data-tippy-image');\r\n var title = $(this).attr('data-title') || \"\";\r\n var maxWidth = $(this).attr('data-tippy-max-width') || \"400px\";\r\n var lightbox = $(this).is(\"[data-uselightbox]\");\r\n\r\n useOptions.maxWidth = maxWidth;\r\n useOptions.placement = \"left-end\";\r\n useOptions.theme = \"dark\";\r\n useOptions.interactive = true;\r\n useOptions.delay = [500,0];\r\n\r\n var thisTippy = tippy(this, useOptions);\r\n if (thisTippy === undefined)\r\n return;\r\n\r\n thisTippy.props.onShow = function (instance) {\r\n if (instance.state.ajax === undefined) {\r\n instance.state.ajax = {\r\n isFetching: false,\r\n canFetch: true\r\n };\r\n }\r\n\r\n if (instance.state.ajax.isFetching || !instance.state.ajax.canFetch) {\r\n return;\r\n }\r\n\r\n const divThumbnail = document.createElement(\"div\");\r\n divThumbnail.classList.add(\"tippy-image\");\r\n divThumbnail.style.display = \"block\";\r\n\r\n const spanContainer = document.createElement(\"div\");\r\n spanContainer.classList.add(\"tippy-filename-icon\");\r\n spanContainer.innerHTML = \" \" + title;\r\n spanContainer.style[\"padding-bottom\"] = \"4px\";\r\n spanContainer.style[\"text-align\"] = \"center\";\r\n spanContainer.style.display = \"block\";\r\n\r\n const imgContainer = document.createElement(\"div\");\r\n imgContainer.style.display = 'block';\r\n\r\n const image = new Image()\r\n image.style[\"max-width\"] = maxWidth;\r\n image.src = srcUrl;\r\n image.style[\"text-align\"] = \"center\";\r\n image.style.display = \"none\";\r\n \r\n if(lightbox)\r\n image.title = \"Click to show full screen\";\r\n\r\n imgContainer.appendChild(image);\r\n\r\n divThumbnail.appendChild(spanContainer);\r\n divThumbnail.appendChild(imgContainer);\r\n\r\n instance.setContent(divThumbnail)\r\n\r\n $(image).on('load', function(){\r\n instance.state.ajax.isFetching = false;\r\n $(image).parent().siblings().find(\"i\").remove();\r\n\r\n if(lightbox)\r\n {\r\n $(image).addClass(\"clickable\");\r\n $(image).on('click',function() {\r\n if(typeof instance.reference != 'undefined')\r\n {\r\n $(instance.reference).siblings(\"a[data-lightbox]\").trigger(\"click\");\r\n instance.hide(300);\r\n }\r\n });\r\n }\r\n\r\n $(image).fadeIn(300);\r\n });\r\n };\r\n\r\n thisTippy.props.onHidden = function (instance) {\r\n instance.setContent('Loading...');\r\n instance.state.ajax.canFetch = true;\r\n };\r\n });\r\n\r\n $(\"[data-tippy-ajax-file]\", subset).each(function () {\r\n\r\n var useOptions: any = tippyDefaultOptions;\r\n for (var attrname in tippyAjaxDefaultOptions) { useOptions[attrname] = tippyAjaxDefaultOptions[attrname]; }\r\n\r\n if (typeof $(this).attr('data-tippy-max-width') != 'undefined')\r\n useOptions.maxWidth = $(this).attr('data-tippy-max-width');\r\n\r\n var thisTippy = tippy(this, useOptions);\r\n\r\n\r\n try {\r\n\r\n thisTippy.props.onShow = function (instance) {\r\n if (instance.state.ajax === undefined) {\r\n instance.state.ajax = {\r\n isFetching: false,\r\n canFetch: true\r\n };\r\n }\r\n\r\n if (instance.state.ajax.isFetching || !instance.state.ajax.canFetch) {\r\n return;\r\n }\r\n\r\n $.get($(instance.reference).attr('data-tippy-ajax-file'), function (data) {\r\n instance.setContent(data);\r\n\r\n if (data != null && data.includes(\"googleMap\")) {\r\n $(\"div.googleMap\", instance.popper).each(function () {\r\n initializeMap(this);\r\n });\r\n }\r\n\r\n if (data != null && !data.includes(\"googleMap\")) {\r\n shrinkTooltipIfNecessary(instance);\r\n }\r\n })\r\n .always(function () {\r\n instance.state.ajax.isFetching = false;\r\n });\r\n };\r\n\r\n thisTippy.props.onHidden = function (instance) {\r\n instance.setContent('Loading...');\r\n instance.state.ajax.canFetch = true;\r\n };\r\n\r\n } catch (error) {\r\n //console.error(error);\r\n // expected output: ReferenceError: nonExistentFunction is not defined\r\n // Note - error messages will vary depending on browser\r\n }\r\n });\r\n}\r\n\r\nfunction initializeExpanders(subset) {\r\n\r\n $(subset).find('.expander.expanded img').not('.white').attr('src', '/Content/images/expanded-arrow-down.png');\r\n\r\n $(subset).find('.expander.expanded img.white').attr('src', '/Content/images/expanded-arrow-down-white.png');\r\n\r\n $(subset).find('.expander.collapsed img').not('.white').attr('src', '/Content/images/collapsed-arrow-right.png');\r\n\r\n $(subset).find('.expander.collapsed img.white').attr('src', '/Content/images/collapsed-arrow-right-white.png');\r\n\r\n $(subset).find('.expander.collapsed').each(function () {\r\n $(this).closest('.expand-section').siblings('.expand-content').hide();\r\n });\r\n\r\n $(subset).find('.expander').on('click',function () {\r\n var hide = false;\r\n //If we're clicking somewhere in the div other than the element with the expanded/collapsed class on it, we don't trigger the expand/collapse.\r\n if (!$(this).hasClass(\"expanded\") && !$(this).hasClass(\"collapsed\")) {\r\n return;\r\n }\r\n if ($(this).hasClass('expanded'))\r\n hide = true;\r\n\r\n if (hide == true) {\r\n $(this).closest('.expand-section').siblings('.expand-content').slideUp('fast');\r\n $(this).find('img').not('.white, .inlineIcon').attr('src', '/Content/images/collapsed-arrow-right.png');\r\n $(this).find('img.white').attr('src', '/Content/images/collapsed-arrow-right-white.png');\r\n screenReaderMessage('Section collapsed', false);\r\n }\r\n else {\r\n $(this).closest('.expand-section').siblings('.expand-content').slideDown('fast');\r\n $(this).find('img').not('.white, .inlineIcon').attr('src', '/Content/images/expanded-arrow-down.png');\r\n $(this).find('img.white').attr('src', '/Content/images/expanded-arrow-down-white.png');\r\n screenReaderMessage('Section expanded', false);\r\n }\r\n $(this).toggleClass('expanded');\r\n $(this).toggleClass('collapsed');\r\n return true;\r\n });\r\n}\r\n\r\nfunction onPanelExpanderClick() {\r\n var hide = false;\r\n if ($(this).hasClass('expanded'))\r\n hide = true;\r\n\r\n var header = $(this).parent();\r\n var content = $(header).siblings();\r\n\r\n if (hide == true) {\r\n $(content).each(function () {\r\n $(this).slideUp('fast');\r\n });\r\n $(this).removeClass('expanded');\r\n $(this).addClass('collapsed');\r\n $(this).find('img').not('.white').attr('src', '/Content/images/collapsed-arrow-right.png');\r\n $(this).find('img.white').attr('src', '/Content/images/collapsed-arrow-right-white.png');\r\n }\r\n else {\r\n $(content).each(function () {\r\n $(this).slideDown('fast');\r\n });\r\n $(this).addClass('expanded');\r\n $(this).removeClass('collapsed');\r\n $(this).find('img').not('.white').attr('src', '/Content/images/expanded-arrow-down.png');\r\n $(this).find('img.white').attr('src', '/Content/images/expanded-arrow-down-white.png');\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction initializeConfigurablePanels() {\r\n\r\n $(document).find('.expandable-panel').each(function () {\r\n if (!$(this).data(\"initialized\") === true) {\r\n // get expandable panel header (assuming that the expandable-panel contains div.panel with an h3 as the title of the panel)\r\n var header = $(this).find('div.panel-contents > div.panel > h3').first();\r\n if (header.length === 0) {\r\n // check for lazy loading panel\r\n var lazyLoadedPanel = $(this).find('div.panel-contents > div.inlineExternal');\r\n if (lazyLoadedPanel.data(\"loadStatus\") === \"success\") {\r\n // if the panel has been loaded get the expandable panel header from the new contents\r\n header = $(lazyLoadedPanel).find('div.panel > h3').first();\r\n }\r\n\r\n if (header.length === 0) return;\r\n }\r\n\r\n // prepare the header by adding an expander button next to it\r\n var initialState = $(this).data(\"initialState\");\r\n\r\n var initialImgSrc = initialState === \"collapsed\" ? \"/Content/images/collapsed-arrow-right.png\" : \"/Content/images/expanded-arrow-down.png\";\r\n\r\n //Only add an expander if one doesn't already exist. Some panels, like the BasicGridPanel may add their own expander based on panel-specific form definitions (ex: The GridPanel panelSortOrder Collapse attribute). If it already exists, initialize the image and state, if necessary.\r\n var existingExpander = $(header).find(\"a.expander\");\r\n if ($(existingExpander).length) {\r\n //If the existing expander has a different initial state than what it should have, change it here\r\n if (!$(existingExpander).hasClass(initialState)) {\r\n $(existingExpander).removeClass(\"expanded\");\r\n $(existingExpander).removeClass(\"collapsed\");\r\n $(existingExpander).addClass(initialState);\r\n }\r\n $(existingExpander).find(\"img\").attr(\"src\", initialImgSrc)\r\n }\r\n else {\r\n var expanderButtonHtml = '\"Click';\r\n header.prepend(expanderButtonHtml).find('.expander').on('click',onPanelExpanderClick);\r\n }\r\n\r\n // if the initial state of the expandable-panel is 'collapsed' then collapse each sibling to the header. Otherwise, ensure they are shown.\r\n if (initialState === \"collapsed\") {\r\n var content = $(header).siblings();\r\n $(content).each(function () {\r\n $(this).hide();\r\n });\r\n }\r\n else {\r\n var content = $(header).siblings();\r\n $(content).each(function () {\r\n $(this).show();\r\n });\r\n }\r\n\r\n // identify the expandable-panel as initialized so it's not initialized again\r\n $(this).data(\"initialized\", true);\r\n }\r\n });\r\n}\r\n\r\nfunction expandCollapsedPanelsWithRequiredFields(formID) {\r\n if ((formID === null) || (formID === undefined) || (formID === ''))\r\n return;\r\n\r\n $('#' + formID + ' a.expander.collapsed').each(function() {\r\n if ($(this).closest('.expand-section').siblings('.expand-content').find('li.required').length > 0) {\r\n $(this).find('img').not('.white').attr('src', '/Content/images/expanded-arrow-down.png');\r\n $(this).find('img.white').attr('src', '/Content/images/expanded-arrow-down-white.png');\r\n $(this).closest('.expand-section').siblings('.expand-content').show();\r\n $(this).toggleClass('expanded');\r\n }\r\n });\r\n}\r\n\r\nfunction expandTopLevelCollapsedPanels(formID) {\r\n if ((formID === null) || (formID === undefined) || (formID === ''))\r\n return;\r\n\r\n $('#' + formID + ' a.expander.collapsed.toplevel').each(function () {\r\n $(this).find('img').not('.white').attr('src', '/Content/images/expanded-arrow-down.png');\r\n $(this).find('img.white').attr('src', '/Content/images/expanded-arrow-down-white.png');\r\n $(this).closest('.expand-section').siblings('.expand-content').show();\r\n $(this).toggleClass('expanded');\r\n });\r\n}\r\n\r\nfunction resizeIframeIfNecessary() {\r\n\r\n if (window == window.top)\r\n return;\r\n\r\n if ($(\"div.jqmWindow\").length == 0)\r\n return;\r\n\r\n $(\"div.jqmWindow\").addClass(\"innerWindow\");\r\n}\r\n\r\n// #region origami namespace \r\nvar origami = origami = origami || {};\r\n\r\norigami._pageCompletes = [];\r\norigami._panelCompletes = [];\r\norigami._delayLoadRefCount = 0;\r\n\r\norigami.pageComplete = function(callback) {\r\n origami._pageCompletes.push(callback);\r\n}\r\n\r\norigami.panelComplete = function (callback) {\r\n origami._panelCompletes.push(callback);\r\n}\r\n\r\norigami.runPageCompletes = function () {\r\n for (var i in origami._pageCompletes)\r\n origami._pageCompletes[i]();\r\n}\r\n\r\norigami.runPanelCompletes = function (panel) {\r\n for (var i in origami._panelCompletes)\r\n origami._panelCompletes[i](panel);\r\n}\r\n\r\norigami.startDelayLoad = function() {\r\n origami._delayLoadRefCount++;\r\n}\r\n\r\norigami.completeDelayLoad = function () {\r\n origami._delayLoadRefCount--;\r\n if (origami._delayLoadRefCount <= 0)\r\n origami.runPageCompletes();\r\n}\r\n\r\norigami.createItemsArrayFromGridPanelTable = function (gridPanel) {\r\n return createItemsArrayFromGridPanelTable(gridPanel);\r\n};\r\n// #endregion \r\n\r\nfunction receiveMessage(event) {\r\n switch (event.data.type) {\r\n case \"hidePopup\":\r\n hidePopup();\r\n break;\r\n case \"refreshAjaxGridByClassName\":\r\n refreshAjaxGridByClassName(event.data.className);\r\n break;\r\n case \"setLocation\":\r\n window.location = event.data.location;\r\n break;\r\n case \"reload\":\r\n window.location.reload();\r\n break;\r\n case \"setLookupValueForControl\":\r\n setLookupValueForControl(event.data.controlID, event.data.id, event.data.description);\r\n break;\r\n case \"setLookupValue\":\r\n setLookupValue(event.data.id, event.data.description);\r\n break;\r\n case \"statusMessage\":\r\n statusMessage(event.data.statustype, event.data.message);\r\n break;\r\n case \"refreshSidePanels\":\r\n refreshSidePanels();\r\n break;\r\n default:\r\n // to enable logging to console, run this in your browser's console: origami.debug = true\r\n if (origami.debug)\r\n console.log(\"Unhandled message type received.\"); \r\n var evntLog = {};\r\n evntLog[\"isTrusted\"] = event.isTrusted;\r\n evntLog[\"origin\"] = event.origin;\r\n evntLog[\"data\"] = event.data;\r\n if (origami.debug)\r\n console.log(evntLog);\r\n break;\r\n }\r\n}\r\n\r\nfunction TryMessageEventListener() {\r\n try\r\n {\r\n window.addEventListener(\"message\", receiveMessage, false);\r\n }\r\n catch (e) {\r\n console.log('Unable to Add Event Listener: ' + e.Message);\r\n }\r\n}\r\n\r\nfunction modalVisible() {\r\n return $(\"#jqmContent\").is(\":visible\");\r\n}\r\n\r\nfunction hideJqmModalClose() {\r\n $('#dialogclosebutton').addClass('hidden');\r\n}\r\n\r\nfunction showJqmModalClose() {\r\n $('#dialogclosebutton').removeClass('hidden');\r\n}\r\n\r\nvar pageFullyInitialized = false;\r\n\r\n$(function () {\r\n TryMessageEventListener();\r\n\r\n //adding this to map the css function to the depricated and removed jquery function curCSS that is used by other libraries\r\n jQuery.curCSS = jQuery.css;\r\n\r\n if ($(\"#_csrfPostForm input[name=__RequestVerificationToken]\").length > 0) {\r\n $(\"#_csrfPostForm input[name=__RequestVerificationToken]\").attr('name', '__AjaxRequestVerificationToken');\r\n }\r\n\r\n // do this first in case user clicks on links quickly\r\n updateBreadCrumbsWithIndexRequestLog();\r\n\r\n addInitLoadedListener(updateLinksWithSearchList);\r\n\r\n if ($.datepicker)\r\n $.datepicker.setDefaults({ shortYearCutoff: '+29' });\r\n\r\n resizeIframeIfNecessary();\r\n\r\n initGlobalSearch();\r\n\r\n origami.runPanelCompletes(window.document);\r\n initializeAll(this);\r\n\r\n if ($(\"#entryForm\").length)\r\n setFormFocus(\"#entryForm\", true);\r\n else if (!getCurrentUserUsesAssistiveTechnology())\r\n setFormFocus(\"#secondaryContent\");\r\n //else\r\n // setViewFocus(\"#hd\");\r\n\r\n $('a.fullDetails').on(\"click\", function () {\r\n var form = $(this).closest(\"div.collapseDetails\");\r\n var marker = $(\"div.collapseMarker\", form).first();\r\n var text = $(this).text();\r\n\r\n if (text == \"Full Details\") {\r\n if (!isCompatibleBrowser()) {\r\n $(marker).nextAll(\"div.panel\").show();\r\n }\r\n else {\r\n $(marker).nextAll(\"div.panel\").slideDown(\"fast\");\r\n }\r\n\r\n $('#full-details-expader').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-up');\r\n $(this).text(\"Hide Details\");\r\n }\r\n else if (text == \"Hide Details\") {\r\n if (!isCompatibleBrowser()) {\r\n $(marker).nextAll(\"div.panel\").hide();\r\n }\r\n else {\r\n $(marker).nextAll(\"div.panel\").slideUp(\"fast\");\r\n }\r\n\r\n $('#full-details-expader').removeClass('fa-chevron-circle-up').addClass('fa-chevron-circle-down');\r\n $(this).text(\"Full Details\");\r\n }\r\n });\r\n\r\n $(\"#jqmParams\").on(\"change\", function () {\r\n _currentMultiSelectList = null;\r\n\r\n var id = $(this).val();\r\n if (id == null || id.trim().length == 0)\r\n return;\r\n\r\n var control = $(\"#\" + id);\r\n if (!control.hasClass(\"multiselectadder\"))\r\n return;\r\n\r\n _currentMultiSelectList = $(\"div.multiselectlookuplist\", control.closest(\"div.multiselectlookup\"));\r\n });\r\n\r\n lockTitleArea();\r\n lockPagerBar();\r\n InitFavoriteRecord();\r\n highlightTitleTab();\r\n\r\n decorateValidationErrorLinks();\r\n\r\n // if no ajax loading\r\n if ($(\"div.inlineExternal\").length == 0)\r\n origami.runPageCompletes();\r\n\r\n $(function() {\r\n //This is the only script file we have with a nested ready function\r\n //This function will run after all other ready functions\r\n pageFullyInitialized = true;\r\n });\r\n});\r\n\r\nvar globalSearchTimer;\r\nvar globalSearchMinKeyStrokes = 3;\r\nvar globalSearchSearchDelay = 750;\r\nvar globalSearchLoaderTag = \"#globalSearchInputWrapper\";\r\nvar globalSearchActiveDomains: Array = [];\r\n\r\nfunction initGlobalSearch() {\r\n if ($(\"#globalSearchWrapper\").length == 0)\r\n return;\r\n\r\n document.addEventListener('click', function (e) {\r\n var isGlobalSearch = (e.target as Element).closest(\"#globalSearchWrapper\") != null;\r\n if (isGlobalSearch) {\r\n if (!(e.target as Element).closest(\"#globalSearchWrapper\").classList.contains(\"active\")) {\r\n activateGlobalSearch();\r\n }\r\n }\r\n else {\r\n deactivateGlobalSearch();\r\n }\r\n });\r\n\r\n document.addEventListener(\"keyup\", e => {\r\n if (isResponsiveMobileMode())\r\n return;\r\n\r\n if (e.key !== \"/\" || e.shiftKey || e.ctrlKey || e.metaKey) return;\r\n if (/^(?:input|textarea|select|button)$/i.test((e.target as HTMLInputElement).tagName)) return;\r\n\r\n if ($(e.target).hasClass(\"fr-element\"))\r\n return;\r\n\r\n e.preventDefault();\r\n activateGlobalSearch();\r\n });\r\n\r\n document.addEventListener('keydown', function (e) {\r\n if (isResponsiveMobileMode())\r\n return;\r\n\r\n if (e.keyCode === 27) { // ESC\r\n deactivateGlobalSearch();\r\n }\r\n });\r\n\r\n $(\"#header_globalSearchInput\").on(\"focus\", function () {\r\n fetchGlobalSearchRecentDocs();\r\n activateGlobalSearch();\r\n });\r\n\r\n $('#header_globalSearchInput').on(\"keyup\", function () {\r\n if (isResponsiveMobileMode())\r\n return;\r\n\r\n var searchValue = this.value;\r\n\r\n if (searchValue !== \"\") {\r\n showHideGlobalSearchAreaByID(\"recentdocs\", true);\r\n showHideGlobalSearchAreaByID(\"searchall\", false);\r\n }\r\n else {\r\n showHideGlobalSearchAreaByID(\"recentdocs\", false);\r\n showHideGlobalSearchAreaByID(\"searchall\", true);\r\n showHideGlobalSearchAreaByID(\"topmatches\", true);\r\n showHideGlobalSearchAreaByID(\"nomatchfound\", true);\r\n }\r\n\r\n if (searchValue.length >= globalSearchMinKeyStrokes) {\r\n\r\n if ($(\"#header_globalSearchInput\").data(\"last-search-text\") === searchValue) {\r\n return;\r\n }\r\n\r\n if (globalSearchTimer) {\r\n clearTimeout(globalSearchTimer);\r\n }\r\n globalSearchTimer = setTimeout(function () {\r\n $(\"#header_globalSearchInput\").data(\"last-search-text\", searchValue);\r\n showHideGlobalSearchAreaByID(\"topmatches\", true);\r\n showHideGlobalSearchAreaByID(\"nomatchfound\", true);\r\n\r\n var target = $(\"#globalSearch_quickresults #globalSearch_topmatches\");\r\n markLoaderRunning($(globalSearchLoaderTag), \"ld-ring\", \"ld-spin\", \"ld-ext-left\");\r\n\r\n var quickSearchDomainNames = [];\r\n if ($(\"#header_globalSearchDomains\").val() === \"*\") {\r\n $(\"#header_globalSearchDomains option\").each(function (k, elem) {\r\n if ($(elem).attr(\"value\") === \"*\")\r\n return;\r\n\r\n quickSearchDomainNames.push($(elem).val());\r\n });\r\n }\r\n else\r\n quickSearchDomainNames.push($(\"#header_globalSearchDomains\").val());\r\n\r\n $(\"#globalSearchWrapper #globalSearch_quickresults #globalSearch_topmatches div.globalSearch_results[data-domain]\").each(function (i, e) {\r\n if (quickSearchDomainNames.indexOf($(e).attr(\"data-domain\")) < 0)\r\n $(e).remove();\r\n });\r\n\r\n globalSearchActiveDomains = quickSearchDomainNames;\r\n\r\n for (var i = 0; i < quickSearchDomainNames.length; i++) {\r\n fetchGlobalQuickSearch(quickSearchDomainNames[i], quickSearchDomainNames.length);\r\n }\r\n\r\n }, globalSearchSearchDelay);\r\n }\r\n });\r\n}\r\n\r\nfunction showHideGlobalSearchAreaByID(idName: string, hide: boolean) {\r\n var selector = \"#globalSearchWrapper #globalSearch_quickresults #globalSearch_\" + idName;\r\n if (hide)\r\n $(selector).removeClass(\"active\");\r\n else\r\n $(selector).addClass(\"active\");\r\n}\r\n\r\nfunction deactivateGlobalSearch() {\r\n if ($(\"#globalSearchWrapper\").length == 0)\r\n return;\r\n\r\n $(\"#header_globalSearchDomains\").hide();\r\n document.getElementById(\"globalSearchWrapper\").classList.remove(\"active\");\r\n $(\"#globalSearchWrapper #globalSearch_quickresults\").removeClass(\"active\");\r\n $(\"#globalSearchWrapper #globalSearch_quickresults\").attr('aria-expanded', 'false');\r\n $(\"#globalSearchWrapper #globalSearch_quickresults\").attr('tabIndex', '-1');\r\n $(\".quickresultlink\").attr('tabIndex', '-1');\r\n $(\"#header_globalSearchDomains\").attr('tabIndex', '-1'); \r\n\r\n $(\"#header_globalSearchInput\").val(\"\");\r\n $(\"#header_globalSearchInput\").removeData();\r\n if ($(\"#header_globalSearchInput\").is(\":focus\"))\r\n $(\"#header_globalSearchInput\").trigger(\"blur\");\r\n showHideGlobalSearchAreaByID(\"searchall\", true);\r\n showHideGlobalSearchAreaByID(\"recentdocs\", true);\r\n showHideGlobalSearchAreaByID(\"nomatchfound\", true);\r\n showHideGlobalSearchAreaByID(\"topmatches\", true);\r\n markLoaderStopped($(globalSearchLoaderTag));\r\n}\r\n\r\nfunction removeFromGlobalSearchActiveDomains(domainName: string) {\r\n globalSearchActiveDomains = globalSearchActiveDomains.filter(function (item) {\r\n return item !== domainName;\r\n });\r\n\r\n if (globalSearchActiveDomains.length == 0)\r\n markLoaderStopped($(globalSearchLoaderTag));\r\n\r\n if ($(\"#globalSearch_quickresults #globalSearch_topmatches div.globalSearch_results[data-domain]\").length > 0) {\r\n showHideGlobalSearchAreaByID(\"topmatches\", false);\r\n showHideGlobalSearchAreaByID(\"nomatchfound\", true);\r\n }\r\n else {\r\n showHideGlobalSearchAreaByID(\"topmatches\", true);\r\n showHideGlobalSearchAreaByID(\"nomatchfound\", false);\r\n }\r\n}\r\n\r\nfunction activateGlobalSearch() {\r\n if ($(\"#globalSearchWrapper\").length == 0)\r\n return;\r\n\r\n $(\"#header_globalSearchDomains\").show();\r\n $(\"#globalSearchWrapper\").addClass(\"active\");\r\n $('#globalSearch_quickresults').attr('aria-expanded', 'true');\r\n $(\"#globalSearch_quickresults\").attr('tabIndex', '0');\r\n $(\".quickresultlink\").attr('tabIndex', '0');\r\n $(\"#header_globalSearchDomains\").attr('tabIndex', '0');\r\n document.getElementById(\"header_globalSearchInput\").focus();\r\n}\r\n\r\nfunction fetchGlobalQuickSearch(domainName: string, numDomains: number) {\r\n var searchInput = $(\"#header_globalSearchInput\").val();\r\n if (searchInput.length < globalSearchMinKeyStrokes) {\r\n removeFromGlobalSearchActiveDomains(domainName);\r\n return;\r\n }\r\n\r\n var quickSearchUrl = appendTPAClientID(getServerAppRoot() + \"Search/QuickSearch\");\r\n\r\n var reqData = {};\r\n reqData[\"domainName\"] = domainName;\r\n reqData[\"filter\"] = searchInput;\r\n reqData[\"numDomains\"] = numDomains;\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: quickSearchUrl,\r\n dataType: 'json',\r\n data: reqData,\r\n async: true,\r\n success: function (result) {\r\n refreshGlobalSearchDomainResults(domainName, result);\r\n },\r\n error: function (xhr: any, status, error) {\r\n try {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n console.log(err);\r\n }\r\n catch {\r\n console.log(xhr.responseText);\r\n }\r\n removeFromGlobalSearchActiveDomains(domainName);\r\n }\r\n });\r\n}\r\n\r\nfunction refreshGlobalSearchDomainResults(domainName, result) {\r\n var mainTarget = $(\"#globalSearch_quickresults #globalSearch_topmatches\");\r\n\r\n var domainSectionSelector = \"#globalSearch_quickresults #globalSearch_topmatches div.globalSearch_results[data-domain='\" + result.domainName + \"']\";\r\n\r\n var exists = $(domainSectionSelector).length > 0;\r\n\r\n if (exists && result.data.length == 0)\r\n $(domainSectionSelector).remove();\r\n\r\n if (result.data.length == 0) {\r\n removeFromGlobalSearchActiveDomains(domainName);\r\n return;\r\n }\r\n\r\n var topMatches = `
    ${result.domainDescription.escapeHTML()}
      `;\r\n for (var i = 0; i < result.data.length; i++) {\r\n var recentObj = result.data[i];\r\n var liItem = $(\"
    • \");\r\n var linkItem = $(\"\");\r\n $(linkItem).html(`
      ${recentObj.Value.escapeHTML()}
      `);\r\n $(linkItem).attr(\"href\", appendTPAClientID(getServerAppRoot() + result.controllerName + \"/View/\" + recentObj.Key));\r\n $(liItem).prepend(linkItem);\r\n topMatches += $(liItem)[0].outerHTML;\r\n }\r\n topMatches += \"
    \";\r\n\r\n if (exists)\r\n $(domainSectionSelector).html(topMatches);\r\n else {\r\n mainTarget.append(`
    ${topMatches}
    `);\r\n }\r\n removeFromGlobalSearchActiveDomains(domainName);\r\n}\r\n\r\nfunction fetchGlobalSearchRecentDocs() {\r\n if (isResponsiveMobileMode())\r\n return;\r\n\r\n if ($(\"#header_globalSearchInput\").length == 0 || $(\"#header_globalSearchInput\").val() !== \"\") {\r\n $(\"#globalSearchWrapper #globalSearch_quickresults #globalSearch_recentdocs\").removeClass(\"active\");\r\n return;\r\n }\r\n\r\n var recentDocsUrl = appendTPAClientID(getServerAppRoot() + \"Search/GetRecentDocumentsAcrossDomains\");\r\n var reqData = {};\r\n reqData[\"currURL\"] = window.location.href;\r\n\r\n if (!$(\"#globalSearch_quickresults\").hasClass(\"active\"))\r\n $(\"#globalSearch_quickresults\").addClass(\"active\");\r\n\r\n if (!$(\"#globalSearch_recentdocs\").hasClass(\"active\"))\r\n $(\"#globalSearch_recentdocs\").addClass(\"active\");\r\n\r\n if ($(\"#globalSearch_recentdocs\").hasClass(\"loaded\"))\r\n return;\r\n\r\n $(\"#globalSearchWrapper #globalSearch_quickresults #globalSearch_recentdocs\").prepend(\"
    Recent Items
    \");\r\n $(\"#globalSearch_recentdocs\").addClass(\"loaded\");\r\n\r\n var target = $(\"#globalSearch_quickresults #globalSearch_recentdocs div.globalSearch_results\");\r\n markLoaderRunning($(globalSearchLoaderTag), \"ld-ring\", \"ld-spin\", \"ld-ext-left\");\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: recentDocsUrl,\r\n dataType: 'json',\r\n data: reqData,\r\n async: true,\r\n success: function (result) {\r\n if (result.status == 'success') {\r\n console.log(result);\r\n var recents = \"
      \";\r\n for (var i = 0; i < result.data.length; i++) {\r\n var recentObj = result.data[i];\r\n var liItem = $(\"
    • \");\r\n var linkItem = $(``);\r\n $(linkItem).html(`
      ${recentObj.description.escapeHTML()}
      ${recentObj.domainName.escapeHTML()}
      ${recentObj.lastAccessed.escapeHTML()}
      `);\r\n $(linkItem).attr(\"href\", recentObj.actionLink);\r\n $(liItem).prepend(linkItem);\r\n recents += $(liItem)[0].outerHTML;\r\n }\r\n recents += \"
    \";\r\n $(target).prepend(recents);\r\n markLoaderStopped($(globalSearchLoaderTag));\r\n }\r\n else {\r\n console.log(result);\r\n markLoaderStopped($(globalSearchLoaderTag));\r\n }\r\n },\r\n error: function (xhr: any, status, error) {\r\n try {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n console.log(err);\r\n }\r\n catch {\r\n console.log(xhr.responseText);\r\n }\r\n markLoaderStopped($(globalSearchLoaderTag));\r\n }\r\n });\r\n}\r\n\r\nfunction decorateValidationErrorLinks() {\r\n $(\"ul.validationSummary span.fieldName\").each(function (k, t) {\r\n var internalField = $(this).attr(\"for\");\r\n var origLabel = $(this).text();\r\n\r\n var inputElement = null;\r\n\r\n if (typeof internalField !== \"undefined\" && internalField.length > 0)\r\n inputElement = $(\"li[for='\" + internalField + \"'] :input[id]\");\r\n else\r\n inputElement = $(\"li[label='\" + origLabel + \"'] :input[id]\");\r\n\r\n if (typeof inputElement === 'undefined' || inputElement === null || inputElement.length === 0) {\r\n if (typeof internalField !== \"undefined\" && internalField.length > 0) {\r\n var labelOnlyElement = $(\"li[for='\" + internalField + \"']\");\r\n if (typeof labelOnlyElement !== \"undefined\" && labelOnlyElement.length > 0) {\r\n if (labelOnlyElement.attr(\"label\") !== \"\" && labelOnlyElement.attr(\"label\") !== origLabel)\r\n $(this).text(labelOnlyElement.attr(\"label\"));\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if ($(inputElement).is(\":visible\")) {\r\n var parentLi = $(inputElement).closest(\"li[label]\");\r\n\r\n if (typeof parentLi !== \"undefined\" && parentLi.length > 0) {\r\n if (parentLi.attr(\"label\") !== \"\" && parentLi.attr(\"label\") !== origLabel)\r\n $(this).text(parentLi.attr(\"label\"));\r\n }\r\n\r\n if (!$(inputElement).hasClass(\"input-validation-error\"))\r\n $(inputElement).addClass(\"input-validation-error\");\r\n\r\n $(this).addClass(\"clickableunderline\").attr(\"title\", \"Click to navigate to field on form\").attr(\"onclick\", \"goToValidationErrorField(this);\");\r\n }\r\n });\r\n}\r\n\r\nfunction goToValidationErrorField(element) {\r\n var internalField = $(element).attr(\"for\");\r\n var origLabel = $(element).text();\r\n\r\n var inputElement = null;\r\n\r\n if (typeof internalField !== \"undefined\" && internalField.length > 0)\r\n inputElement = $(\"li[for='\" + internalField + \"'] :input[id]\");\r\n else\r\n inputElement = $(\"li[label='\" + origLabel + \"'] :input[id]\");\r\n\r\n if (typeof inputElement === 'undefined' || inputElement === null || inputElement.length === 0)\r\n return;\r\n\r\n if ($(inputElement).is(\":visible\")) {\r\n $(inputElement).trigger(\"focus\");\r\n }\r\n}\r\n\r\nfunction InitFavoriteRecord()\r\n{\r\n $(\".FavoriteRecordStar\").each(\r\n function () {\r\n //Favorite Records Icon Hover Handler\r\n $(this).on(\"mouseenter\",\r\n function () {\r\n if ($(this).data(\"isfavorite\") != \"True\")\r\n {\r\n $(this).addClass('fas');\r\n $(this).removeClass('fal');\r\n $(this).attr('aria-label', 'Click to remove from favorites');\r\n }\r\n }).on(\"mouseleave\",\r\n function () {\r\n if ($(this).data(\"isfavorite\") != \"True\")\r\n {\r\n $(this).addClass('fal');\r\n $(this).removeClass('fas');\r\n $(this).attr('aria-label', 'Click to remove from favorites');\r\n }\r\n }\r\n );\r\n\r\n //Favorite Records Click Handler\r\n $(this).on('click',function () {\r\n toggleFavorite(this);\r\n });\r\n\r\n $(this).on('keypress', function (e) {\r\n if (e.which == 13) {\r\n toggleFavorite(this);\r\n }\r\n });\r\n });\r\n}\r\n\r\nfunction toggleFavorite(source) {\r\n var domainID = $(source).data(\"domainid\");\r\n var recordID = $(source).data(\"recordid\") || \"0\";\r\n var secondaryKey = $(source).data(\"secondarykey\") || \"\";\r\n var isfavorite = $(source).data(\"isfavorite\");\r\n var star = $(source);\r\n const url = getServerAppRoot() + getControllerName() + \"/SetFavorite?domainID=\" + domainID + \"&recordID=\" + recordID + \"&secondaryKey=\" + secondaryKey + \"&isCurrentFavorite=\" + isfavorite;\r\n $(source).prop('disabled', true);\r\n\r\n $.getJSON(url, function (data) {\r\n if (data.status == \"success\") {\r\n if (isfavorite == \"True\") {\r\n $(star).data(\"isfavorite\", \"False\");\r\n $(star).addClass('fal');\r\n $(star).removeClass('fas');\r\n $(star).attr(\"title\", \"Click to add to My Favorites list.\");\r\n screenReaderMessage('Dashboard removed from favorites', false);\r\n }\r\n else {\r\n $(star).data(\"isfavorite\", \"True\");\r\n $(star).addClass('fas');\r\n $(star).removeClass('fal');\r\n $(star).attr(\"title\", \"Click to remove from My Favorites list.\");\r\n screenReaderMessage('Dashboard added to favorites', false);\r\n }\r\n $(this).prop('disabled', false);\r\n $(star).trigger(\"origami.onfavoriterecordchange\", { detail: { priorStatus: isfavorite } });\r\n } else {\r\n statusErrorMessage(data.message);\r\n $(this).prop('disabled', false);\r\n }\r\n });\r\n}\r\n\r\n// http://stackoverflow.com/questions/2830542/prevent-double-submission-of-forms-in-jquery\r\njQuery.fn.preventDoubleSubmission = function() {\r\n $(this).on('submit',function(e){\r\n var $form = $(this);\r\n\r\n if ($form.data('submitted') === true) {\r\n // Previously submitted - don't submit again\r\n e.preventDefault();\r\n } else {\r\n // Mark it so that the next submit can be ignored\r\n $form.data('submitted', true);\r\n }\r\n });\r\n\r\n // Keep chainability\r\n return this;\r\n};\r\n\r\nvar _globalwindowloc = null;\r\nfunction setWindowLocationOnce(url, postAction, includeQueryString = false) {\r\n if (_globalwindowloc == url)\r\n return;\r\n\r\n _globalwindowloc = url;\r\n\r\n if (includeQueryString) {\r\n // Get current query string values\r\n var queryString = window.location.search;\r\n if (queryString) {\r\n // Append query string to the action URL\r\n if (url.indexOf('?') === -1) {\r\n url += queryString;\r\n } else {\r\n url += '&' + queryString.substring(1);\r\n }\r\n }\r\n }\r\n\r\n if (typeof postAction != 'undefined' && postAction == 'true')\r\n postCRSFHref(url);\r\n else\r\n window.location = url;\r\n}\r\n\r\nfunction openChildWindow(windowName, options, url, useCookies) {\r\n var windowOptions;\r\n //explicitly use cookies and not options \r\n if (useCookies && !options){\r\n var cookiePrefix = 'origami.' + windowName; \r\n var left = getCookie(cookiePrefix + '.left');\r\n var top = getCookie(cookiePrefix + '.top');\r\n var width = getCookie(cookiePrefix + '.width');\r\n var height = getCookie(cookiePrefix + '.height');\r\n windowOptions = 'top=' + top + ', left=' + left + ', width=' + width + ', height=' + height;\r\n windowOptions += ', resizable=yes, location=no, scrollbars=yes';\r\n }\r\n else if (!useCookies && options){\r\n windowOptions = options;\r\n }\r\n var win = window.open(url, windowName, windowOptions);\r\n return win;\r\n}\r\n\r\nfunction eraseCookie(name) {\r\n writeCookie(name, \"\", -1);\r\n}\r\n\r\nfunction writeCookie (key, value, days?, isEssential = true) {\r\n var date = new Date();\r\n // Default at 365 days.\r\n days = days || 365;\r\n // Get unix milliseconds at current time plus number of days\r\n date.setTime(+ date + (days * 86400000)); //24 * 60 * 60 * 1000\r\n\r\n //to qualify for the \"strictly necessary exemption\" for essential cookies, we need to set them to be session-only length\r\n var expires = enableEssentialCookiesOnly && isEssential && days > 0 ? \"\" : date.toUTCString();\r\n var shouldSetCookie = !enableEssentialCookiesOnly || isEssential;\r\n\r\n if (shouldSetCookie)\r\n window.document.cookie = key + \"=\" + value + \"; expires=\" + expires + \"; path=/\";\r\n\r\n return value;\r\n};\r\n\r\nfunction getCookie(name) {\r\n var value = \"; \" + document.cookie;\r\n var parts = value.split(\"; \" + name + \"=\");\r\n if (parts.length == 2) return parts.pop().split(\";\").shift();\r\n};\r\n\r\nfunction skipNavigation() {\r\n setViewFocus(\"#page\");\r\n}\r\n\r\nfunction skipToSecondaryContent() {\r\n setViewFocus(\"#secondaryContent\");\r\n}\r\n\r\nfunction makeUntabbable() {\r\n\r\n $(':tabbable').each(function () {\r\n\r\n var tabbableElement = $(this).attr('id');\r\n\r\n if (tabbableElement !== \"dialogclosebutton\") {\r\n\r\n var index: any = $(this).attr('tabindex');\r\n if (index == null)\r\n index = 0;\r\n $(this).data('oldTabIndex', index);\r\n $(this).attr('tabindex', -1);\r\n }\r\n });\r\n}\r\n\r\nfunction restoreTabbable() {\r\n $(':focusable').each(function () {\r\n var index = $(this).data('oldTabIndex');\r\n if (index != null)\r\n $(this).attr('tabindex', index);\r\n });\r\n}\r\n\r\nfunction isCompatibleBrowser() {\r\n var ua = navigator.userAgent; // The use of userAgent is strongly discouraged since some browsers allow users to modify this value.\r\n if (String(ua).indexOf(\"Trident\") != -1 ) { //IE does not support includes so I had to use indexOf. Trident is the unique identifyer of IE in the user Agent.\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction browserSupportsDragDrop() {\r\n return 'draggable' in document.createElement('div');\r\n}\r\n\r\nfunction setBetaUICookie(accountID, isEnabled) {\r\n if(isEnabled == true)\r\n writeCookie('origami.usingBetaUI.' + accountID, 'true', null, false);\r\n else\r\n writeCookie('origami.usingBetaUI.' + accountID, 'false', null, false);\r\n window.location.reload();\r\n}\r\n\r\nfunction setUnsupportedBrowserCookie(cookieName) {\r\n var nameOfCookie = cookieName || 'origami.usingOldIE';\r\n var canDragDrop = browserSupportsDragDrop();\r\n\r\n if (!canDragDrop || !isCompatibleBrowser() ) {\r\n writeCookie(nameOfCookie, 'true');\r\n } else {\r\n writeCookie(nameOfCookie, 'false');\r\n }\r\n}\r\n\r\nfunction isValidDate(dateString) {\r\n /// Determines if a date is properly formatted (dd/MM/yyyy) and a valid.\r\n /// The date to validate.\r\n /// The validity of the date string.\r\n if (!/^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/.test(dateString))\r\n return false;\r\n\r\n var parts = dateString.split(\"/\");\r\n var day = parseInt(parts[1], 10);\r\n var month = parseInt(parts[0], 10);\r\n var year = parseInt(parts[2], 10);\r\n\r\n if (year < 1000 || year > 3000 || month == 0 || month > 12)\r\n return false;\r\n\r\n var monthsDaysLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))\r\n monthsDaysLength[1] = 29;\r\n\r\n return day > 0 && day <= monthsDaysLength[month - 1];\r\n};\r\n\r\nfunction formatFileSize(bytes) {\r\n var formattedSize = bytes;\r\n var suffix = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n var i = 0;\r\n\r\n if (formattedSize > 1024.0) {\r\n for (i = 0; Math.floor(formattedSize / 1024) > 0; i++)\r\n formattedSize /= 1024;\r\n }\r\n\r\n if (suffix[i] == \"B\" || suffix[i] == \"KB\")\r\n return Math.trunc(formattedSize) + \" \" + suffix[i];\r\n else\r\n return formattedSize.toFixed(1) + \" \" + suffix[i];\r\n}\r\n\r\n//Helper Functions to Hide/Change Buttons or More Menu Items\r\nfunction hideButtonByID(id) { $('button#' + id).hide(); }\r\nfunction changeButtonTextByID(id,newText){$('button#' + id).text(newText);}\r\nfunction hideMoreMenuItemByID(id){$('a#' + id).hide();}\r\nfunction changeMoreMenuTextByID(id,newText){$('a#' + id).text(newText);}\r\n\r\n//Additional selectors\r\n$.extend($.expr.pseudos, {\r\n data: function (elem, i, match) {\r\n return !!$.data(elem, match[3]);\r\n },\r\n\r\n focusable: function (element) {\r\n var nodeName = element.nodeName.toLowerCase(),\r\n tabIndex = $.attr(element, 'tabindex');\r\n return (/input|select|textarea|button|object/.test(nodeName)\r\n ? !element.disabled\r\n : 'a' == nodeName || 'area' == nodeName\r\n ? element.href || !isNaN(tabIndex)\r\n : !isNaN(tabIndex))\r\n // the element and all of its ancestors must be visible\r\n // the browser may report that the area is hidden\r\n && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;\r\n },\r\n\r\n tabbable: function (element) {\r\n var tabIndex = $.attr(element, 'tabindex');\r\n return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');\r\n }\r\n});\r\n\r\nfunction renameFormSet(renameFormSetCall, formSetName) {\r\n var newName = prompt(\"Please enter a new name for this form set.\", formSetName);\r\n if (newName == null || newName.trim().length == 0)\r\n return;\r\n\r\n if (newName == formSetName)\r\n return;\r\n\r\n window.location.href = renameFormSetCall + \"?newName=\" + encodeURIComponent(newName);\r\n}\r\n\r\n\r\nfunction setHighChartsLanguage() {\r\n if (typeof Highcharts == 'undefined')\r\n return;\r\n\r\n Highcharts.setOptions({\r\n lang:\r\n {\r\n thousandsSep: UseGroupSeparator(),\r\n decimalPoint: UseDecimalSeparator()\r\n }\r\n });\r\n}\r\n\r\nfunction DynamicQueryList(domain, select, filter, sort, skip, take)\r\n{\r\n if(take == null || take > 100)\r\n take = 100;\r\n\r\n var url = getServerAppRoot() + \"Dynamic/JsonQuery\";\r\n var retObj = {};\r\n \r\n $.ajax({\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n data: {\r\n typeName: domain, \r\n filter: filter,\r\n select: select,\r\n sort: sort,\r\n skip: skip,\r\n take: take\r\n },\r\n async: false,\r\n success: function(data) {\r\n if (data.status==\"success\") {\r\n retObj = data.list;\r\n }\r\n }\r\n });\r\n return retObj;\r\n}\r\n\r\nfunction DynamicSingleRecordQuery(domain, select, filter)\r\n{\r\n var url = getServerAppRoot() + \"Dynamic/JsonQuerySingle\";\r\n var retObj = {};\r\n \r\n $.ajax({\r\n type: 'GET',\r\n url: url,\r\n dataType: 'json',\r\n data: {\r\n typeName: domain, \r\n filter: filter,\r\n select: select\r\n },\r\n async: false,\r\n success: function(data) {\r\n if (data.status==\"success\") {\r\n retObj = data.model;\r\n }\r\n }\r\n });\r\n\r\n return retObj;\r\n\r\n}\r\n\r\n//SECTION - Helper Functions to Call REST and SOAP Web Services\r\n\r\nfunction MakeExternalGetRequest(rootUrl, hostName, extraParams)\r\n{\r\n var useUrl = rootUrl;\r\n if(typeof extraParams != 'undefined' && extraParams != null)\r\n useUrl += '?' + $.param(extraParams);\r\n\r\n var retObj = {};\r\n\r\n $.ajax({\r\n url: '/Origami/Dynamic/ExternalWebGetRequest',\r\n data: { url: useUrl, hostname: hostName },\r\n type: 'GET',\r\n async: false,\r\n dataType: 'json',\r\n success: function (data) {\r\n if (data.status == 'success')\r\n retObj = { status: 'success', data: data.response};\r\n else\r\n {\r\n var errMsg = \"Unable to make external request. \" + data.message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg };\r\n }\r\n },\r\n error: function (xhr: any, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n var errMsg = \"Unable to make external request. \" + err.Message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg };\r\n }\r\n });\r\n\r\n return retObj;\r\n}\r\n\r\nfunction MakeExternalSOAPRequest(soapAction, hostName, parameters)\r\n{\r\n var retObj = {};\r\n var JSONstr = '';\r\n\r\n if (typeof parameters != 'string' && parameters != null)\r\n JSONstr = JSON.stringify(parameters);\r\n else if(typeof parameters == 'string' && parameters != null)\r\n JSONstr = parameters;\r\n\r\n $.ajax({\r\n url: '/Origami/Dynamic/ExternalSOAPRequest',\r\n data: { soapAction: soapAction, hostName: hostName, parameters: JSONstr },\r\n type: 'GET',\r\n async: false,\r\n dataType: 'json',\r\n success: function (data) {\r\n if (data.status == 'success')\r\n retObj = { status: 'success', data: data.response};\r\n else\r\n {\r\n var errMsg = \"Unable to make external request. \" + data.message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg, soapException: data.soapException };\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n var errMsg = \"Unable to make external request. \" + err.Message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg };\r\n }\r\n });\r\n\r\n return retObj;\r\n}\r\n\r\nfunction MakeWebserviceLookupRequest(webserviceLookupID, parameters, headers, runValidateParams, callback) {\r\n var retObj = {};\r\n var JSONParams = '', JSONHeaders = '';\r\n\r\n if (typeof parameters != 'string' && parameters != null)\r\n JSONParams = JSON.stringify(parameters);\r\n else if (typeof parameters == 'string' && parameters != null)\r\n JSONParams = parameters;\r\n\r\n if (typeof headers != 'string' && headers != null)\r\n JSONHeaders = JSON.stringify(headers);\r\n else if (typeof headers == 'string' && headers != null)\r\n JSONHeaders = headers;\r\n\r\n $.ajax({\r\n url: '/Origami/Dynamic/ExternalWebserviceLookupRequest',\r\n data: { webserviceLookupID: webserviceLookupID, parameters: JSONParams, headers: JSONHeaders, runValidateParams: runValidateParams },\r\n type: 'GET',\r\n async: true,\r\n dataType: 'json',\r\n success: function (data) {\r\n var retObj;\r\n if (data.status == 'success')\r\n retObj = { status: 'success', data: data.response };\r\n else {\r\n var errMsg = \"Unable to make external request. \" + data.message;\r\n retObj = { status: 'failed', data: null, message: errMsg, errorMessage: errMsg };\r\n if (typeof data.soapException != 'undefined' && data.soapException != null)\r\n retObj.soapException = data.soapException;\r\n }\r\n if (typeof callback == 'function' && callback != null)\r\n return callback(retObj);\r\n else\r\n return retObj;\r\n },\r\n error: function (xhr: any, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n var errMsg = \"Unable to make external request. \" + err.Message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg };\r\n if (typeof callback == 'function' && callback != null)\r\n return callback(retObj);\r\n else\r\n return retObj;\r\n }\r\n });\r\n}\r\n\r\nfunction MakeWebserviceLookupRequestWithProcessedResponse(webServiceLookupname, parameters, callback) {\r\n var retObj = {};\r\n var JSONParams = '';\r\n\r\n if (typeof parameters != 'string' && parameters != null)\r\n JSONParams = JSON.stringify(parameters);\r\n else if (typeof parameters == 'string' && parameters != null)\r\n JSONParams = parameters;\r\n\r\n $.ajax({\r\n url: '/Origami/Dynamic/ExternalWebserviceLookupRequestWithProcessedResponse',\r\n data: { webServiceLookupname: webServiceLookupname, parameters: JSONParams },\r\n type: 'GET',\r\n async: true,\r\n dataType: 'json',\r\n success: function (data) {\r\n var retObj;\r\n if (data.status == 'success')\r\n retObj = { status: 'success', data: data.response };\r\n else {\r\n var errMsg = \"Unable to make external request. \" + data.message;\r\n retObj = { status: 'failed', data: null, message: errMsg, errorMessage: errMsg };\r\n if (typeof data.soapException != 'undefined' && data.soapException != null)\r\n retObj.soapException = data.soapException;\r\n }\r\n if (typeof callback == 'function' && callback != null)\r\n return callback(retObj);\r\n else\r\n return retObj;\r\n },\r\n error: function (xhr: any, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n var errMsg = \"Unable to make external request. \" + err.Message;\r\n retObj = { status: 'failed', data: null, errorMessage: errMsg };\r\n if (typeof callback == 'function' && callback != null)\r\n return callback(retObj);\r\n else\r\n return retObj;\r\n }\r\n });\r\n}\r\n//END SECTION\r\n\r\nfunction MakeSignalRTest(name, message) {\r\n $.ajax({\r\n url: '/Origami/Dynamic/SendMessageTest',\r\n data: { name: name, message: message },\r\n type: 'GET',\r\n async: true,\r\n dataType: 'json',\r\n success: function (data) {\r\n console.log(data);\r\n },\r\n error: function (xhr: any, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n console.log(err);\r\n }\r\n });\r\n}\r\n\r\n//https://github.com/parshap/node-sanitize-filename/blob/master/index.js\r\nfunction SanitizeFileName(input, replacement) {\r\n var illegalRe = /[\\/\\?<>\\\\:\\*\\|\":]/g;\r\n var reservedRe = /^\\.+$/;\r\n var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\\..*)?$/i;\r\n var windowsTrailingRe = /[\\. ]+$/;\r\n\r\n var sanitized = input\r\n .replace(illegalRe, replacement)\r\n .replace(reservedRe, replacement)\r\n .replace(windowsReservedRe, replacement)\r\n .replace(windowsTrailingRe, replacement);\r\n return sanitized;\r\n}\r\n\r\nfunction generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function'){\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\n// Checks if navigation type was not back, forward, or reload\r\n// PerformanceNavigationTiming.type is the type of navigation performed and \"navigate\" represents:\r\n// Navigation started by clicking a link, entering the URL in the browser's address bar, form submission,\r\n// or initializing through a script operation other than reload and back_forward.\r\n// https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/type\r\nfunction isNavigationTypeNavigate() {\r\n if (typeof performance !== \"undefined\" && typeof performance.getEntriesByType === \"function\") {\r\n var entries = performance.getEntriesByType(\"navigation\");\r\n if (entries && entries.length === 1) {\r\n var navigationTimingEntry = entries[0] as PerformanceNavigationTiming;\r\n return navigationTimingEntry.type === \"navigate\";\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/*https://stackoverflow.com/a/6713917/6416369*/\r\n(function($,undefined) {\r\n $.fn.cloneSelects = function(withDataAndEvents, deepWithDataAndEvents) {\r\n var $clone = this.clone(withDataAndEvents, deepWithDataAndEvents);\r\n var $origSelects = $('select', this);\r\n var $clonedSelects = $('select', $clone);\r\n $origSelects.each(function(i) {\r\n $clonedSelects.eq(i).val($(this).val());\r\n });\r\n return $clone;\r\n }\r\n})(jQuery);\r\n\r\nfunction stopEventPropagation(e) {\r\n var evt = e ? e:window.event;\r\n if (evt.stopPropagation) \r\n evt.stopPropagation();\r\n if (evt.cancelBubble!=null) \r\n evt.cancelBubble = true;\r\n}\r\n\r\n//session timeout and login\r\nfunction timeoutAlert() {\r\n if (confirm(\"Your session is about to expire. Click OK to keep your session alive.\")) {\r\n $.ajax({\r\n url: getServerAppRoot() + 'Account/Keepalive'\r\n })\r\n .done(function (response) {\r\n var extended = false;\r\n\r\n //if session not yet ended: 200 response is JSON (Object)\r\n //if session has ended: 302->200 response is HTML (String)\r\n if (response != null && response.constructor.name === \"Object\") {\r\n if (response.status === \"success\") {\r\n setTimeout(timeoutAlert, getTimeoutDuration());\r\n extended = true;\r\n }\r\n }\r\n\r\n if (!extended)\r\n alert(\"Your session could not be extended and you will need to login again.\");\r\n })\r\n .fail(function (jqXHR, textStatus, errorThrown) {\r\n alert(\"Your session could not be extended and you will need to login again.\");\r\n });\r\n }\r\n}\r\n\r\nfunction isExpirationCookieValid() {\r\n var expirationString = getCookie('ori.SessionExpiration');\r\n if (typeof expirationString == 'undefined' || expirationString == null || expirationString == '')\r\n return false;\r\n\r\n var jsDate = new Date(expirationString);\r\n var currDate = new Date();\r\n //console.log('jsDate: ' + jsDate + ', currDate: ' + currDate + ', jsDate > currDate: ' + (jsDate > currDate));\r\n return jsDate > currDate;\r\n}\r\n\r\nfunction checkIsTimedOut(forceReathenticate: boolean = false) {\r\n if (!forceReathenticate && isExpirationCookieValid())\r\n return false;\r\n\r\n var checkUrl = getServerAppRoot() + \"Account/CheckCookie\";\r\n var isTimedout = false;\r\n\r\n if (forceReathenticate)\r\n checkUrl += \"?forceReauthenticate=true\";\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: checkUrl,\r\n dataType: 'json',\r\n data: {},\r\n async: false,\r\n success: function (data) {\r\n\r\n if (data.status == \"success\") {\r\n if (data.authenticated == \"authenticated\") {\r\n\r\n // do nothing\r\n\r\n }\r\n else if (data.authenticated == \"sso\") {\r\n isTimedout = true;\r\n\r\n // open a new browser window instead of a thickbox to use\r\n var relayUrl = getServerAppRoot() + \"Account/TimeoutMessage?clientID=\" + getCurrentClientID();\r\n\r\n if (forceReathenticate) {\r\n relayUrl = relayUrl + \"&_closeAndRefresh=\" + forceReathenticate + \"&popup=true\";\r\n openThickboxPopup(relayUrl);\r\n }\r\n else\r\n window.open(relayUrl, \"Origami.TimeoutReturnPage\", \"toolbar=no, status=no, location=no\");\r\n\r\n }\r\n else if (data.authenticated == \"expired\" && data.issilentlogin == \"true\") {\r\n var relayUrl = getServerAppRoot() + \"Account/Inactive\";\r\n window.open(relayUrl, \"Origami.TimeoutReturnPage\", \"toolbar=no, status=no, location=no\");\r\n }\r\n else {\r\n\r\n isTimedout = true;\r\n var timeoutUrl = getServerAppRoot() + \"Account/TimeoutLogin?account=\" +\r\n encodeURIComponent(getCurrentAccountLogin()) + \"&clientID=\" + getCurrentClientID();\r\n\r\n if (data.issuername != \"\")\r\n timeoutUrl += \"&issuerName=\" + encodeURIComponent(data.issuername);\r\n\r\n openThickboxPopup(timeoutUrl, \"timeoutLogin\");\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n return isTimedout;\r\n}\r\n\r\nfunction handleOpenUrlPopup(event) {\r\n var url = $(this).attr('href');\r\n if (url === \"#\") {\r\n // empty anchor is not a valid argument for openUrlPopup\r\n return;\r\n }\r\n event.stopPropagation();\r\n if (url) {\r\n openUrlPopup(url, this, null);\r\n }\r\n return false;\r\n}\r\n\r\n$(document).ready(function () {\r\n\r\n var UNAUTHENTICATED = '_UNAUTHENTICATED_';\r\n\r\n $.ajaxSetup({\r\n dataFilter: function (data, type) {\r\n //if JSON response is HTML from login page make it valid JSON\r\n if (type === 'json' && data.indexOf('') > -1) {\r\n return JSON.stringify({ 'status': UNAUTHENTICATED });\r\n }\r\n return data;\r\n }\r\n });\r\n\r\n $.ajaxPrefilter('json', function (options, originalOptions: any, jqXHR) {\r\n if (options.url !== getServerAppRoot() + 'Account/CheckCookie') {\r\n options.success = function (data) {\r\n //if valid JSON from login page redirect\r\n if (data && data.status === UNAUTHENTICATED) {\r\n checkIsTimedOut();\r\n }\r\n else if (originalOptions.success != null) {\r\n originalOptions.success(data);\r\n }\r\n };\r\n }\r\n });\r\n\r\n if (getCurrentUserUsesAssistiveTechnology() || getEnableTimeoutWarning()) {\r\n setTimeout(timeoutAlert, getTimeoutDuration());\r\n\r\n if (getCurrentUserUsesAssistiveTechnology())\r\n if (!$('#message').hasClass('hidden') && !$('#message').hasClass('notification'))\r\n alert($('#message').text());\r\n }\r\n\r\n $(\"a.downloadLink\").on('click', function () {\r\n return !checkIsTimedOut(); // if timed out, cancel the download so the user can log in first.\r\n });\r\n\r\n if (!window.origami.settings.UseNewModalWindow && typeof $.jqm != 'undefined') {\r\n $('#modalWindow').jqm({\r\n modal: true,\r\n trigger: 'a.thickbox, .lookupImage, img.thickbox, button.thickbox',\r\n target: '#jqmContent',\r\n onShow: loadInIframeModal,\r\n onHide: closeIframeModal,\r\n toTop: true\r\n });\r\n } else { \r\n $(document).on('click', 'a.thickbox, .lookupImage, img.thickbox, button.thickbox', handleOpenUrlPopup); \r\n\r\n $('a.thickbox, .lookupImage, img.thickbox, button.thickbox').on('click', handleOpenUrlPopup);\r\n }\r\n\r\n $('#skipLink').click(function () {\r\n $('#content').find(':focusable').first().focus();\r\n });\r\n\r\n $('.selectnoneall').each(function () {\r\n setSelectAllStatus(this);\r\n });\r\n\r\n verifyAllAriaLabels();\r\n\r\n $('select').each(function () {\r\n addNoneSelected(this);\r\n });\r\n\r\n $('label.required').each(function (index) {\r\n let id = $(this).attr('for');\r\n if (id)\r\n $(`#${id}`).attr(\"aria-required\", \"true\");\r\n });\r\n\r\n $(document).on('focus', '.menu, .signout', function () {\r\n deactivateGlobalSearch();\r\n });\r\n\r\n if (window.origami.settings.AppendColonToFormLabels) {\r\n $('label').each(function (index) {\r\n /* add a colon + space to the end of label text. This is needed by screen readers so they insert an audible gap between \r\n words that appear within and after a label. Without these chars, the words blend together as though they are part of a\r\n contiguous sentence rather than separate caption/value fields. */\r\n try {\r\n let text = $(this).text().trim();\r\n if (text === '')\r\n return;\r\n if (!text)\r\n return;\r\n if (!text.match(/.*\\w$/)) // do not add colon if last char in string is a special char like ?><:\"{)...\r\n return;\r\n if ($(this).parent()[0].localName !== 'li')\r\n return;\r\n if ($(this).children().length > 0)\r\n return;\r\n $(this).html(`${$(this).html()}: `);\r\n } catch {\r\n }\r\n });\r\n } \r\n\r\n $(document).on('focus', ':focusable', function () {\r\n if ($(this).closest('#moreActionsMenu').length === 0)\r\n $('#moreActionsMenu').hide();\r\n });\r\n\r\n let message = $('#message').text();\r\n if (message)\r\n screenReaderMessage(message, false);\r\n\r\n afterResize();\r\n});\r\n\r\nfunction customMenuOnEvent(event, extraParameters) {\r\n try {\r\n var target = $(event.target);\r\n target.off(\"actionMenu.origami\");\r\n event.stopPropagation();\r\n } catch (x) { }\r\n}\r\n\r\nfunction isWithinIframe() {\r\n if (window.parent && window.parent.document)\r\n return (window.parent !== window)\r\n return false;\r\n}\r\n\r\n$(window).resize(function () {\r\n afterResize();\r\n});\r\n\r\nfunction afterResize() {\r\n $('#responsive-spacing').height($('.titleArea').height() + 10);\r\n}\r\n\r\nfunction verifyAllAriaLabels() {\r\n $('input:not([aria-label])').each(function (index) {\r\n verifyAriaLabel(this);\r\n });\r\n\r\n $('select:not([aria-label])').each(function (index) {\r\n verifyAriaLabel(this);\r\n });\r\n\r\n $('textarea:not([aria-label])').each(function (index) {\r\n verifyAriaLabel(this);\r\n });\r\n}\r\n\r\nfunction verifyAriaLabel(element) {\r\n let id = $(element).attr('id');\r\n if (id) {\r\n /* we attempt to pull text from associated label because if the field is required, an asterisk is appended to the label. \r\n * Screen readers read that askerisk. If we extract the text here, it does not pull the asterisk, so the asterisk \r\n * is not read, which is what is expected. */\r\n let label = $(`label[for=\"${id}\"]`);\r\n if (label.length == 1) {\r\n $(element).attr('aria-label', label.text());\r\n return;\r\n }\r\n $(element).attr('aria-label', id.toTitleCase());\r\n return;\r\n }\r\n let name = $(element).attr('name');\r\n if (name) {\r\n $(element).attr('aria-label', name.toTitleCase());\r\n return;\r\n }\r\n}\r\n\r\n\r\nfunction copyToClipBoard(triggerElement: any, content: string) {\r\n if (typeof content == 'undefined') {\r\n if ($(triggerElement).has('[data-clipboard-content]')) {\r\n content = $(triggerElement).attr('data-clipboard-content');\r\n }\r\n }\r\n\r\n var origTip = $(triggerElement).attr('data-tippy-content');\r\n\r\n if (content == null || content === '')\r\n return false;\r\n\r\n if (navigator.clipboard) {\r\n try {\r\n navigator.clipboard.writeText(content);\r\n\r\n if (typeof triggerElement._tippy != 'undefined') {\r\n triggerElement._tippy.setContent('Copied to clipboard!');\r\n setTimeout(function () {\r\n triggerElement._tippy.hide();\r\n }, 1000);\r\n\r\n setTimeout(function () {\r\n triggerElement._tippy.setContent(origTip);\r\n }, 2000);\r\n }\r\n } catch (err) {\r\n console.error('Failed to copy!', err)\r\n }\r\n }\r\n else if (window.clipboardData) { // Internet Explorer\r\n try {\r\n window.clipboardData.setData(\"Text\", content);\r\n if (typeof triggerElement._tippy != 'undefined') {\r\n triggerElement._tippy.setContent('Copied to clipboard!');\r\n setTimeout(function () {\r\n triggerElement._tippy.hide();\r\n }, 1000);\r\n\r\n setTimeout(function () {\r\n triggerElement._tippy.setContent(origTip);\r\n }, 2000);\r\n }\r\n } catch (err) {\r\n console.error('Failed to copy!', err)\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction AddAntiForgeryToken(data) {\r\n data.__RequestVerificationToken = $(\"#_csrfPostForm > input[name='__AjaxRequestVerificationToken']\").val();\r\n return data;\r\n};\r\n\r\nfunction CreateAndReplaceDocumentServerPostURL(form) {\r\n form[0].action = CreateDocumentServerPostURL(form[0].action);\r\n}\r\n\r\nfunction CreateDocumentServerPostURL(actionUrl) {\r\n if (!actionUrl.includes(\"Documents/DocumentServerAction\"))\r\n return actionUrl;\r\n\r\n actionUrl = actionUrl.replace(/&/g, \"&\");\r\n\r\n var baseUrl = actionUrl + '&postAction=true';\r\n var finalUrl = \"\";\r\n\r\n $.ajax({\r\n url: baseUrl,\r\n type: 'GET',\r\n async: false,\r\n success: function (data) {\r\n finalUrl = data;\r\n },\r\n error: function (xhr: any, status, error) {\r\n var err = eval(\"(\" + xhr.responseText + \")\");\r\n console.log(err);\r\n }\r\n });\r\n\r\n return finalUrl;\r\n};\r\n\r\nfunction smoothScrollToElement(elem: HTMLElement, speed: string, offset: number) {\r\n if (typeof speed == 'undefined' || speed == null || speed === \"\")\r\n speed = \"slow\";\r\n\r\n if (typeof offset || offset == null)\r\n offset = -75;\r\n\r\n if ($(elem).length != 1)\r\n return;\r\n\r\n $(\"html, body\").animate({ scrollTop: $(elem).offset().top + offset }, speed);\r\n}\r\n\r\nfunction logRecentLinkAccessed(selector: string, domainID: number) {\r\n $( selector ).on('click',function() {\r\n $.ajax({\r\n type: 'POST',\r\n url: getControllerName() + '/SaveLinkAccessed',\r\n dataType: 'json',\r\n data: {\r\n domainID: domainID,\r\n linkAddress: $(this).attr('href'),\r\n name: $(this).text(),\r\n },\r\n async: false,\r\n success: function(data) {}\r\n });\r\n });\r\n}\r\n\r\n$(document).on('change', '.selectnoneall', function () {\r\n setSelectAllStatus(this);\r\n});\r\n\r\nfunction setSelectAllStatus(checkbox) {\r\n let optionText = checkbox.checked ? 'None' : 'All Rows';\r\n $(checkbox).attr('aria-label', `Select ${optionText}`);\r\n}\r\n\r\nfunction getCustomFieldNameFromAlias(aliasName) {\r\n try {\r\n if (aliasName == null)\r\n return aliasName;\r\n const fieldAliases = JSON.parse($('[name=\"customFieldAliases\"]').val());\r\n\r\n // remove the Alias_ part, and account for the possibility of a dot operator (e.g. \"Alias_FieldName.DisplayCode\") in a formula tag\r\n var parts = aliasName.split('Alias_').pop().split('.');\r\n var search = parts[0];\r\n\r\n for (var i in fieldAliases) {\r\n var alias = fieldAliases[i];\r\n if (alias.Alias == search) {\r\n var replacement = parts.length > 1 ? alias.Field + '.' + parts[1] : alias.Field;\r\n console.log('ALIAS: Replacing ' + aliasName + ' with ' + replacement);\r\n return replacement;\r\n }\r\n }\r\n\r\n return aliasName;\r\n }\r\n catch {\r\n return 'Custom field name not available.'\r\n }\r\n}\r\n\r\nfunction addNoneSelected(element) {\r\n let options = null;\r\n if ($(element).children().is('option')) {\r\n options = $(element).children();\r\n } else if ($(element).children().is('optgroup')) {\r\n options = $(element).children().children();\r\n }\r\n if (options && options.length > 0 && $(options[0]).text() === '') {\r\n $(options).not(options[0]).css('color', 'initial');\r\n $(options[0]).addClass('faded');\r\n $(options[0]).text(window.origami.settings.EmptyComboBoxText);\r\n $(options[0]).val('');\r\n }\r\n setSelectOption(element);\r\n $(element).change(function () {\r\n setSelectOption(this);\r\n });\r\n}\r\n\r\nfunction setSelectOption(element) {\r\n let opt = $(element).find(':selected');\r\n if ($(opt).hasClass('faded')) {\r\n $(element).addClass('faded');\r\n } else {\r\n $(element).removeClass('faded');\r\n }\r\n}\r\n\r\nfunction shrinkTooltipIfNecessary(instance) {\r\n let maxLines = window.origami.settings.TooltipMaximumLinesVisible;\r\n\r\n if (maxLines <= 0) return;\r\n\r\n let pC = instance.popperChildren;\r\n\r\n const lineHeight = Number.parseFloat($(pC.content).css(\"line-height\"));\r\n const height = Number.parseFloat($(pC.content).css(\"height\"));\r\n\r\n if (height <= maxLines * lineHeight) return;\r\n\r\n $(pC.content).css({ \"height\" : maxLines * lineHeight, \"overflow\": \"hidden\", \"cursor\": \"pointer\", \"mask-image\": `linear-gradient(to top, transparent, ${$(pC.tooltip).css(\"background-color\")})` });\r\n $(pC.tooltip).append($(`
    (click to expand)
    `));\r\n\r\n $(pC.tooltip).click(() => {\r\n openMessagePopup($(instance.popperChildren.content).html(), \"Tooltip Detail\");\r\n })\r\n}\r\n\r\nfunction openMessagePopup(text, title = \"Message\") {\r\n window.origami.data.messageText = text;\r\n let url = getServerAppRoot() + `${getControllerName()}/MessageWithTitle`;\r\n url += \"?message=placeholder&title=\" + encodeURIComponent(title);\r\n openThickboxPopup(url);\r\n}\r\n\r\n\r\n\r\n/**\r\n * sensitive fields:\r\n */\r\n\r\nconst sensitiveFieldMessages = {\r\n confirm: 'Are you sure you want to show the value of this Sensitive Field? Access will be logged.',\r\n tooltips: {\r\n reveal: 'Click to show the value of this Sensitive Field.',\r\n hide: 'Click to hide the value of this Sensitive Field.',\r\n overwrite: 'You do not have access to show the value of this Sensitive Field. Click to overwrite it with a new value.',\r\n undo: 'Click to revert this Sensitive Field to its original value and undo any changes.'\r\n },\r\n}\r\n\r\nfunction initSensitiveFields(subset) {\r\n\r\n if (typeof getControllerAction !== 'function') return;\r\n const action = getControllerAction().toLowerCase();\r\n\r\n // set tooltips based on data-tooltip-key, so we can store all sensitive field tooltip strings in one place\r\n $(\"button.sensitiveFieldButton\", subset).each(function () {\r\n setSensitiveFieldTooltip($(this));\r\n });\r\n\r\n // if we're validating (i.e. action == save) and there are sensitive fields on the page, make sure the sensitive fields are properly filled\r\n if (typeof getSensitiveFieldChanges === 'function' && action == 'save') {\r\n\r\n getSensitiveFieldChanges().forEach(data => {\r\n\r\n const input: JQuery = $(`[name=${data[\"field\"]}]`);\r\n const radioInputs: JQuery = input.siblings('label').find('input[type=\"radio\"]');\r\n const button: JQuery = input.siblings('button.sensitiveFieldButton');\r\n\r\n // all sensitive fields with a value on the model should have this data attribute\r\n if (data[\"hasPreviousValue\"]) {\r\n input.data('sensitive-has-value', true);\r\n }\r\n\r\n if (!input.hasClass('sensitiveFieldChanged')) {\r\n input.addClass('sensitiveFieldChanged');\r\n }\r\n\r\n // radio buttons are weird, do them differently\r\n if (radioInputs.length) {\r\n\r\n // first set the hidden one\r\n input.val(data[\"value\"]);\r\n\r\n // then, if the value isn't empty, make sure the correct radio button is checked\r\n if (data[\"value\"]) {\r\n clearRadio(radioInputs.filter(`[value=\"${data[\"value\"]}\"]`).prop('checked', true));\r\n }\r\n\r\n }\r\n else {\r\n\r\n // first, get input and set value from just submitted form, also set placeholder in case user re-masks the field\r\n input.val(data[\"value\"]).data('placeholder', data['placeholder']);\r\n\r\n // if this is a lookup, it will have a lookupDescription, so set the display input to that description, also set placeholder in case user re-masks the field\r\n if (data[\"lookupDescription\"] && input.attr('type') == 'hidden') {\r\n input.siblings('input').val(data[\"lookupDescription\"]).data('placeholder', data['placeholder']);\r\n }\r\n\r\n }\r\n\r\n // if hasPreviousValue, they are overwriting an old value, so the button should be set to 'undo' state. Otherwise, or if the field is readonly, remove the button\r\n if (data[\"hasPreviousValue\"] && !input.data('sensitive-readonly') && button[0]) {\r\n toggleSensitiveField({ e: button[0], maskingType: input.hasClass('socialsecurity') ? 'SocialSecurity' : 'General', mode: button.data('tooltip-key') == 'reveal' ? 'Edit' : 'Overwrite', noAjax: true });\r\n } else {\r\n button.remove();\r\n }\r\n });\r\n }\r\n\r\n // remove all edit-page sensitive field buttons where the field doesn't yet have a value on the model\r\n $('button.sensitiveFieldButton', subset).not('.sensitiveFieldUndo').filter(function () {\r\n const input: JQuery = $(this).siblings('input, select, textarea');\r\n return input.length && !input.data('sensitive-has-value') && (!input.attr('disabled') || input.data('sensitive-readonly'));\r\n }).remove();\r\n\r\n // if a sensitive field (edit form) is changed through some automatic way, like a datepicker or autofill, make sure the field is set to overwrite mode\r\n $('input.sensitiveField, select.sensitiveField, textarea.sensitiveField', subset).filter(function () {\r\n // make sure radio buttons are not included\r\n return !$(this).is('[type=\"radio\"]') && $(this).siblings('label').children('[type=\"radio\"]').length == 0;\r\n }).on('change', (e) => {\r\n\r\n const button: JQuery = $(e.target).closest('span.value').find('button.sensitiveFieldButton');\r\n if (button.length && !button.hasClass('unmasked')) {\r\n\r\n // recordID and fieldName don't matter because no data is being fetched\r\n toggleSensitiveField({\r\n e: button[0],\r\n maskingType: $(e.target).hasClass('socialsecurity') ? 'SocialSecurity' : 'General',\r\n mode: button.data('tooltip-key') == 'reveal' ? 'Edit' : 'Overwrite',\r\n noAjax: true\r\n });\r\n }\r\n // Need to know if we are intentionally trying to change the value of a field we don't have permission to unmask\r\n else if (!button.length) {\r\n $(e.target).addClass('sensitiveFieldChanged');\r\n }\r\n\r\n });\r\n\r\n // if a sensitive field is initially masked, hide buttons that aren't the unmask button, like datepicker or lookup\r\n $('button.sensitiveFieldButton', subset).not('.sensitiveFieldUndo').siblings('button').not('.sensitiveFieldButton').hide();\r\n}\r\n\r\n/**\r\n * This is the onclick method used for masking/unmasking sensitive fields.\r\n * e: button html node\r\n * recordID: recordID of the record being viewed/edited\r\n * fieldName: fieldname, i.e. 'SocialSecurity' or 'CustomText1'\r\n * maskingType: currently will be 'SocialSecurity' or 'General'\r\n * mode: will be 'Edit' or 'View' or 'Overwrite'\r\n * noAjax: if true, value will not be fetched/populated, similar to overwrite\r\n */\r\nfunction toggleSensitiveField({ e = null, recordID = 0, fieldName = '', maskingType = 'General', mode = 'Overwrite', noAjax = false }) {\r\n const button: JQuery = $(e);\r\n const input: JQuery = button.closest('span.value').find('input.sensitiveField, select.sensitiveField, textarea.sensitiveField');\r\n const unmasking: boolean = !button.hasClass('unmasked');\r\n\r\n // initially store placeholder in data, if not view mode\r\n if (unmasking && mode !== 'View' && input.length && !input.data('placeholder')) {\r\n input.data('placeholder', input.attr('placeholder'));\r\n }\r\n\r\n // this is the no permissions case:\r\n if (mode === 'Overwrite') {\r\n\r\n styleSensitiveFieldInput(input, unmasking);\r\n styleSensitiveFieldButton(button, mode, unmasking);\r\n\r\n // if masking, clear value\r\n if (!unmasking) {\r\n input.val(null);\r\n\r\n // make sure radio buttons are cleared\r\n input.filter('[type=\"radio\"]').filter('[previouslychecked=\"true\"]').each(function () {\r\n clearRadio($(this));\r\n });\r\n }\r\n\r\n // if ssn, toggle input masking\r\n if (unmasking && maskingType == 'SocialSecurity') {\r\n input.maskedInput({ mask: \"ssn\" });\r\n }\r\n\r\n toggleFieldChanged(fieldName, false);\r\n }\r\n\r\n // this is used when we want to style the field like it has been revealed, but don't want to call ajax/populate value\r\n else if (noAjax) {\r\n styleSensitiveFieldButton(button, mode, unmasking);\r\n\r\n if (mode == 'Edit') {\r\n\r\n styleSensitiveFieldInput(input, unmasking);\r\n\r\n if (unmasking && maskingType == 'SocialSecurity') {\r\n input.maskedInput({ mask: \"ssn\" });\r\n }\r\n }\r\n }\r\n\r\n // this is the has permissions case:\r\n else { \r\n\r\n if (unmasking && !confirm(sensitiveFieldMessages.confirm)) {\r\n return;\r\n }\r\n\r\n $.ajax({\r\n data: AddAntiForgeryToken({ recordID, fieldName, maskingType, unmasking }),\r\n type: 'POST',\r\n url: getServerAppRoot() + `${getControllerName()}/UnlockSensitiveField/`,\r\n success: (data) => {\r\n if (data.status == 'success') {\r\n\r\n styleSensitiveFieldButton(button, mode, unmasking);\r\n\r\n if (mode === 'Edit') {\r\n\r\n styleSensitiveFieldInput(input, unmasking);\r\n\r\n if (input.filter('[type=\"radio\"]').length) {\r\n\r\n // for radio inputs\r\n input.filter('.sensitiveFieldHidden').val(unmasking ? data.value : null);\r\n\r\n if (unmasking) {\r\n // when unmasking, clearRadio() for radio that matches data.value\r\n clearRadio(input.filter('[type=\"radio\"]').filter(`[value=\"${data.value}\"]`).prop('checked', true));\r\n }\r\n else {\r\n // when masking, clearRadio() for all radios\r\n input.filter('[type=\"radio\"]').filter('[previouslychecked=\"true\"]').each(function () {\r\n clearRadio($(this));\r\n });\r\n }\r\n }\r\n else if (input.filter('select').length) {\r\n\r\n // for dropdowns\r\n input.val(unmasking ? data.value : null);\r\n }\r\n else {\r\n\r\n // for normal inputs\r\n input.not('.sensitiveFieldHidden').val(unmasking ? data.display : null); // populate display if unmasking\r\n input.filter('.sensitiveFieldHidden').val(unmasking ? data.value : null); // populate associationID if unmasking\r\n }\r\n\r\n // if editing, mask ssn appropriately\r\n if (unmasking && maskingType == 'SocialSecurity') {\r\n input.maskedInput({ mask: \"ssn\" });\r\n }\r\n\r\n toggleFieldChanged(fieldName, false);\r\n }\r\n\r\n else if (mode === 'View') {\r\n const siblingSpan = button.siblings('span.sensitiveField');\r\n\r\n if (unmasking && data.link) {\r\n // if this is an associated record, the ajax will return a link to the record as well, so add that\r\n siblingSpan.html(`${data.display}`);\r\n } else {\r\n // otherwise, just replace with value\r\n if (siblingSpan.length > 0) {\r\n siblingSpan.text(data.display);\r\n }\r\n else {\r\n // Could be a readOnly field on edit screen, in which case value is shown in a disabled input\r\n const siblingInput = button.siblings('input.sensitiveField');\r\n if (siblingInput.length > 0) {\r\n siblingInput.val(data.display);\r\n }\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n\r\n statusErrorMessage('An error occurred while trying to unlock a sensitive field.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\nfunction styleSensitiveFieldButton(button: JQuery, mode: string, unmasking: boolean) {\r\n\r\n // function to remove existing icon classes and add the new one\r\n const toggleIcon = (maskedClass: string, unmaskedClass: string) => button.find('i').removeClass('fa-lock').removeClass('fa-undo').removeClass('fa-unlock').removeClass('fa-edit').addClass(`fa-${unmasking ? unmaskedClass : maskedClass}`);\r\n\r\n // function to toggle cancel button style\r\n const toggleUndoStyle = () => button.toggleClass('sensitiveFieldUndo', unmasking);\r\n\r\n // function to toggle tooltip between two keys\r\n const toggleTooltip = (maskedKey: string, unmaskedKey: string) => setSensitiveFieldTooltip(button, unmasking ? unmaskedKey : maskedKey);\r\n\r\n button.toggleClass('unmasked');\r\n\r\n switch (mode) {\r\n case 'Edit':\r\n toggleIcon('lock', 'undo');\r\n toggleTooltip('reveal', 'undo');\r\n toggleUndoStyle();\r\n\r\n break;\r\n case 'View':\r\n toggleIcon('lock', 'unlock');\r\n toggleTooltip('reveal', 'hide');\r\n\r\n break;\r\n case 'Overwrite':\r\n toggleIcon('edit', 'undo');\r\n toggleTooltip('overwrite', 'undo');\r\n toggleUndoStyle();\r\n\r\n break;\r\n }\r\n\r\n // remove focus from button\r\n button.blur();\r\n\r\n // toggle buttons besides the sensitive field button, for example datepicker or lookup buttons\r\n const siblingButtons = button.siblings('button').not('.sensitiveFieldButton');\r\n unmasking ? siblingButtons.show() : siblingButtons.hide();\r\n}\r\n\r\nfunction setSensitiveFieldTooltip(button: JQuery, key: string = null) {\r\n\r\n if (button?.children().length) {\r\n\r\n // get message from messages object, or use default if not available\r\n const message: string = sensitiveFieldMessages.tooltips[key ?? button.data('tooltip-key')] ?? 'This is a sensitive field.';\r\n\r\n // set tippy content\r\n button.children().first()[0]['_tippy']?.setContent(message);\r\n button.children().first().attr('data-tippy-content', message);\r\n }\r\n}\r\n\r\nfunction styleSensitiveFieldInput(input: JQuery, unmasking: boolean) {\r\n\r\n // disable when masking, enable when unmasking\r\n input.prop('disabled', !unmasking);\r\n\r\n // text fields should have placeholder when masked, no placeholder when unmasked\r\n input.filter('input, textarea').attr('placeholder', !unmasking ? input.data('placeholder') : null);\r\n\r\n const select: JQuery = input.filter('select');\r\n if (select.length) {\r\n\r\n // switch the first option's text and value based on the data attributes on the select (set in HtmlHelperExtensions)\r\n // setting the actual value of the select will be done after this code is run\r\n select.find('option').first().text(unmasking ? select.data('first-option-text') : select.data('placeholder'));\r\n select.find('option').first().val(unmasking ? select.data('first-option-value') : null);\r\n\r\n select.toggleClass('faded', !unmasking);\r\n }\r\n}\r\n\r\n// Cached Grids\r\nvar _cachedGridKeys = []\r\n\r\nfunction addCachedGridKey(key) {\r\n _cachedGridKeys.push(key);\r\n $(\"#CachedGridKeys\").val(_cachedGridKeys.join(\",\"));\r\n}\r\n\r\nfunction reloadCachedGrids() {\r\n for (const key of _cachedGridKeys) {\r\n var url = getServerAppRoot() + \"/Dynamic/ReloadCachedGrid/?gridCacheKey=\" + key;\r\n $(\"div[name='cachedGridReloadContainer-\" + key +\"']\").load(url);\r\n }\r\n}\r\n\r\nfunction clearCachedGridKeys() {\r\n for (const key of _cachedGridKeys) {\r\n let isError = false;\r\n $.ajax({\r\n type: 'POST',\r\n url: getServerAppRoot() + getControllerName() + \"/RemoveGridCacheKey/?gridCacheKey=\" + key,\r\n data: AddAntiForgeryToken({\r\n gridCacheKey: key\r\n }),\r\n success: function () {\r\n console.log('Grid Cache Key deleted.');\r\n },\r\n error: (err) => {\r\n console.log('err: ' + err);\r\n isError = true;\r\n }\r\n });\r\n return isError;\r\n }\r\n\r\n _cachedGridKeys = [];\r\n $(\"#CachedGridKeys\").val(\"\");\r\n}\r\n\r\nconst initializeSignalRProxies = () => {\r\n if (!$.connection) { // bail early if the signalr library is not loaded\r\n return;\r\n }\r\n\r\n try {\r\n // Add all the client methods so the signalR connection can be established correctly for all hubs. All client methods for the hubs should be included here, but the actual event handler implementation is done in the hub itself.\r\n initSignalRForTextMessages();\r\n initSignalRForConfigMigration();\r\n\r\n // Close the connection when the page is navigating away\r\n $(window).on('beforeunload', function () {\r\n $.connection.hub.stop();\r\n });\r\n } catch (error) {\r\n console.info('Error initializing SignalR proxies', error);\r\n }\r\n};\r\n\r\nconst initSignalRForTextMessages = () => {\r\n const textMessageHub = $.connection.MessageNotificationsHub = $.connection.hub.createHubProxy('MessageNotificationsHub');\r\n textMessageHub.client = {};\r\n\r\n const textMessageHubClientActions = [\"sendMessageNotification\"];\r\n textMessageHubClientActions.forEach(action => {\r\n textMessageHub.client[action] = (...params) => {\r\n $(document).trigger(action, params);\r\n };\r\n });\r\n};\r\n\r\nconst initSignalRForConfigMigration = () => {\r\n const migrationHub = $.connection.MigrationsHub = $.connection.hub.createHubProxy('MigrationsHub');\r\n migrationHub.client = {};\r\n\r\n const migrationHubClientActions = [\"sendMigrationImportStatusMessage\", \"promptForUserInput\"];\r\n migrationHubClientActions.forEach(action => {\r\n migrationHub.client[action] = (...params) => {\r\n $(document).trigger(action, params);\r\n };\r\n });\r\n};"]}