{"version":3,"sources":["mcl.validation.js"],"names":["mclValidation","id","add_errors","obj","error","$","removeClass","addClass","get_data","reg_check","val","data","string","type","regEx","test","length","LuhnCheck","undefined","document","on","e","preventDefault","this","$el","noErrors","SpinnerSpin","each","i","hasClass","SpinnerStop","ajaxCheck","Good","luhnArr","str","incNum","counter","odd","temp","String","replace","parseInt","charAt"],"mappings":"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","file":"mcl.validation.js","sourcesContent":["//create the validation object \r\nvar mclValidation = (function (id) {\r\n //check the key up of the text box\r\n $(document).on(\"keyup\", \"#\" + id + \" input[type='text'], #\" + id + \" textarea, #\" + id + \" input[type='password'],#\" + id + \" input[type='number']\", function (e) {\r\n e.preventDefault();\r\n\r\n //is this a required text box?\r\n if ($(this).data(\"val-required\") == true) {\r\n add_errors(this, get_data(this));\r\n }\r\n });\r\n\r\n //check the blur of the text box\r\n $(document).on(\"blur\", \"#\" + id + \" input[type='text'], #\" + id + \" textarea, #\" + id + \" input[type='password'],#\" + id + \" input[type='number']\", function (e) {\r\n e.preventDefault();\r\n\r\n //is this a required text box?\r\n if ($(this).data(\"val-required\") == true) {\r\n add_errors(this, get_data(this));\r\n }\r\n });\r\n\r\n\r\n //check the change event for the validation objects to see if they are valid after their values are changed \r\n $(document).on(\"change\", \"#\" + id + \" input[type='text'], #\" + id + \" textarea, #\" + id + \" input[type='password'],#\" + id + \" input[type='number']\", function (e) {\r\n //is this a required text box?\r\n if ($(this).data(\"val-required\") == true) {\r\n add_errors(this, get_data(this));\r\n }\r\n });\r\n\r\n //check for any errors on form submit \r\n $(document).on(\"submit\", \"#\" + id, function (e) {\r\n var el = this;\r\n var $el = $(this);\r\n var noErrors = true;\r\n\r\n if ($el.data(\"ajax-form\") === undefined) {\r\n SpinnerSpin();\r\n //method var to see if there were any errors \r\n $(\"#\" + id + \" input[type='text'], #\" + id + \" textarea, #\" + id + \" input[type='password'],#\" + id + \" input[type='number']\").each(function (i, obj) {\r\n //is this a required text box?\r\n if ($(obj).data(\"val-required\") == true) {\r\n if (add_errors(obj, get_data(obj))) {\r\n noErrors = false;\r\n }\r\n\r\n if ($(obj).hasClass(\"mclError2\")) { //so that I can add an error to a form field that is unrelated to this validation class, but this class will consider it invalid\r\n noErrors = false;\r\n }\r\n }\r\n });\r\n\r\n //were there any errors while checking the form ?\r\n if (!noErrors) {\r\n SpinnerStop();\r\n return noErrors;\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n //public property for ajax submissions\r\n this.ajaxCheck = (function () {\r\n var Good = true;\r\n\r\n //run the same thing as the submit fucntion, but make it an actual function \r\n $(\"#\" + id + \" input[type='text'], #\" + id + \" textarea, #\" + id + \" input[type='password'],#\" + id + \" input[type='number']\").each(function (i, obj) {\r\n //is this a required text box?\r\n if ($(obj).data(\"val-required\") == true) {\r\n if (add_errors(obj, get_data(obj))) {\r\n Good = false;\r\n }\r\n\r\n if ($(obj).hasClass(\"mclError2\")) {\r\n Good = false;\r\n }\r\n }\r\n });\r\n return Good;\r\n });\r\n\r\n\r\n //private function to add the error classes \r\n function add_errors(obj, error) {\r\n if (!error) {\r\n $(obj).addClass(\"mclError\");\r\n return true;\r\n } else {\r\n $(obj).removeClass(\"mclError\"); \r\n return false;\r\n }\r\n }\r\n\r\n\r\n //private function to determine which case to send to reg_check()\r\n function get_data(obj) {\r\n //obj is the HTML element that is being validated \r\n return reg_check($(obj).val(), $(obj).data(\"val-type\"));\r\n }\r\n\r\n\r\n //private function to check regex for the different items\r\n function reg_check(string, type) {\r\n switch (type) {\r\n case \"email\":\r\n var regEx = /\\S+@\\S+\\.\\S+/;\r\n return regEx.test(string);\r\n break;\r\n\r\n\r\n case \"phone\":\r\n var regEx = /^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/;\r\n return regEx.test(string);\r\n break;\r\n\r\n\r\n case \"text\":\r\n if (string.length > 0) { return true; } else { return false; }\r\n break;\r\n\r\n\r\n case \"zip\":\r\n var regEx = /^\\d{5}(?:[-\\s]\\d{4})?$/;\r\n return regEx.test(string);\r\n break;\r\n\r\n\r\n case \"date\":\r\n var regEx = /[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{4}$/;\r\n return regEx.test(string);\r\n break;\r\n\r\n case \"number\":\r\n var regEx = /(?:^(-)?|\\s)([0-9](?:\\d*|(?:\\d{0,2})(?:,\\d{3})*)(?:\\.\\d*[0-9])?|0?\\.\\d*[0-9]|0)(?:\\s|$)/;\r\n return regEx.test(string);\r\n break;\r\n\r\n case \"wholeNumber\":\r\n var regEx = /^\\d+$/;\r\n return regEx.test(string);\r\n break;\r\n\r\n case \"creditCard\":\r\n return LuhnCheck(string);\r\n break;\r\n //TODO: add any other cases to this to test for other possibilities I didn't consider\r\n\r\n case undefined:\r\n return true;\r\n break;\r\n }\r\n\r\n };\r\n\r\n\r\n //valid credit card algorithm\r\n var LuhnCheck = (function () {\r\n var luhnArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9];\r\n return function (str) {\r\n var counter = 0;\r\n var incNum;\r\n var odd = false;\r\n var temp = String(str).replace(/[^\\d]/g, \"\");\r\n if (temp.length == 0)\r\n return false;\r\n for (var i = temp.length - 1; i >= 0; --i) {\r\n incNum = parseInt(temp.charAt(i), 10);\r\n counter += (odd = !odd) ? incNum : luhnArr[incNum];\r\n }\r\n return (counter % 10 == 0);\r\n };\r\n })();\r\n});"]}