123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892 |
- /**
- * jQuery Validation Plugin 1.8.0
- *
- * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ http://docs.jquery.com/Plugins/Validation
- *
- * Copyright (c) 2006 - 2011 Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses: http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
- (function(c) {
- c.extend(c.fn, {
- validate : function(a) {
- if (this.length) {
- var b = c.data(this[0], "validator");
- if (b)
- return b;
- b = new c.validator(a, this[0]);
- c.data(this[0], "validator", b);
- if (b.settings.onsubmit) {
- this.find("input, button").filter(".cancel").click(function() {
- b.cancelSubmit = true
- });
- b.settings.submitHandler && this.find("input, button").filter(":submit").click(function() {
- b.submitButton = this
- });
- this.submit(function(d) {
- function e() {
- if (b.settings.submitHandler) {
- if (b.submitButton)
- var f = c("<input type='hidden'/>").attr("name", b.submitButton.name).val(
- b.submitButton.value).appendTo(b.currentForm);
- b.settings.submitHandler.call(b, b.currentForm);
- b.submitButton && f.remove();
- return false
- }
- return true
- }
- b.settings.debug && d.preventDefault();
- if (b.cancelSubmit) {
- b.cancelSubmit = false;
- return e()
- }
- if (b.form()) {
- if (b.pendingRequest) {
- b.formSubmitted = true;
- return false
- }
- return e()
- } else {
- b.focusInvalid();
- return false
- }
- })
- }
- return b
- } else
- a && a.debug && window.console && console.warn("nothing selected, can't validate, returning nothing")
- },
- valid : function() {
- if (c(this[0]).is("form"))
- return this.validate().form();
- else {
- var a = true, b = c(this[0].form).validate();
- this.each(function() {
- a &= b.element(this)
- });
- return a
- }
- },
- removeAttrs : function(a) {
- var b = {}, d = this;
- c.each(a.split(/\s/), function(e, f) {
- b[f] = d.attr(f);
- d.removeAttr(f)
- });
- return b
- },
- rules : function(a, b) {
- var d = this[0];
- if (a) {
- var e = c.data(d.form, "validator").settings, f = e.rules, g = c.validator.staticRules(d);
- switch (a) {
- case "add":
- c.extend(g, c.validator.normalizeRule(b));
- f[d.name] = g;
- if (b.messages)
- e.messages[d.name] = c.extend(e.messages[d.name], b.messages);
- break;
- case "remove":
- if (!b) {
- delete f[d.name];
- return g
- }
- var h = {};
- c.each(b.split(/\s/), function(j, i) {
- h[i] = g[i];
- delete g[i]
- });
- return h
- }
- }
- d = c.validator.normalizeRules(c.extend({}, c.validator.metadataRules(d), c.validator.classRules(d),
- c.validator.attributeRules(d), c.validator.staticRules(d)), d);
- if (d.required) {
- e = d.required;
- delete d.required;
- d = c.extend({
- required : e
- }, d)
- }
- return d
- }
- });
- c.extend(c.expr[":"], {
- blank : function(a) {
- return !c.trim("" + a.value)
- },
- filled : function(a) {
- return !!c.trim("" + a.value)
- },
- unchecked : function(a) {
- return !a.checked
- }
- });
- c.validator = function(a, b) {
- this.settings = c.extend(true, {}, c.validator.defaults, a);
- this.currentForm = b;
- this.init()
- };
- c.validator.format = function(a, b) {
- if (arguments.length == 1)
- return function() {
- var d = c.makeArray(arguments);
- d.unshift(a);
- return c.validator.format.apply(this, d)
- };
- if (arguments.length > 2 && b.constructor != Array)
- b = c.makeArray(arguments).slice(1);
- if (b.constructor != Array)
- b = [ b ];
- c.each(b, function(d, e) {
- a = a.replace(RegExp("\\{" + d + "\\}", "g"), e)
- });
- return a
- };
- c
- .extend(
- c.validator,
- {
- defaults : {
- messages : {},
- groups : {},
- rules : {},
- errorClass : "error",
- validClass : "valid",
- errorElement : "label",
- focusInvalid : true,
- errorContainer : c([]),
- errorLabelContainer : c([]),
- onsubmit : true,
- ignore : [],
- ignoreTitle : false,
- onfocusin : function(a) {
- this.lastActive = a;
- if (this.settings.focusCleanup && !this.blockFocusCleanup) {
- this.settings.unhighlight
- && this.settings.unhighlight.call(this, a, this.settings.errorClass,
- this.settings.validClass);
- this.addWrapper(this.errorsFor(a)).hide()
- }
- },
- onfocusout : function(a) {
- if (!this.checkable(a) && (a.name in this.submitted || !this.optional(a)))
- this.element(a)
- },
- onkeyup : function(a) {
- if (a.name in this.submitted || a == this.lastElement)
- this.element(a)
- },
- onclick : function(a) {
- if (a.name in this.submitted)
- this.element(a);
- else
- a.parentNode.name in this.submitted && this.element(a.parentNode)
- },
- highlight : function(a, b, d) {
- c(a).addClass(b).removeClass(d)
- },
- unhighlight : function(a, b, d) {
- c(a).removeClass(b).addClass(d)
- }
- },
- setDefaults : function(a) {
- c.extend(c.validator.defaults, a)
- },
- 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.",
- accept : "Please enter a value with a valid extension.",
- maxlength : c.validator.format("Please enter no more than {0} characters."),
- minlength : c.validator.format("Please enter at least {0} characters."),
- rangelength : c.validator
- .format("Please enter a value between {0} and {1} characters long."),
- range : c.validator.format("Please enter a value between {0} and {1}."),
- max : c.validator.format("Please enter a value less than or equal to {0}."),
- min : c.validator.format("Please enter a value greater than or equal to {0}.")
- },
- autoCreateRanges : false,
- prototype : {
- init : function() {
- function a(e) {
- var f = c.data(this[0].form, "validator");
- e = "on" + e.type.replace(/^validate/, "");
- f.settings[e] && f.settings[e].call(f, this[0])
- }
- this.labelContainer = c(this.settings.errorLabelContainer);
- this.errorContext = this.labelContainer.length && this.labelContainer
- || c(this.currentForm);
- this.containers = c(this.settings.errorContainer)
- .add(this.settings.errorLabelContainer);
- this.submitted = {};
- this.valueCache = {};
- this.pendingRequest = 0;
- this.pending = {};
- this.invalid = {};
- this.reset();
- var b = this.groups = {};
- c.each(this.settings.groups, function(e, f) {
- c.each(f.split(/\s/), function(g, h) {
- b[h] = e
- })
- });
- var d = this.settings.rules;
- c.each(d, function(e, f) {
- d[e] = c.validator.normalizeRule(f)
- });
- c(this.currentForm).validateDelegate(":text, :password, :file, select, textarea",
- "focusin focusout keyup", a).validateDelegate(
- ":radio, :checkbox, select, option", "click", a);
- this.settings.invalidHandler
- && c(this.currentForm).bind("invalid-form.validate",
- this.settings.invalidHandler)
- },
- form : function() {
- this.checkForm();
- c.extend(this.submitted, this.errorMap);
- this.invalid = c.extend({}, this.errorMap);
- this.valid() || c(this.currentForm).triggerHandler("invalid-form", [ this ]);
- this.showErrors();
- return this.valid()
- },
- checkForm : function() {
- this.prepareForm();
- for ( var a = 0, b = this.currentElements = this.elements(); b[a]; a++)
- this.check(b[a]);
- return this.valid()
- },
- element : function(a) {
- this.lastElement = a = this.clean(a);
- this.prepareElement(a);
- this.currentElements = c(a);
- var b = this.check(a);
- if (b)
- delete this.invalid[a.name];
- else
- this.invalid[a.name] = true;
- if (!this.numberOfInvalids())
- this.toHide = this.toHide.add(this.containers);
- this.showErrors();
- return b
- },
- showErrors : function(a) {
- if (a) {
- c.extend(this.errorMap, a);
- this.errorList = [];
- for ( var b in a)
- this.errorList.push({
- message : a[b],
- element : this.findByName(b)[0]
- });
- this.successList = c.grep(this.successList, function(d) {
- return !(d.name in a)
- })
- }
- this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap,
- this.errorList) : this.defaultShowErrors()
- },
- resetForm : function() {
- c.fn.resetForm && c(this.currentForm).resetForm();
- this.submitted = {};
- this.prepareForm();
- this.hideErrors();
- this.elements().removeClass(this.settings.errorClass)
- },
- numberOfInvalids : function() {
- return this.objectLength(this.invalid)
- },
- objectLength : function(a) {
- var b = 0, d;
- for (d in a)
- b++;
- return b
- },
- hideErrors : function() {
- this.addWrapper(this.toHide).hide()
- },
- valid : function() {
- return this.size() == 0
- },
- size : function() {
- return this.errorList.length
- },
- focusInvalid : function() {
- if (this.settings.focusInvalid)
- try {
- c(
- this.findLastActive() || this.errorList.length
- && this.errorList[0].element || []).filter(":visible").focus()
- .trigger("focusin")
- } catch (a) {
- }
- },
- findLastActive : function() {
- var a = this.lastActive;
- return a && c.grep(this.errorList, function(b) {
- return b.element.name == a.name
- }).length == 1 && a
- },
- elements : function() {
- var a = this, b = {};
- return c([]).add(this.currentForm.elements).filter(":input").not(
- ":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(
- function() {
- !this.name && a.settings.debug && window.console
- && console.error("%o has no name assigned", this);
- if (this.name in b || !a.objectLength(c(this).rules()))
- return false;
- return b[this.name] = true
- })
- },
- clean : function(a) {
- return c(a)[0]
- },
- errors : function() {
- return c(this.settings.errorElement + "." + this.settings.errorClass, this.errorContext)
- },
- reset : function() {
- this.successList = [];
- this.errorList = [];
- this.errorMap = {};
- this.toShow = c([]);
- this.toHide = c([]);
- this.currentElements = c([])
- },
- prepareForm : function() {
- this.reset();
- this.toHide = this.errors().add(this.containers)
- },
- prepareElement : function(a) {
- this.reset();
- this.toHide = this.errorsFor(a)
- },
- check : function(a) {
- a = this.clean(a);
- if (this.checkable(a))
- a = this.findByName(a.name).not(this.settings.ignore)[0];
- var b = c(a).rules(), d = false, e;
- for (e in b) {
- var f = {
- method : e,
- parameters : b[e]
- };
- try {
- var g = c.validator.methods[e].call(this, a.value.replace(/\r/g, ""), a,
- f.parameters);
- if (g == "dependency-mismatch")
- d = true;
- else {
- d = false;
- if (g == "pending") {
- this.toHide = this.toHide.not(this.errorsFor(a));
- return
- }
- if (!g) {
- this.formatAndAdd(a, f);
- return false
- }
- }
- } catch (h) {
- this.settings.debug
- && window.console
- && console.log("exception occured when checking element " + a.id
- + ", check the '" + f.method + "' method", h);
- throw h;
- }
- }
- if (!d) {
- this.objectLength(b) && this.successList.push(a);
- return true
- }
- },
- customMetaMessage : function(a, b) {
- if (c.metadata) {
- var d = this.settings.meta ? c(a).metadata()[this.settings.meta] : c(a).metadata();
- return d && d.messages && d.messages[b]
- }
- },
- customMessage : function(a, b) {
- var d = this.settings.messages[a];
- return d && (d.constructor == String ? d : d[b])
- },
- findDefined : function() {
- for ( var a = 0; a < arguments.length; a++)
- if (arguments[a] !== undefined)
- return arguments[a]
- },
- defaultMessage : function(a, b) {
- return this.findDefined(this.customMessage(a.name, b), this.customMetaMessage(a, b),
- !this.settings.ignoreTitle && a.title || undefined, c.validator.messages[b],
- "<strong>Warning: No message defined for " + a.name + "</strong>")
- },
- formatAndAdd : function(a, b) {
- var d = this.defaultMessage(a, b.method), e = /\$?\{(\d+)\}/g;
- if (typeof d == "function")
- d = d.call(this, b.parameters, a);
- else if (e.test(d))
- d = jQuery.format(d.replace(e, "{$1}"), b.parameters);
- this.errorList.push({
- message : d,
- element : a
- });
- this.errorMap[a.name] = d;
- this.submitted[a.name] = d
- },
- addWrapper : function(a) {
- if (this.settings.wrapper)
- a = a.add(a.parent(this.settings.wrapper));
- return a
- },
- defaultShowErrors : function() {
- for ( var a = 0; this.errorList[a]; a++) {
- var b = this.errorList[a];
- this.settings.highlight
- && this.settings.highlight.call(this, b.element, this.settings.errorClass,
- this.settings.validClass);
- this.showLabel(b.element, b.message)
- }
- if (this.errorList.length)
- this.toShow = this.toShow.add(this.containers);
- if (this.settings.success)
- for (a = 0; this.successList[a]; a++)
- this.showLabel(this.successList[a]);
- if (this.settings.unhighlight) {
- a = 0;
- for (b = this.validElements(); b[a]; a++)
- this.settings.unhighlight.call(this, b[a], 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 c(this.errorList).map(function() {
- return this.element
- })
- },
- showLabel : function(a, b) {
- var d = this.errorsFor(a);
- if (d.length) {
- d.removeClass().addClass(this.settings.errorClass);
- d.attr("generated") && d.html(b)
- } else {
- d = c("<" + this.settings.errorElement + "/>").attr({
- "for" : this.idOrName(a),
- generated : true
- }).addClass(this.settings.errorClass).html(b || "");
- if (this.settings.wrapper)
- d = d.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
- this.labelContainer.append(d).length
- || (this.settings.errorPlacement ? this.settings.errorPlacement(d, c(a))
- : d.insertAfter(a))
- }
- if (!b && this.settings.success) {
- d.text("");
- typeof this.settings.success == "string" ? d.addClass(this.settings.success)
- : this.settings.success(d)
- }
- this.toShow = this.toShow.add(d)
- },
- errorsFor : function(a) {
- var b = this.idOrName(a);
- return this.errors().filter(function() {
- return c(this).attr("for") == b
- })
- },
- idOrName : function(a) {
- return this.groups[a.name] || (this.checkable(a) ? a.name : a.id || a.name)
- },
- checkable : function(a) {
- return /radio|checkbox/i.test(a.type)
- },
- findByName : function(a) {
- var b = this.currentForm;
- return c(document.getElementsByName(a)).map(function(d, e) {
- return e.form == b && e.name == a && e || null
- })
- },
- getLength : function(a, b) {
- switch (b.nodeName.toLowerCase()) {
- case "select":
- return c("option:selected", b).length;
- case "input":
- if (this.checkable(b))
- return this.findByName(b.name).filter(":checked").length
- }
- return a.length
- },
- depend : function(a, b) {
- return this.dependTypes[typeof a] ? this.dependTypes[typeof a](a, b) : true
- },
- dependTypes : {
- "boolean" : function(a) {
- return a
- },
- string : function(a, b) {
- return !!c(a, b.form).length
- },
- "function" : function(a, b) {
- return a(b)
- }
- },
- optional : function(a) {
- return !c.validator.methods.required.call(this, c.trim(a.value), a)
- && "dependency-mismatch"
- },
- startRequest : function(a) {
- if (!this.pending[a.name]) {
- this.pendingRequest++;
- this.pending[a.name] = true
- }
- },
- stopRequest : function(a, b) {
- this.pendingRequest--;
- if (this.pendingRequest < 0)
- this.pendingRequest = 0;
- delete this.pending[a.name];
- if (b && this.pendingRequest == 0 && this.formSubmitted && this.form()) {
- c(this.currentForm).submit();
- this.formSubmitted = false
- } else if (!b && this.pendingRequest == 0 && this.formSubmitted) {
- c(this.currentForm).triggerHandler("invalid-form", [ this ]);
- this.formSubmitted = false
- }
- },
- previousValue : function(a) {
- return c.data(a, "previousValue") || c.data(a, "previousValue", {
- old : null,
- valid : true,
- message : this.defaultMessage(a, "remote")
- })
- }
- },
- classRuleSettings : {
- required : {
- required : true
- },
- email : {
- email : true
- },
- url : {
- url : true
- },
- date : {
- date : true
- },
- dateISO : {
- dateISO : true
- },
- dateDE : {
- dateDE : true
- },
- number : {
- number : true
- },
- numberDE : {
- numberDE : true
- },
- digits : {
- digits : true
- },
- creditcard : {
- creditcard : true
- }
- },
- addClassRules : function(a, b) {
- a.constructor == String ? this.classRuleSettings[a] = b : c.extend(this.classRuleSettings,
- a)
- },
- classRules : function(a) {
- var b = {};
- (a = c(a).attr("class"))
- && c.each(a.split(" "), function() {
- this in c.validator.classRuleSettings
- && c.extend(b, c.validator.classRuleSettings[this])
- });
- return b
- },
- attributeRules : function(a) {
- var b = {};
- a = c(a);
- for ( var d in c.validator.methods) {
- var e = a.attr(d);
- if (e)
- b[d] = e
- }
- b.maxlength && /-1|2147483647|524288/.test(b.maxlength) && delete b.maxlength;
- return b
- },
- metadataRules : function(a) {
- if (!c.metadata)
- return {};
- var b = c.data(a.form, "validator").settings.meta;
- return b ? c(a).metadata()[b] : c(a).metadata()
- },
- staticRules : function(a) {
- var b = {}, d = c.data(a.form, "validator");
- if (d.settings.rules)
- b = c.validator.normalizeRule(d.settings.rules[a.name]) || {};
- return b
- },
- normalizeRules : function(a, b) {
- c.each(a, function(d, e) {
- if (e === false)
- delete a[d];
- else if (e.param || e.depends) {
- var f = true;
- switch (typeof e.depends) {
- case "string":
- f = !!c(e.depends, b.form).length;
- break;
- case "function":
- f = e.depends.call(b, b)
- }
- if (f)
- a[d] = e.param !== undefined ? e.param : true;
- else
- delete a[d]
- }
- });
- c.each(a, function(d, e) {
- a[d] = c.isFunction(e) ? e(b) : e
- });
- c.each([ "minlength", "maxlength", "min", "max" ], function() {
- if (a[this])
- a[this] = Number(a[this])
- });
- c.each([ "rangelength", "range" ], function() {
- if (a[this])
- a[this] = [ Number(a[this][0]), Number(a[this][1]) ]
- });
- if (c.validator.autoCreateRanges) {
- if (a.min && a.max) {
- a.range = [ a.min, a.max ];
- delete a.min;
- delete a.max
- }
- if (a.minlength && a.maxlength) {
- a.rangelength = [ a.minlength, a.maxlength ];
- delete a.minlength;
- delete a.maxlength
- }
- }
- a.messages && delete a.messages;
- return a
- },
- normalizeRule : function(a) {
- if (typeof a == "string") {
- var b = {};
- c.each(a.split(/\s/), function() {
- b[this] = true
- });
- a = b
- }
- return a
- },
- addMethod : function(a, b, d) {
- c.validator.methods[a] = b;
- c.validator.messages[a] = d != undefined ? d : c.validator.messages[a];
- b.length < 3 && c.validator.addClassRules(a, c.validator.normalizeRule(a))
- },
- methods : {
- required : function(a, b, d) {
- if (!this.depend(d, b))
- return "dependency-mismatch";
- switch (b.nodeName.toLowerCase()) {
- case "select":
- return (a = c(b).val()) && a.length > 0;
- case "input":
- if (this.checkable(b))
- return this.getLength(a, b) > 0;
- default:
- return c.trim(a).length > 0
- }
- },
- remote : function(a, b, d) {
- if (this.optional(b))
- return "dependency-mismatch";
- var e = this.previousValue(b);
- this.settings.messages[b.name] || (this.settings.messages[b.name] = {});
- e.originalMessage = this.settings.messages[b.name].remote;
- this.settings.messages[b.name].remote = e.message;
- d = typeof d == "string" && {
- url : d
- } || d;
- if (this.pending[b.name])
- return "pending";
- if (e.old === a)
- return e.valid;
- e.old = a;
- var f = this;
- this.startRequest(b);
- var g = {};
- g[b.name] = a;
- c.ajax(c.extend(true, {
- url : d,
- mode : "abort",
- port : "validate" + b.name,
- dataType : "json",
- data : g,
- success : function(h) {
- f.settings.messages[b.name].remote = e.originalMessage;
- var j = h === true;
- if (j) {
- var i = f.formSubmitted;
- f.prepareElement(b);
- f.formSubmitted = i;
- f.successList.push(b);
- f.showErrors()
- } else {
- i = {};
- h = h || f.defaultMessage(b, "remote");
- i[b.name] = e.message = c.isFunction(h) ? h(a) : h;
- f.showErrors(i)
- }
- e.valid = j;
- f.stopRequest(b, j)
- }
- }, d));
- return "pending"
- },
- minlength : function(a, b, d) {
- return this.optional(b) || this.getLength(c.trim(a), b) >= d
- },
- maxlength : function(a, b, d) {
- return this.optional(b) || this.getLength(c.trim(a), b) <= d
- },
- rangelength : function(a, b, d) {
- a = this.getLength(c.trim(a), b);
- return this.optional(b) || a >= d[0] && a <= d[1]
- },
- min : function(a, b, d) {
- return this.optional(b) || a >= d
- },
- max : function(a, b, d) {
- return this.optional(b) || a <= d
- },
- range : function(a, b, d) {
- return this.optional(b) || a >= d[0] && a <= d[1]
- },
- email : function(a, b) {
- return this.optional(b)
- || /^((([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(a)
- },
- url : function(a, b) {
- return this.optional(b)
- || /^(https?|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(a)
- },
- date : function(a, b) {
- return this.optional(b) || !/Invalid|NaN/.test(new Date(a))
- },
- dateISO : function(a, b) {
- return this.optional(b) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)
- },
- number : function(a, b) {
- return this.optional(b) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)
- },
- digits : function(a, b) {
- return this.optional(b) || /^\d+$/.test(a)
- },
- creditcard : function(a, b) {
- if (this.optional(b))
- return "dependency-mismatch";
- if (/[^0-9-]+/.test(a))
- return false;
- var d = 0, e = 0, f = false;
- a = a.replace(/\D/g, "");
- for ( var g = a.length - 1; g >= 0; g--) {
- e = a.charAt(g);
- e = parseInt(e, 10);
- if (f)
- if ((e *= 2) > 9)
- e -= 9;
- d += e;
- f = !f
- }
- return d % 10 == 0
- },
- accept : function(a, b, d) {
- d = typeof d == "string" ? d.replace(/,/g, "|") : "png|jpe?g|gif";
- return this.optional(b) || a.match(RegExp(".(" + d + ")$", "i"))
- },
- equalTo : function(a, b, d) {
- d = c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
- c(b).valid()
- });
- return a == d.val()
- }
- }
- });
- c.format = c.validator.format
- })(jQuery);
- (function(c) {
- var a = {};
- if (c.ajaxPrefilter)
- c.ajaxPrefilter(function(d, e, f) {
- e = d.port;
- if (d.mode == "abort") {
- a[e] && a[e].abort();
- a[e] = f
- }
- });
- else {
- var b = c.ajax;
- c.ajax = function(d) {
- var e = ("port" in d ? d : c.ajaxSettings).port;
- if (("mode" in d ? d : c.ajaxSettings).mode == "abort") {
- a[e] && a[e].abort();
- return a[e] = b.apply(this, arguments)
- }
- return b.apply(this, arguments)
- }
- }
- })(jQuery);
- (function(c) {
- !jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener && c.each({
- focus : "focusin",
- blur : "focusout"
- }, function(a, b) {
- function d(e) {
- e = c.event.fix(e);
- e.type = b;
- return c.event.handle.call(this, e)
- }
- c.event.special[b] = {
- setup : function() {
- this.addEventListener(a, d, true)
- },
- teardown : function() {
- this.removeEventListener(a, d, true)
- },
- handler : function(e) {
- arguments[0] = c.event.fix(e);
- arguments[0].type = b;
- return c.event.handle.apply(this, arguments)
- }
- }
- });
- c.extend(c.fn, {
- validateDelegate : function(a, b, d) {
- return this.bind(b, function(e) {
- var f = c(e.target);
- if (f.is(a))
- return d.apply(f, arguments)
- })
- }
- })
- })(jQuery);
|