{"version":3,"sources":["Helpers/jqueryValidation.js"],"names":["extendValidationSettings","settings","$","extend","highlight","element","label","group","closest","addClass","removeClass","find","unhighlight","success","length","errorContainer","errorLabelContainer","errorElement","onkeyup","ignore","TIME_REGEX","DATE_REGEX","UNSIGNED_SHORT_INT_REGEX","HOURS_REGEX","validator","methods","maxlength","value","param","match","jQuery","addMethod","params","trim","this","optional","test","Date","isNaN","val","Number","endTime","moment","startTime","isAfter","target","onfocusout","off","on","valid","phone_number","replace","isRecallOfPasswordMeetsRequirements","data","password","isValid","ajax","url","type","dataType","contentType","JSON","stringify","async","response","message"],"mappings":"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","file":"jqueryValidation.min.js","sourcesContent":["function extendValidationSettings(settings) {\n var extended = $.extend({}, {\n highlight: function (element, label) {\n var group = $(element).closest('.form-group');\n group.addClass('error').removeClass('noError');\n $(element).addClass('error').removeClass('noError');\n group.find('[id^=s2id]').addClass('error');\n },\n unhighlight: function (element, label) {\n var group = $(element).closest('.form-group');\n group.addClass('noError').removeClass('error');\n $(element).addClass('noError').removeClass('error');\n group.find('[id^=s2id]').addClass('noError').removeClass('error');\n },\n success: function (element, label) {\n var group = $(element).closest('.form-group');\n if (group.find('.error').length === 0) {\n group.removeClass('error');\n }\n },\n errorContainer: '#errorMessageBox',\n errorLabelContainer: '#errorList',\n errorElement: \"li\",\n onkeyup: false,\n ignore: ''\n }, settings);\n\n return extended;\n}\n\n//Regex\n\n//http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryid=5&p=6&AspxAutoDetectCookieSupport=1\nvar TIME_REGEX = /^(?:(?:0?[0-9]|1[0-2]):[0-5][0-9]\\s?(?:(?:[Aa]|[Pp])[Mm])?|(?:1[3-9]|2[0-3]):[0-5][0-9])$/;\n\n//http://regexlib.com/REDetails.aspx?regexp_id=416\nvar DATE_REGEX = /^(((0[13578]|10|12)([-./])(0[1-9]|[12][0-9]|3[01])([-./])(\\d{4}))|((0[469]|11)([-./])([0][1-9]|[12][0-9]|30)([-./])(\\d{4}))|((02)([-./])(0[1-9]|1[0-9]|2[0-8])([-./])(\\d{4}))|((02)(\\.|-|\\/)(29)([-./])([02468][048]00))|((02)([-./])(29)([-./])([13579][26]00))|((02)([-./])(29)([-./])([0-9][0-9][0][48]))|((02)([-./])(29)([-./])([0-9][0-9][2468][048]))|((02)([-./])(29)([-./])([0-9][0-9][13579][26])))$/;\n\n//http://regexlib.com/REDetails.aspx?regexp_id=2645\nvar UNSIGNED_SHORT_INT_REGEX = /^(0|(\\+)?([1-9]{1}[0-9]{0,3})|([1-5]{1}[0-9]{1,4}|[6]{1}([0-4]{1}[0-9]{3}|[5]{1}([0-4]{1}[0-9]{2}|[5]{1}([0-2]{1}[0-9]{1}|[3]{1}[0-5]{1})))))$/;\n\n//http://regexlib.com/REDetails.aspx?regexp_id=53\nvar HOURS_REGEX = /^\\d*\\.?\\d*$/;\n\n$.validator.methods.maxlength = function (value, element, param) {\n //The textarea maxlength attribute and the default maxlenth validation method counts CRLF as one char whereas the value that is passed to the server is actually 2 chars.\n // Thus, users can experience an exception on save to due string truncation at the db level. This ammends the maxlength validation method to count correctly. This code\n // is utilizing the same logic as we use to populate the \"characters remaining...\" message.\n var fullLength = value.length + (value.match(/\\n/g) || '').length;\n return fullLength <= param;\n};\n\njQuery.validator.addMethod(\"requiredNoWhitespace\",\n function (value, element, params) {\n return $.trim(value).length > 0;\n }, 'Is Required.');\n\njQuery.validator.addMethod(\"greaterThan\",\n function (value, element, params) {\n if (this.optional(element)) {\n return true;\n }\n\n if (!/Invalid|NaN/.test(new Date(value))) {\n return new Date(value) > new Date($(params).val());\n }\n\n return isNaN(value) && isNaN($(params).val())\n || (Number(value) > Number($(params).val()));\n }, 'Must be greater than {0}.');\n\njQuery.validator.addMethod(\"greaterThanOrEqual\",\n function (value, element, params) {\n if (this.optional(element)) {\n return true;\n }\n\n if (!/Invalid|NaN/.test(new Date(value))) {\n return new Date(value) >= new Date($(params).val());\n }\n\n return isNaN(value) && isNaN($(params).val())\n || (Number(value) >= Number($(params).val()));\n }, 'Must be greater than or equal to {0}.');\n\njQuery.validator.addMethod(\"lessThanOrEqual\",\n function (value, element, params) {\n if (this.optional(element)) {\n return true;\n }\n\n if (!/Invalid|NaN/.test(new Date(value))) {\n return new Date(value) <= new Date($(params).val());\n }\n\n return isNaN(value) && isNaN($(params).val()) || (Number(value) <= Number($(params).val()));\n }, 'Must be greater than or equal to {0}.');\n\njQuery.validator.addMethod(\n \"validTime\",\n function (value, element) {\n if (this.optional(element)) {\n return true;\n }\n\n return value.match(TIME_REGEX);\n }, 'Time is not valid.'\n);\n\njQuery.validator.addMethod(\n \"validDate\",\n function (value, element) {\n return value.match(DATE_REGEX);\n }, 'Date is not valid.'\n);\n\njQuery.validator.addMethod(\n \"validUnsignedShortInteger\",\n function (value, element) {\n return value.match(UNSIGNED_SHORT_INT_REGEX);\n }, 'Number is not valid.'\n);\n\njQuery.validator.addMethod(\n \"validHours\",\n function (value, element) {\n return value.match(HOURS_REGEX);\n }, 'Hour is not valid.'\n);\n\njQuery.validator.addMethod(\"timeGreaterThan\",\n function (value, element, params) {\n if (this.optional(element)) {\n return true;\n }\n\n var endTime = moment(\"1/1/2000 \" + value);\n\n var startTime = moment(\"1/1/2000 \" + $(params).val());\n\n return endTime.isAfter(startTime);\n }, 'Must be greater than {0}.');\n\njQuery.validator.addMethod('trimEqualTo', function (value, element, param) {\n var target = $(param);\n if (this.settings.onfocusout) {\n target.off(\".validate-equalTo\").on(\"blur.validate-equalTo\", function () {\n $(element).valid();\n });\n }\n\n return $.trim(value) === target.val();\n}, 'Please enter the same value again.');\n\n/**\n * matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\n$.validator.addMethod(\"phoneUS\", function (phone_number, element) {\n phone_number = phone_number.replace(/\\s+/g, \"\");\n return this.optional(element) || phone_number.length > 9 &&\n phone_number.match(/^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]([02-9]\\d|1[02-9])-?\\d{4}$/);\n}, \"Please specify a valid phone number\");\n\nvar isRecallOfPasswordMeetsRequirements = false;\n\n$.validator.addMethod(\"passwordMeetsRequirements\", function (value, element, params) {\n var data;\n\n if (params && params !== true) {\n if (typeof params === 'function') {\n data = params();\n }\n else {\n data = params;\n }\n }\n else {\n data = {};\n }\n\n $.extend(data, {\n password: value\n });\n\n if (isRecallOfPasswordMeetsRequirements) {\n isRecallOfPasswordMeetsRequirements = false;\n return false;\n }\n else {\n var isValid = false;\n\n $.ajax({\n url: '/api/PasswordMeetsRequirements',\n type: \"POST\",\n dataType: \"json\",\n contentType: \"application/json\",\n data: JSON.stringify(data),\n async: false,\n success: function (response) {\n if (response.valid) {\n isValid = true;\n } else {\n $(element).data('msg', response.message);\n\n //due to order of operations in JQuery.Validate plugin (error message is resolved before calling validate method),\n //in order to update and display a custom error message returned from server, validate must be called a second time\n\n if (!isRecallOfPasswordMeetsRequirements) {\n isRecallOfPasswordMeetsRequirements = true;\n $(element).valid();\n }\n }\n }\n });\n }\n\n return isValid;\n}, \"Password does not meet requirements.\");\n"]}