{"version":3,"file":"global.utilities.min.js","names":["getCookie","name","parts","document","cookie","split","length","pop","shift","post","path","parameters","form","$","attr","each","key","value","field","append","body","submit","postJson","url","data","success","error","ajax","type","dataType","contentType","headers","RequestVerificationToken","complete","beforeSend","fn","serializeObject","o","a","this","serializeArray","undefined","push","toHighlight","notLocked","evenRound","num","decimalPlaces","d","m","Math","pow","n","toFixed","i","floor","f","r","round","fixDecimalFormat","input","commaSeparate","val","toString","decimalIndex","indexOf","numChangeDigits","replace","commaSeparateNumber","test","animateHighlight","prop","triggerAnimateHighlight","duration","highlightColor","elements","e","highlightBg","animateMs","originalBg","css","stop","animate","backgroundColor","setTimeout"],"sources":["global/global.utilities.js"],"sourcesContent":["// Helper to do an ajax post with json content instead of form data\n//#region $.PostJson\n\n$.postJson = function (url, data, success, error) {\n return $.ajax({\n url: url,\n type: \"POST\",\n dataType: \"json\", // expected format for response\n contentType: \"application/json\", // send as JSON\n headers: {\n RequestVerificationToken: getCookie('CSRF-TOKEN'),\n },\n data: data,\n success: success,\n error: error,\n complete: function () {\n if ($('.saveButton')) {\n $('.saveButton').attr('disabled', false);\n }\n },\n beforeSend: function () {\n if ($('.saveButton')) {\n $('.saveButton').attr('disabled', true);\n }\n }\n });\n};\n\nfunction getCookie(name) {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop().split(';').shift();\n}\n\n//#endregion\n\n// Turn a form into a javascript object\n//#region $.fn.serializeObject\n\n$.fn.serializeObject = function () {\n var o = {};\n var a = this.serializeArray();\n $.each(a, function () {\n if (o[this.name] !== undefined) {\n if (!o[this.name].push) {\n o[this.name] = [o[this.name]];\n }\n o[this.name].push(this.value || '');\n } else {\n o[this.name] = this.value || '';\n }\n });\n return o;\n};\n\n//#endregion\n\n//This is used to make the browser do a form post directly from javascript. This is useful when a button action should execute a non-ajax form post\n//#region Post Form\n\nfunction post(path, parameters) {\n var form = $('
');\n\n form.attr(\"method\", \"post\");\n form.attr(\"action\", path);\n if (parameters) {\n $.each(parameters, function (key, value) {\n var field = $('');\n\n field.attr(\"type\", \"hidden\");\n field.attr(\"name\", key);\n field.attr(\"value\", value);\n\n form.append(field);\n });\n }\n\n //Add request verification token\n var field = $('');\n\n field.attr(\"type\", \"hidden\");\n field.attr(\"name\", \"__RequestVerificationToken\");\n field.attr(\"value\", getCookie('CSRF-TOKEN'));\n\n form.append(field);\n\n // The form needs to be a part of the document in\n // order for us to be able to submit it.\n $(document.body).append(form);\n form.submit();\n}\n\n//#endregion\n\n//This is used to help alet the user that a calculation has changed (currently in disbursement screens)\n//based on: http://stackoverflow.com/questions/275931/how-do-you-make-an-element-flash-in-jquery\n//#region AnimateHighlight\n\nvar toHighlight = [];\nvar notLocked = true;\n\n$.fn.animateHighlight = function () {\n toHighlight.push($(this).prop('id'));\n\n return this;\n};\n\n$.fn.triggerAnimateHighlight = function (duration, highlightColor) {\n if (notLocked) {\n notLocked = false;\n\n var elements = '';\n $(toHighlight).each(function (i, e) {\n if (elements) {\n elements += ','\n }\n elements += ('#' + e);\n });\n\n var highlightBg = highlightColor || \"#f0fff0\";\n var animateMs = duration || 1500;\n var originalBg = $(elements).css(\"backgroundColor\");\n $(elements).stop().css(\"background-color\", highlightBg)\n .animate({ backgroundColor: originalBg }, animateMs);\n setTimeout(function () { notLocked = true; }, animateMs);\n\n toHighlight = [];\n }\n\n return this;\n};\n\n//#endregion\n\n//http://stackoverflow.com/questions/3108986/gaussian-bankers-rounding-in-javascript\nfunction evenRound(num, decimalPlaces) {\n if (!num) {\n return num;\n }\n\n var d = decimalPlaces || 2;\n var m = Math.pow(10, d);\n var n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors\n var i = Math.floor(n), f = n - i;\n var e = 1e-8; // Allow for rounding errors in f\n var r = (f > 0.5 - e && f < 0.5 + e) ?\n ((i % 2 == 0) ? i : i + 1) : Math.round(n);\n return (d ? r / m : r);\n}\n\n$.fn.fixDecimalFormat = function () {\n var val = this.val();\n\n if (val) {\n val = fixDecimalFormat(val);\n\n return this.val(val);\n }\n\n return this;\n};\n\nfunction fixDecimalFormat(input, commaSeparate) {\n var val = input.toString();\n\n var decimalIndex = val.indexOf(\".\");\n\n if (decimalIndex < 0) {\n val += '.00';\n }\n else {\n var numChangeDigits = val.length - 1 - decimalIndex;\n\n if (numChangeDigits == 1) {\n val += '0';\n }\n else if (numChangeDigits == 0) {\n val += '00';\n }\n }\n\n decimalIndex = val.indexOf(\".\");\n var currencyIndex = val.indexOf(\"$\");\n\n if (currencyIndex < 0) {\n if (decimalIndex == 0) {\n val = '00' + val;\n }\n else if (decimalIndex == 1) {\n val = '0' + val;\n }\n }\n else {\n var negativeIndex = val.indexOf(\"-\");\n\n if (negativeIndex < 0) {\n if (decimalIndex == 1) {\n val = '$00' + val.replace('$', '');\n }\n else if (decimalIndex == 2) {\n val = '$0' + val.replace('$', '');\n }\n }\n else {\n if (decimalIndex == 3) {\n val = '- $00' + val.replace('- $', '');\n }\n else if (decimalIndex == 4) {\n val = '- $0' + val.replace('- $', '');\n }\n }\n }\n\n if (commaSeparate) {\n return commaSeparateNumber(val);\n }\n else {\n return val;\n }\n}\n\nfunction commaSeparateNumber(val) {\n while (/(\\d+)(\\d{3})/.test(val.toString())) {\n val = val.toString().replace(/(\\d+)(\\d{3})/, '$1' + ',' + '$2');\n }\n return val;\n}\n"],"mappings":"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"}