text: /*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
  * Copyright (c) 2013 JÃ¶rn Zaefferer; Licensed MIT */(function (t) { t.extend(t.fn, { validate: function (e) { if (!this.length) return e && e.debug && window.console && console.warn("Nothing selected, can't validate, returning nothing."), void 0; var i = t.data(this[0], "validator"); return i ? i : (this.attr("novalidate", "novalidate"), i = new t.validator(e, this[0]), t.data(this[0], "validator", i), i.settings.onsubmit && (this.validateDelegate(":submit", "click", function (e) { i.settings.submitHandler && (i.submitButton = e.target), t(e.target).hasClass("cancel") && (i.cancelSubmit = !0), void 0 !== t(e.target).attr("formnovalidate") && (i.cancelSubmit = !0) }), this.submit(function (e) { function s() { var s; return i.settings.submitHandler ? (i.submitButton && (s = t("<input type='hidden'/>").attr("name", i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)), i.settings.submitHandler.call(i, i.currentForm, e), i.submitButton && s.remove(), !1) : !0 } return i.settings.debug && e.preventDefault(), i.cancelSubmit ? (i.cancelSubmit = !1, s()) : i.form() ? i.pendingRequest ? (i.formSubmitted = !0, !1) : s() : (i.focusInvalid(), !1) })), i) }, valid: function () { if (t(this[0]).is("form")) return this.validate().form(); var e = !0, i = t(this[0].form).validate(); return this.each(function () { e = e && i.element(this) }), e }, removeAttrs: function (e) { var i = {}, s = this; return t.each(e.split(/\s/), function (t, e) { i[e] = s.attr(e), s.removeAttr(e) }), i }, rules: function (e, i) { var s = this[0]; if (e) { var r = t.data(s.form, "validator").settings, n = r.rules, a = t.validator.staticRules(s); switch (e) { case "add": t.extend(a, t.validator.normalizeRule(i)), delete a.messages, n[s.name] = a, i.messages && (r.messages[s.name] = t.extend(r.messages[s.name], i.messages)); break; case "remove": if (!i) return delete n[s.name], a; var u = {}; return t.each(i.split(/\s/), function (t, e) { u[e] = a[e], delete a[e] }), u } } var o = t.validator.normalizeRules(t.extend({}, t.validator.classRules(s), t.validator.attributeRules(s), t.validator.dataRules(s), t.validator.staticRules(s)), s); if (o.required) { var l = o.required; delete o.required, o = t.extend({ required: l }, o) } return o } }), t.extend(t.expr[":"], { blank: function (e) { return !t.trim("" + t(e).val()) }, filled: function (e) { return !!t.trim("" + t(e).val()) }, unchecked: function (e) { return !t(e).prop("checked") } }), t.validator = function (e, i) { this.settings = t.extend(!0, {}, t.validator.defaults, e), this.currentForm = i, this.init() }, t.validator.format = function (e, i) { return 1 === arguments.length ? function () { var i = t.makeArray(arguments); return i.unshift(e), t.validator.format.apply(this, i) } : (arguments.length > 2 && i.constructor !== Array && (i = t.makeArray(arguments).slice(1)), i.constructor !== Array && (i = [i]), t.each(i, function (t, i) { e = e.replace(RegExp("\\{" + t + "\\}", "g"), function () { return i }) }), e) }, t.extend(t.validator, { defaults: { messages: {}, groups: {}, rules: {}, errorClass: "error", validClass: "valid", errorElement: "label", focusInvalid: !0, errorContainer: t([]), errorLabelContainer: t([]), onsubmit: !0, ignore: ":hidden", ignoreTitle: !1, onfocusin: function (t) { this.lastActive = t, this.settings.focusCleanup && !this.blockFocusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, t, this.settings.errorClass, this.settings.validClass), this.addWrapper(this.errorsFor(t)).hide()) }, onfocusout: function (t) { this.checkable(t) || !(t.name in this.submitted) && this.optional(t) || this.element(t) }, onkeyup: function (t, e) { (9 !== e.which || "" !== this.elementValue(t)) && (t.name in this.submitted || t === this.lastElement) && this.element(t) }, onclick: function (t) { t.name in this.submitted ? this.element(t) : t.parentNode.name in this.submitted && this.element(t.parentNode) }, highlight: function (e, i, s) { "radio" === e.type ? this.findByName(e.name).addClass(i).removeClass(s) : t(e).addClass(i).removeClass(s) }, unhighlight: function (e, i, s) { "radio" === e.type ? this.findByName(e.name).removeClass(i).addClass(s) : t(e).removeClass(i).addClass(s) } }, setDefaults: function (e) { t.extend(t.validator.defaults, e) }, messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a valid date (ISO).", number: "Please enter a valid number.", digits: "Please enter only digits.", creditcard: "Please enter a valid credit card number.", equalTo: "Please enter the same value again.", maxlength: t.validator.format("Please enter no more than {0} characters."), minlength: t.validator.format("Please enter at least {0} characters."), rangelength: t.validator.format("Please enter a value between {0} and {1} characters long."), range: t.validator.format("Please enter a value between {0} and {1}."), max: t.validator.format("Please enter a value less than or equal to {0}."), min: t.validator.format("Please enter a value greater than or equal to {0}.") }, autoCreateRanges: !1, prototype: { init: function () { function e(e) { var i = t.data(this[0].form, "validator"), s = "on" + e.type.replace(/^validate/, ""); i.settings[s] && i.settings[s].call(i, this[0], e) } this.labelContainer = t(this.settings.errorLabelContainer), this.errorContext = this.labelContainer.length && this.labelContainer || t(this.currentForm), this.containers = t(this.settings.errorContainer).add(this.settings.errorLabelContainer), this.submitted = {}, this.valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset(); var i = this.groups = {}; t.each(this.settings.groups, function (e, s) { "string" == typeof s && (s = s.split(/\s/)), t.each(s, function (t, s) { i[s] = e }) }); var s = this.settings.rules; t.each(s, function (e, i) { s[e] = t.validator.normalizeRule(i) }), t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ", "focusin focusout keyup", e).validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", e), this.settings.invalidHandler && t(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler) }, form: function () { return this.checkForm(), t.extend(this.submitted, this.errorMap), this.invalid = t.extend({}, this.errorMap), this.valid() || t(this.currentForm).triggerHandler("invalid-form", [this]), this.showErrors(), this.valid() }, checkForm: function () { this.prepareForm(); for (var t = 0, e = this.currentElements = this.elements() ; e[t]; t++) this.check(e[t]); return this.valid() }, element: function (e) { e = this.validationTargetFor(this.clean(e)), this.lastElement = e, this.prepareElement(e), this.currentElements = t(e); var i = this.check(e) !== !1; return i ? delete this.invalid[e.name] : this.invalid[e.name] = !0, this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), i }, showErrors: function (e) { if (e) { t.extend(this.errorMap, e), this.errorList = []; for (var i in e) this.errorList.push({ message: e[i], element: this.findByName(i)[0] }); this.successList = t.grep(this.successList, function (t) { return !(t.name in e) }) } this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors() }, resetForm: function () { t.fn.resetForm && t(this.currentForm).resetForm(), this.submitted = {}, this.lastElement = null, this.prepareForm(), this.hideErrors(), this.elements().removeClass(this.settings.errorClass).removeData("previousValue") }, numberOfInvalids: function () { return this.objectLength(this.invalid) }, objectLength: function (t) { var e = 0; for (var i in t) e++; return e }, hideErrors: function () { this.addWrapper(this.toHide).hide() }, valid: function () { return 0 === this.size() }, size: function () { return this.errorList.length }, focusInvalid: function () { if (this.settings.focusInvalid) try { t(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus().trigger("focusin") } catch (e) { } }, findLastActive: function () { var e = this.lastActive; return e && 1 === t.grep(this.errorList, function (t) { return t.element.name === e.name }).length && e }, elements: function () { var e = this, i = {}; return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function () { return !this.name && e.settings.debug && window.console && console.error("%o has no name assigned", this), this.name in i || !e.objectLength(t(this).rules()) ? !1 : (i[this.name] = !0, !0) }) }, clean: function (e) { return t(e)[0] }, errors: function () { var e = this.settings.errorClass.replace(" ", "."); return t(this.settings.errorElement + "." + e, this.errorContext) }, reset: function () { this.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = t([]), this.toHide = t([]), this.currentElements = t([]) }, prepareForm: function () { this.reset(), this.toHide = this.errors().add(this.containers) }, prepareElement: function (t) { this.reset(), this.toHide = this.errorsFor(t) }, elementValue: function (e) { var i = t(e).attr("type"), s = t(e).val(); return "radio" === i || "checkbox" === i ? t("input[name='" + t(e).attr("name") + "']:checked").val() : "string" == typeof s ? s.replace(/\r/g, "") : s }, check: function (e) { e = this.validationTargetFor(this.clean(e)); var i, s = t(e).rules(), r = !1, n = this.elementValue(e); for (var a in s) { var u = { method: a, parameters: s[a] }; try { if (i = t.validator.methods[a].call(this, n, e, u.parameters), "dependency-mismatch" === i) { r = !0; continue } if (r = !1, "pending" === i) return this.toHide = this.toHide.not(this.errorsFor(e)), void 0; if (!i) return this.formatAndAdd(e, u), !1 } catch (o) { throw this.settings.debug && window.console && console.log("Exception occurred when checking element " + e.id + ", check the '" + u.method + "' method.", o), o } } return r ? void 0 : (this.objectLength(s) && this.successList.push(e), !0) }, customDataMessage: function (e, i) { return t(e).data("msg-" + i.toLowerCase()) || e.attributes && t(e).attr("data-msg-" + i.toLowerCase()) }, customMessage: function (t, e) { var i = this.settings.messages[t]; return i && (i.constructor === String ? i : i[e]) }, findDefined: function () { for (var t = 0; arguments.length > t; t++) if (void 0 !== arguments[t]) return arguments[t]; return void 0 }, defaultMessage: function (e, i) { return this.findDefined(this.customMessage(e.name, i), this.customDataMessage(e, i), !this.settings.ignoreTitle && e.title || void 0, t.validator.messages[i], "<strong>Warning: No message defined for " + e.name + "</strong>") }, formatAndAdd: function (e, i) { var s = this.defaultMessage(e, i.method), r = /\$?\{(\d+)\}/g; "function" == typeof s ? s = s.call(this, i.parameters, e) : r.test(s) && (s = t.validator.format(s.replace(r, "{$1}"), i.parameters)), this.errorList.push({ message: s, element: e }), this.errorMap[e.name] = s, this.submitted[e.name] = s }, addWrapper: function (t) { return this.settings.wrapper && (t = t.add(t.parent(this.settings.wrapper))), t }, defaultShowErrors: function () { var t, e; for (t = 0; this.errorList[t]; t++) { var i = this.errorList[t]; this.settings.highlight && this.settings.highlight.call(this, i.element, this.settings.errorClass, this.settings.validClass), this.showLabel(i.element, i.message) } if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success) for (t = 0; this.successList[t]; t++) this.showLabel(this.successList[t]); if (this.settings.unhighlight) for (t = 0, e = this.validElements() ; e[t]; t++) this.settings.unhighlight.call(this, e[t], this.settings.errorClass, this.settings.validClass); this.toHide = this.toHide.not(this.toShow), this.hideErrors(), this.addWrapper(this.toShow).show() }, validElements: function () { return this.currentElements.not(this.invalidElements()) }, invalidElements: function () { return t(this.errorList).map(function () { return this.element }) }, showLabel: function (e, i) { var s = this.errorsFor(e); s.length ? (s.removeClass(this.settings.validClass).addClass(this.settings.errorClass), s.html(i)) : (s = t("<" + this.settings.errorElement + ">").attr("for", this.idOrName(e)).addClass(this.settings.errorClass).html(i || ""), this.settings.wrapper && (s = s.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()), this.labelContainer.append(s).length || (this.settings.errorPlacement ? this.settings.errorPlacement(s, t(e)) : s.insertAfter(e))), !i && this.settings.success && (s.text(""), "string" == typeof this.settings.success ? s.addClass(this.settings.success) : this.settings.success(s, e)), this.toShow = this.toShow.add(s) }, errorsFor: function (e) { var i = this.idOrName(e); return this.errors().filter(function () { return t(this).attr("for") === i }) }, idOrName: function (t) { return this.groups[t.name] || (this.checkable(t) ? t.name : t.id || t.name) }, validationTargetFor: function (t) { return this.checkable(t) && (t = this.findByName(t.name).not(this.settings.ignore)[0]), t }, checkable: function (t) { return /radio|checkbox/i.test(t.type) }, findByName: function (e) { return t(this.currentForm).find("[name='" + e + "']") }, getLength: function (e, i) { switch (i.nodeName.toLowerCase()) { case "select": return t("option:selected", i).length; case "input": if (this.checkable(i)) return this.findByName(i.name).filter(":checked").length } return e.length }, depend: function (t, e) { return this.dependTypes[typeof t] ? this.dependTypes[typeof t](t, e) : !0 }, dependTypes: { "boolean": function (t) { return t }, string: function (e, i) { return !!t(e, i.form).length }, "function": function (t, e) { return t(e) } }, optional: function (e) { var i = this.elementValue(e); return !t.validator.methods.required.call(this, i, e) && "dependency-mismatch" }, startRequest: function (t) { this.pending[t.name] || (this.pendingRequest++, this.pending[t.name] = !0) }, stopRequest: function (e, i) { this.pendingRequest--, 0 > this.pendingRequest && (this.pendingRequest = 0), delete this.pending[e.name], i && 0 === this.pendingRequest && this.formSubmitted && this.form() ? (t(this.currentForm).submit(), this.formSubmitted = !1) : !i && 0 === this.pendingRequest && this.formSubmitted && (t(this.currentForm).triggerHandler("invalid-form", [this]), this.formSubmitted = !1) }, previousValue: function (e) { return t.data(e, "previousValue") || t.data(e, "previousValue", { old: null, valid: !0, message: this.defaultMessage(e, "remote") }) } }, classRuleSettings: { required: { required: !0 }, email: { email: !0 }, url: { url: !0 }, date: { date: !0 }, dateISO: { dateISO: !0 }, number: { number: !0 }, digits: { digits: !0 }, creditcard: { creditcard: !0 } }, addClassRules: function (e, i) { e.constructor === String ? this.classRuleSettings[e] = i : t.extend(this.classRuleSettings, e) }, classRules: function (e) { var i = {}, s = t(e).attr("class"); return s && t.each(s.split(" "), function () { this in t.validator.classRuleSettings && t.extend(i, t.validator.classRuleSettings[this]) }), i }, attributeRules: function (e) { var i = {}, s = t(e), r = s[0].getAttribute("type"); for (var n in t.validator.methods) { var a; "required" === n ? (a = s.get(0).getAttribute(n), "" === a && (a = !0), a = !!a) : a = s.attr(n), /min|max/.test(n) && (null === r || /number|range|text/.test(r)) && (a = Number(a)), a ? i[n] = a : r === n && "range" !== r && (i[n] = !0) } return i.maxlength && /-1|2147483647|524288/.test(i.maxlength) && delete i.maxlength, i }, dataRules: function (e) { var i, s, r = {}, n = t(e); for (i in t.validator.methods) s = n.data("rule-" + i.toLowerCase()), void 0 !== s && (r[i] = s); return r }, staticRules: function (e) { var i = {}, s = t.data(e.form, "validator"); return s.settings.rules && (i = t.validator.normalizeRule(s.settings.rules[e.name]) || {}), i }, normalizeRules: function (e, i) { return t.each(e, function (s, r) { if (r === !1) return delete e[s], void 0; if (r.param || r.depends) { var n = !0; switch (typeof r.depends) { case "string": n = !!t(r.depends, i.form).length; break; case "function": n = r.depends.call(i, i) } n ? e[s] = void 0 !== r.param ? r.param : !0 : delete e[s] } }), t.each(e, function (s, r) { e[s] = t.isFunction(r) ? r(i) : r }), t.each(["minlength", "maxlength"], function () { e[this] && (e[this] = Number(e[this])) }), t.each(["rangelength", "range"], function () { var i; e[this] && (t.isArray(e[this]) ? e[this] = [Number(e[this][0]), Number(e[this][1])] : "string" == typeof e[this] && (i = e[this].split(/[\s,]+/), e[this] = [Number(i[0]), Number(i[1])])) }), t.validator.autoCreateRanges && (e.min && e.max && (e.range = [e.min, e.max], delete e.min, delete e.max), e.minlength && e.maxlength && (e.rangelength = [e.minlength, e.maxlength], delete e.minlength, delete e.maxlength)), e }, normalizeRule: function (e) { if ("string" == typeof e) { var i = {}; t.each(e.split(/\s/), function () { i[this] = !0 }), e = i } return e }, addMethod: function (e, i, s) { t.validator.methods[e] = i, t.validator.messages[e] = void 0 !== s ? s : t.validator.messages[e], 3 > i.length && t.validator.addClassRules(e, t.validator.normalizeRule(e)) }, methods: { required: function (e, i, s) { if (!this.depend(s, i)) return "dependency-mismatch"; if ("select" === i.nodeName.toLowerCase()) { var r = t(i).val(); return r && r.length > 0 } return this.checkable(i) ? this.getLength(e, i) > 0 : t.trim(e).length > 0 }, email: function (t, e) { return this.optional(e) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t) }, url: function (t, e) { return this.optional(e) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t) }, date: function (t, e) { return this.optional(e) || !/Invalid|NaN/.test("" + new Date(t)) }, dateISO: function (t, e) { return this.optional(e) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t) }, number: function (t, e) { return this.optional(e) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t) }, digits: function (t, e) { return this.optional(e) || /^\d+$/.test(t) }, creditcard: function (t, e) { if (this.optional(e)) return "dependency-mismatch"; if (/[^0-9 \-]+/.test(t)) return !1; var i = 0, s = 0, r = !1; t = t.replace(/\D/g, ""); for (var n = t.length - 1; n >= 0; n--) { var a = t.charAt(n); s = parseInt(a, 10), r && (s *= 2) > 9 && (s -= 9), i += s, r = !r } return 0 === i % 10 }, minlength: function (e, i, s) { var r = t.isArray(e) ? e.length : this.getLength(t.trim(e), i); return this.optional(i) || r >= s }, maxlength: function (e, i, s) { var r = t.isArray(e) ? e.length : this.getLength(t.trim(e), i); return this.optional(i) || s >= r }, rangelength: function (e, i, s) { var r = t.isArray(e) ? e.length : this.getLength(t.trim(e), i); return this.optional(i) || r >= s[0] && s[1] >= r }, min: function (t, e, i) { return this.optional(e) || t >= i }, max: function (t, e, i) { return this.optional(e) || i >= t }, range: function (t, e, i) { return this.optional(e) || t >= i[0] && i[1] >= t }, equalTo: function (e, i, s) { var r = t(s); return this.settings.onfocusout && r.unbind(".validate-equalTo").bind("blur.validate-equalTo", function () { t(i).valid() }), e === r.val() }, remote: function (e, i, s) { if (this.optional(i)) return "dependency-mismatch"; var r = this.previousValue(i); if (this.settings.messages[i.name] || (this.settings.messages[i.name] = {}), r.originalMessage = this.settings.messages[i.name].remote, this.settings.messages[i.name].remote = r.message, s = "string" == typeof s && { url: s } || s, r.old === e) return r.valid; r.old = e; var n = this; this.startRequest(i); var a = {}; return a[i.name] = e, t.ajax(t.extend(!0, { url: s, mode: "abort", port: "validate" + i.name, dataType: "json", data: a, success: function (s) { n.settings.messages[i.name].remote = r.originalMessage; var a = s === !0 || "true" === s; if (a) { var u = n.formSubmitted; n.prepareElement(i), n.formSubmitted = u, n.successList.push(i), delete n.invalid[i.name], n.showErrors() } else { var o = {}, l = s || n.defaultMessage(i, "remote"); o[i.name] = r.message = t.isFunction(l) ? l(e) : l, n.invalid[i.name] = !0, n.showErrors(o) } r.valid = a, n.stopRequest(i, a) } }, s)), "pending" } } }), t.format = t.validator.format })(jQuery), function (t) { var e = {}; if (t.ajaxPrefilter) t.ajaxPrefilter(function (t, i, s) { var r = t.port; "abort" === t.mode && (e[r] && e[r].abort(), e[r] = s) }); else { var i = t.ajax; t.ajax = function (s) { var r = ("mode" in s ? s : t.ajaxSettings).mode, n = ("port" in s ? s : t.ajaxSettings).port; return "abort" === r ? (e[n] && e[n].abort(), e[n] = i.apply(this, arguments), e[n]) : i.apply(this, arguments) } } }(jQuery), function (t) { t.extend(t.fn, { validateDelegate: function (e, i, s) { return this.bind(i, function (i) { var r = t(i.target); return r.is(e) ? s.apply(r, arguments) : void 0 }) } }) }(jQuery);
  
  jQuery.validator.setDefaults({
      ignore: ':hidden:not([class~=selectized]),:hidden > .selectized, .selectize-control .selectize-input input'
  });
  
  
  //validação de CPF
  jQuery.validator.addMethod("cpfCnpj", function (value, element) {
  
      if (jQuery("#txtPreInscricaoEtapa2TipoPessoa").val() == "1") {
  
          value = jQuery.trim(value);
          value = value.replaceAll('.', '');
          value = value.replaceAll('.', '');
          cpf = value.replaceAll('-', '').replaceAll('.', '').replaceAll('_', '');
  
          while (cpf.length < 11) cpf = "0" + cpf;
          var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
          var a = [];
          var b = new Number;
          var c = 11;
          for (i = 0; i < 14; i++) {
              a[i] = cpf.charAt(i);
              if (i < 9) b += (a[i] * --c);
          }
          if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
          b = 0;
          c = 11;
          for (y = 0; y < 10; y++) b += (a[y] * c--);
          if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
          if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
          return true;
  
      } else {
  
          value = jQuery.trim(value);
  
          // DEIXA APENAS OS NÚMEROS
          value = value.replace('/', '');
          value = value.replace('.', '');
          value = value.replace('.', '');
          value = value.replace('-', '');
  
          var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
          digitos_iguais = 1;
  
          if (value.length < 14 && value.length < 15) {
              return false;
          }
          for (i = 0; i < value.length - 1; i++) {
              if (value.charAt(i) != value.charAt(i + 1)) {
                  digitos_iguais = 0;
                  break;
              }
          }
  
          if (!digitos_iguais) {
              tamanho = value.length - 2
              numeros = value.substring(0, tamanho);
              digitos = value.substring(tamanho);
              soma = 0;
              pos = tamanho - 7;
  
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(0)) {
                  return false;
              }
              tamanho = tamanho + 1;
              numeros = value.substring(0, tamanho);
              soma = 0;
              pos = tamanho - 7;
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(1)) {
                  return false;
              }
              return true;
          } else {
              return false;
          }
  
      }
  
  }, "Informe um documento válido.");  // Mensagem padrão 
  
  jQuery.validator.addMethod("cpfCnpjValorSobConsulta", function (value, element) {
  
      if (jQuery("#txtValorSobConsultaEtapa2TipoPessoa").val() == "1") {
  
          value = jQuery.trim(value);
          value = value.replaceAll('.', '');
          value = value.replaceAll('.', '');
          cpf = value.replaceAll('-', '').replaceAll('.', '').replaceAll('_', '');
  
          while (cpf.length < 11) cpf = "0" + cpf;
          var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
          var a = [];
          var b = new Number;
          var c = 11;
          for (i = 0; i < 14; i++) {
              a[i] = cpf.charAt(i);
              if (i < 9) b += (a[i] * --c);
          }
          if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
          b = 0;
          c = 11;
          for (y = 0; y < 10; y++) b += (a[y] * c--);
          if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
          if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
          return true;
  
      } else {
  
          value = jQuery.trim(value);
  
          // DEIXA APENAS OS NÚMEROS
          value = value.replace('/', '');
          value = value.replace('.', '');
          value = value.replace('.', '');
          value = value.replace('-', '');
  
          var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
          digitos_iguais = 1;
  
          if (value.length < 14 && value.length < 15) {
              return false;
          }
          for (i = 0; i < value.length - 1; i++) {
              if (value.charAt(i) != value.charAt(i + 1)) {
                  digitos_iguais = 0;
                  break;
              }
          }
  
          if (!digitos_iguais) {
              tamanho = value.length - 2
              numeros = value.substring(0, tamanho);
              digitos = value.substring(tamanho);
              soma = 0;
              pos = tamanho - 7;
  
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(0)) {
                  return false;
              }
              tamanho = tamanho + 1;
              numeros = value.substring(0, tamanho);
              soma = 0;
              pos = tamanho - 7;
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(1)) {
                  return false;
              }
              return true;
          } else {
              return false;
          }
  
      }
  
  }, "Informe um documento válido.");  // Mensagem padrão 
  
  
  jQuery.validator.addMethod("cpfCnpjAviseMe", function (value, element) {
  
      if (jQuery("#txtAviseMeEtapa2TipoPessoa").val() == "1") {
  
          value = jQuery.trim(value);
          value = value.replaceAll('.', '');
          value = value.replaceAll('.', '');
          cpf = value.replaceAll('-', '').replaceAll('.', '').replaceAll('_', '');
  
          while (cpf.length < 11) cpf = "0" + cpf;
          var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
          var a = [];
          var b = new Number;
          var c = 11;
          for (i = 0; i < 14; i++) {
              a[i] = cpf.charAt(i);
              if (i < 9) b += (a[i] * --c);
          }
          if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
          b = 0;
          c = 11;
          for (y = 0; y < 10; y++) b += (a[y] * c--);
          if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
          if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
          return true;
  
      } else {
  
          value = jQuery.trim(value);
  
          // DEIXA APENAS OS NÚMEROS
          value = value.replace('/', '');
          value = value.replace('.', '');
          value = value.replace('.', '');
          value = value.replace('-', '');
  
          var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
          digitos_iguais = 1;
  
          if (value.length < 14 && value.length < 15) {
              return false;
          }
          for (i = 0; i < value.length - 1; i++) {
              if (value.charAt(i) != value.charAt(i + 1)) {
                  digitos_iguais = 0;
                  break;
              }
          }
  
          if (!digitos_iguais) {
              tamanho = value.length - 2
              numeros = value.substring(0, tamanho);
              digitos = value.substring(tamanho);
              soma = 0;
              pos = tamanho - 7;
  
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(0)) {
                  return false;
              }
              tamanho = tamanho + 1;
              numeros = value.substring(0, tamanho);
              soma = 0;
              pos = tamanho - 7;
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(1)) {
                  return false;
              }
              return true;
          } else {
              return false;
          }
  
      }
  
  }, "Informe um documento válido.");  // Mensagem padrão 
  
  
  jQuery.validator.addMethod("cpfCnpjInCompany", function (value, element) {
  
      if (jQuery("#txtInCompanyEtapa2TipoPessoa").val() == "1") {
  
          value = jQuery.trim(value);
          value = value.replaceAll('.', '');
          value = value.replaceAll('.', '');
          cpf = value.replaceAll('-', '').replaceAll('.', '').replaceAll('_', '');
  
          while (cpf.length < 11) cpf = "0" + cpf;
          var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
          var a = [];
          var b = new Number;
          var c = 11;
          for (i = 0; i < 14; i++) {
              a[i] = cpf.charAt(i);
              if (i < 9) b += (a[i] * --c);
          }
          if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
          b = 0;
          c = 11;
          for (y = 0; y < 10; y++) b += (a[y] * c--);
          if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
          if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
          return true;
  
      } else {
  
          value = jQuery.trim(value);
  
          // DEIXA APENAS OS NÚMEROS
          value = value.replace('/', '');
          value = value.replace('.', '');
          value = value.replace('.', '');
          value = value.replace('-', '');
  
          var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
          digitos_iguais = 1;
  
          if (value.length < 14 && value.length < 15) {
              return false;
          }
          for (i = 0; i < value.length - 1; i++) {
              if (value.charAt(i) != value.charAt(i + 1)) {
                  digitos_iguais = 0;
                  break;
              }
          }
  
          if (!digitos_iguais) {
              tamanho = value.length - 2
              numeros = value.substring(0, tamanho);
              digitos = value.substring(tamanho);
              soma = 0;
              pos = tamanho - 7;
  
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(0)) {
                  return false;
              }
              tamanho = tamanho + 1;
              numeros = value.substring(0, tamanho);
              soma = 0;
              pos = tamanho - 7;
              for (i = tamanho; i >= 1; i--) {
                  soma += numeros.charAt(tamanho - i) * pos--;
                  if (pos < 2) {
                      pos = 9;
                  }
              }
              resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
              if (resultado != digitos.charAt(1)) {
                  return false;
              }
              return true;
          } else {
              return false;
          }
  
      }
  
  }, "Informe um documento válido.");  // Mensagem padrão 
  
  
  //validação de CPF
  jQuery.validator.addMethod("cpf", function (value, element) {
      value = jQuery.trim(value);
      value = value.replaceAll('.', '');
      value = value.replaceAll('.', '');
      cpf = value.replaceAll('-', '').replaceAll('.', '').replaceAll('_', '');
  
      while (cpf.length < 11) cpf = "0" + cpf;
      var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
      var a = [];
      var b = new Number;
      var c = 11;
      for (i = 0; i < 14; i++) {
          a[i] = cpf.charAt(i);
          if (i < 9) b += (a[i] * --c);
      }
      if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
      b = 0;
      c = 11;
      for (y = 0; y < 10; y++) b += (a[y] * c--);
      if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
      if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
      return true;
  }, "Informe um CPF válido.");  // Mensagem padrão 
  
  jQuery.validator.addMethod("dateBR", function (value, element) {
      //contando chars
      if (value.length != 10) return false;
      // verificando data
      var data = value;
      var dia = data.substr(0, 2);
      var barra1 = data.substr(2, 1);
      var mes = data.substr(3, 2);
      var barra2 = data.substr(5, 1);
      var ano = data.substr(6, 4);
      if (data.length != 10 || barra1 != "/" || barra2 != "/" || isNaN(dia) || isNaN(mes) || isNaN(ano) || dia > 31 || mes > 12) return false;
      if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia == 31) return false;
      if (mes == 2 && (dia > 29 || (dia == 29 && ano % 4 != 0))) return false;
      if (ano < 1900) return false;
      return true;
  }, "Informe uma data válida");  // Mensagem padrão 
  
  jQuery.validator.addMethod("dateTimeBR", function (value, element) {
      //contando chars
      if (value.length != 16) return false;
      // dividindo data e hora
      if (value.substr(10, 1) != ' ') return false; // verificando se há espaço
      var arrOpcoes = value.split(' ');
      if (arrOpcoes.length != 2) return false; // verificando a divisão de data e hora
      // verificando data
      var data = arrOpcoes[0];
      var dia = data.substr(0, 2);
      var barra1 = data.substr(2, 1);
      var mes = data.substr(3, 2);
      var barra2 = data.substr(5, 1);
      var ano = data.substr(6, 4);
      if (data.length != 10 || barra1 != "/" || barra2 != "/" || isNaN(dia) || isNaN(mes) || isNaN(ano) || dia > 31 || mes > 12) return false;
      if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia == 31) return false;
      if (mes == 2 && (dia > 29 || (dia == 29 && ano % 4 != 0))) return false;
      // verificando hora
      var horario = arrOpcoes[1];
      var hora = horario.substr(0, 2);
      var doispontos = horario.substr(2, 1);
      var minuto = horario.substr(3, 2);
      if (horario.length != 5 || isNaN(hora) || isNaN(minuto) || hora > 23 || minuto > 59 || doispontos != ":") return false;
      return true;
  }, "Informe uma data e uma hora válida");
  
  
  
  /*
  * NOVO METODO PARA O JQUERY VALIDATE
  * VALIDA CNPJ COM 14 OU 15 DIGITOS
  * A VALIDAÇÃO É FEITA COM OU SEM OS CARACTERES SEPARADORES, PONTO, HIFEN, BARRA
  */
  jQuery.validator.addMethod("cnpj", function (cnpj, element) {
      cnpj = jQuery.trim(cnpj);
  
      // DEIXA APENAS OS NÚMEROS
      cnpj = cnpj.replace('/', '');
      cnpj = cnpj.replace('.', '');
      cnpj = cnpj.replace('.', '');
      cnpj = cnpj.replace('-', '');
  
      var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
      digitos_iguais = 1;
  
      if (cnpj.length < 14 && cnpj.length < 15) {
          return false;
      }
      for (i = 0; i < cnpj.length - 1; i++) {
          if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
              digitos_iguais = 0;
              break;
          }
      }
  
      if (!digitos_iguais) {
          tamanho = cnpj.length - 2
          numeros = cnpj.substring(0, tamanho);
          digitos = cnpj.substring(tamanho);
          soma = 0;
          pos = tamanho - 7;
  
          for (i = tamanho; i >= 1; i--) {
              soma += numeros.charAt(tamanho - i) * pos--;
              if (pos < 2) {
                  pos = 9;
              }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(0)) {
              return false;
          }
          tamanho = tamanho + 1;
          numeros = cnpj.substring(0, tamanho);
          soma = 0;
          pos = tamanho - 7;
          for (i = tamanho; i >= 1; i--) {
              soma += numeros.charAt(tamanho - i) * pos--;
              if (pos < 2) {
                  pos = 9;
              }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(1)) {
              return false;
          }
          return true;
      } else {
          return false;
      }
  }, "Informe um CNPJ válido."); // Mensagem padrão
  
  
  
  jQuery.validator.addMethod("moeda", function (value, element) {
      var valor = value.replaceAll(",", "").replaceAll(".", "").replaceAll("_", "");
  
      if (valor.length < 3) return false;
      if (parseInt(valor) <= 0) return false;
      return true;
  }, "Informe um tipo moeda válido.");             // Mensagem padrão 
  
  jQuery.validator.addMethod("qtdMinima", function (value, element) {
      var valor = value.replaceAll(",", "").replaceAll(".", "").replaceAll("_", "");
  
      if (valor.length < 1) return false;
      if (parseInt(valor) <= 0) return false;
  
      return true;
  }, "Informe um numero minino.");     // Mensagem padrão
  
  jQuery.validator.addMethod("validaTipoIcms", function (value, element) {
  
      if (element.checked == true) {
          if ($("#tITValTipoICMS").val() == "0,00") {
              return false;
          } else {
              return true;
          }
  
      }
  
      return true;
  }, "Informe um numero minino.");             // Mensagem padrão
  
  
  jQuery.validator.addMethod("validaSelecao", function (value, element) {
  
      if (value == "0") {
          return false;
      } else {
          return true;
      }
  
      return true;
  }, "Selecione um item.");               // Mensagem padrão 
  
  
  jQuery.validator.addMethod("validaNomeSobrenome", function (value, element) {
  
      var input = element.value;
      if (regex = /[a-z]+\s[a-z]+/gi.exec(input)) {
          return true;
      }
      else {
          return false;
      }
  
      return true;
  }, "Digite nome e sobrenome.");
  
  
  
  
  
  
  jQuery.extend(jQuery.validator.methods, {
      number: function (value, element) {
          return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value.replace(".", ","));
      }
  });
  
  
  /*
  * NOVO METODO PARA O JQUERY VALIDATE
  * VALIDA CNPJ COM 14 OU 15 DIGITOS
  * A VALIDAÇÃO É FEITA COM OU SEM OS CARACTERES SEPARADORES, PONTO, HIFEN, BARRA
  */
  jQuery.validator.addMethod("cnpj", function (cnpj, element) {
      cnpj = jQuery.trim(cnpj);
  
      // DEIXA APENAS OS NÚMEROS
      cnpj = cnpj.replace('/', '');
      cnpj = cnpj.replace('.', '');
      cnpj = cnpj.replace('.', '');
      cnpj = cnpj.replace('-', '');
  
      var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
      digitos_iguais = 1;
  
      if (cnpj.length < 14 && cnpj.length < 15) {
          return false;
      }
      for (i = 0; i < cnpj.length - 1; i++) {
          if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
              digitos_iguais = 0;
              break;
          }
      }
  
      if (!digitos_iguais) {
          tamanho = cnpj.length - 2
          numeros = cnpj.substring(0, tamanho);
          digitos = cnpj.substring(tamanho);
          soma = 0;
          pos = tamanho - 7;
  
          for (i = tamanho; i >= 1; i--) {
              soma += numeros.charAt(tamanho - i) * pos--;
              if (pos < 2) {
                  pos = 9;
              }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(0)) {
              return false;
          }
          tamanho = tamanho + 1;
          numeros = cnpj.substring(0, tamanho);
          soma = 0;
          pos = tamanho - 7;
          for (i = tamanho; i >= 1; i--) {
              soma += numeros.charAt(tamanho - i) * pos--;
              if (pos < 2) {
                  pos = 9;
              }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(1)) {
              return false;
          }
          return true;
      } else {
          return false;
      }
  }, "Informe um CNPJ válido."); // Mensagem padrão 