Файловый менеджер - Редактировать - /home/lmsyaran/public_html/joomla5/media/com_fabrik/js/mootools-more.js
Назад
MooTools.More = { version: "1.4.0.1", build: "a4244edf2aa97ac8a196fc96082dd35af1abab87" }; (function () { Events.Pseudos = function (h, e, f) { var d = "_monitorEvents:"; var c = function (i) { return { store: i.store ? function (j, k) { i.store(d + j, k); } : function (j, k) { (i._monitorEvents || (i._monitorEvents = {}))[j] = k; }, retrieve: i.retrieve ? function (j, k) { return i.retrieve(d + j, k); } : function (j, k) { if (!i._monitorEvents) { return k; } return i._monitorEvents[j] || k; }, }; }; var g = function (k) { if (k.indexOf(":") == -1 || !h) { return null; } var j = Slick.parse(k).expressions[0][0], p = j.pseudos, i = p.length, o = []; while (i--) { var n = p[i].key, m = h[n]; if (m != null) { o.push({ event: j.tag, value: p[i].value, pseudo: n, original: k, listener: m }); } } return o.length ? o : null; }; return { addEvent: function (m, p, j) { var n = g(m); if (!n) { return e.call(this, m, p, j); } var k = c(this), r = k.retrieve(m, []), i = n[0].event, l = Array.slice(arguments, 2), o = p, q = this; n.each(function (s) { var t = s.listener, u = o; if (t == false) { i += ":" + s.pseudo + "(" + s.value + ")"; } else { o = function () { t.call(q, s, u, arguments, o); }; } }); r.include({ type: i, event: p, monitor: o }); k.store(m, r); if (m != i) { e.apply(this, [m, p].concat(l)); } return e.apply(this, [i, o].concat(l)); }, removeEvent: function (m, l) { var k = g(m); if (!k) { return f.call(this, m, l); } var n = c(this), j = n.retrieve(m); if (!j) { return this; } var i = Array.slice(arguments, 2); f.apply(this, [m, l].concat(i)); j.each(function (o, p) { if (!l || o.event == l) { f.apply(this, [o.type, o.monitor].concat(i)); } delete j[p]; }, this); n.store(m, j); return this; }, }; }; var b = { once: function (e, f, d, c) { f.apply(this, d); this.removeEvent(e.event, c).removeEvent(e.original, f); }, throttle: function (d, e, c) { if (!e._throttled) { e.apply(this, c); e._throttled = setTimeout(function () { e._throttled = false; }, d.value || 250); } }, pause: function (d, e, c) { clearTimeout(e._pause); e._pause = e.delay(d.value || 250, this, c); }, }; Events.definePseudo = function (c, d) { b[c] = d; return this; }; Events.lookupPseudo = function (c) { return b[c]; }; var a = Events.prototype; Events.implement(Events.Pseudos(b, a.addEvent, a.removeEvent)); ["Request", "Fx"].each(function (c) { if (this[c]) { this[c].implement(Events.prototype); } }); })(); Class.refactor = function (b, a) { Object.each(a, function (e, d) { var c = b.prototype[d]; c = (c && c.$origin) || c || function () {}; b.implement( d, typeof e == "function" ? function () { var f = this.previous; this.previous = c; var g = e.apply(this, arguments); this.previous = f; return g; } : e ); }); return b; }; Class.Mutators.Binds = function (a) { if (!this.prototype.initialize) { this.implement("initialize", function () {}); } return Array.mofrom(a).concat(this.prototype.Binds || []); }; Class.Mutators.initialize = function (a) { return function () { Array.mofrom(this.Binds).each(function (b) { var c = this[b]; if (c) { this[b] = c.bind(this); } }, this); return a.apply(this, arguments); }; }; Class.Occlude = new Class({ occlude: function (c, b) { b = document.id(b || this.element); var a = b.retrieve(c || this.property); if (a && !this.occluded) { return (this.occluded = a); } this.occluded = false; b.store(c || this.property, this); return this.occluded; }, }); (function () { var a = { wait: function (b) { return this.chain( function () { this.callChain.delay(b == null ? 500 : b, this); return this; }.bind(this) ); }, }; Chain.implement(a); if (this.Fx) { Fx.implement(a); } if (this.Element && Element.implement && this.Fx) { Element.implement({ chains: function (b) { Array.mofrom(b || ["tween", "morph", "reveal"]).each(function (c) { c = this.get(c); if (!c) { return; } c.setOptions({ link: "chain" }); }, this); return this; }, pauseFx: function (c, b) { this.chains(b) .get(b || "tween") .wait(c); return this; }, }); } })(); (function (a) { Array.implement({ min: function () { return Math.min.apply(null, this); }, max: function () { return Math.max.apply(null, this); }, average: function () { return this.length ? this.sum() / this.length : 0; }, sum: function () { var b = 0, c = this.length; if (c) { while (c--) { b += this[c]; } } return b; }, unique: function () { return [].combine(this); }, shuffle: function () { for (var c = this.length; c && --c; ) { var b = this[c], d = Math.floor(Math.random() * (c + 1)); this[c] = this[d]; this[d] = b; } return this; }, reduce: function (d, e) { for (var c = 0, b = this.length; c < b; c++) { if (c in this) { e = e === a ? this[c] : d.call(null, e, this[c], c, this); } } return e; }, reduceRight: function (c, d) { var b = this.length; while (b--) { if (b in this) { d = d === a ? this[b] : c.call(null, d, this[b], b, this); } } return d; }, }); })(); (function () { var b = function (c) { return c != null; }; var a = Object.prototype.hasOwnProperty; Object.extend({ getFromPath: function (e, f) { if (typeof f == "string") { f = f.split("."); } for (var d = 0, c = f.length; d < c; d++) { if (a.call(e, f[d])) { e = e[f[d]]; } else { return null; } } return e; }, cleanValues: function (c, e) { e = e || b; for (var d in c) { if (!e(c[d])) { delete c[d]; } } return c; }, erase: function (c, d) { if (a.call(c, d)) { delete c[d]; } return c; }, run: function (d) { var c = Array.slice(arguments, 1); for (var e in d) { if (d[e].apply) { d[e].apply(d, c); } } return d; }, }); })(); (function () { var b = null, a = {}, d = {}; var c = function (f) { if (instanceOf(f, e.Set)) { return f; } else { return a[f]; } }; var e = (this.Locale = { define: function (f, j, h, i) { var g; if (instanceOf(f, e.Set)) { g = f.name; if (g) { a[g] = f; } } else { g = f; if (!a[g]) { a[g] = new e.Set(g); } f = a[g]; } if (j) { f.define(j, h, i); } if (!b) { b = f; } return f; }, use: function (f) { f = c(f); if (f) { b = f; this.fireEvent("change", f); } return this; }, getCurrent: function () { return b; }, get: function (g, f) { return b ? b.get(g, f) : ""; }, inherit: function (f, g, h) { f = c(f); if (f) { f.inherit(g, h); } return this; }, list: function () { return Object.keys(a); }, }); Object.append(e, new Events()); e.Set = new Class({ sets: {}, inherits: { locales: [], sets: {} }, initialize: function (f) { this.name = f || ""; }, define: function (i, g, h) { var f = this.sets[i]; if (!f) { f = {}; } if (g) { if (typeOf(g) == "object") { f = Object.merge(f, g); } else { f[g] = h; } } this.sets[i] = f; return this; }, get: function (r, j, q) { var p = Object.getFromPath(this.sets, r); if (p != null) { var m = typeOf(p); if (m == "function") { p = p.apply(null, Array.mofrom(j)); } else { if (m == "object") { p = Object.clone(p); } } return p; } var h = r.indexOf("."), o = h < 0 ? r : r.substr(0, h), k = (this.inherits.sets[o] || []).combine(this.inherits.locales).include("en-US"); if (!q) { q = []; } for (var g = 0, f = k.length; g < f; g++) { if (q.contains(k[g])) { continue; } q.include(k[g]); var n = a[k[g]]; if (!n) { continue; } p = n.get(r, j, q); if (p != null) { return p; } } return ""; }, inherit: function (g, h) { g = Array.mofrom(g); if (h && !this.inherits.sets[h]) { this.inherits.sets[h] = []; } var f = g.length; while (f--) { (h ? this.inherits.sets[h] : this.inherits.locales).unshift(g[f]); } return this; }, }); })(); Locale.define("en-US", "Date", { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], months_abbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], days_abbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], dateOrder: ["month", "date", "year"], shortDate: "%m/%d/%Y", shortTime: "%I:%M%p", AM: "AM", PM: "PM", firstDayOfWeek: 0, ordinal: function (a) { return a > 3 && a < 21 ? "th" : ["th", "st", "nd", "rd", "th"][Math.min(a % 10, 4)]; }, lessThanMinuteAgo: "less than a minute ago", minuteAgo: "about a minute ago", minutesAgo: "{delta} minutes ago", hourAgo: "about an hour ago", hoursAgo: "about {delta} hours ago", dayAgo: "1 day ago", daysAgo: "{delta} days ago", weekAgo: "1 week ago", weeksAgo: "{delta} weeks ago", monthAgo: "1 month ago", monthsAgo: "{delta} months ago", yearAgo: "1 year ago", yearsAgo: "{delta} years ago", lessThanMinuteUntil: "less than a minute from now", minuteUntil: "about a minute from now", minutesUntil: "{delta} minutes from now", hourUntil: "about an hour from now", hoursUntil: "about {delta} hours from now", dayUntil: "1 day from now", daysUntil: "{delta} days from now", weekUntil: "1 week from now", weeksUntil: "{delta} weeks from now", monthUntil: "1 month from now", monthsUntil: "{delta} months from now", yearUntil: "1 year from now", yearsUntil: "{delta} years from now", }); (function () { var a = this.Date; var f = (a.Methods = { ms: "Milliseconds", year: "FullYear", min: "Minutes", mo: "Month", sec: "Seconds", hr: "Hours" }); [ "Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds", "Time", "TimezoneOffset", "Week", "Timezone", "GMTOffset", "DayOfYear", "LastMonth", "LastDayOfMonth", "UTCDate", "UTCDay", "UTCFullYear", "AMPM", "Ordinal", "UTCHours", "UTCMilliseconds", "UTCMinutes", "UTCMonth", "UTCSeconds", "UTCMilliseconds", ].each(function (s) { a.Methods[s.toLowerCase()] = s; }); var p = function (u, t, s) { if (t == 1) { return u; } return u < Math.pow(10, t - 1) ? (s || "0") + p(u, t - 1, s) : u; }; a.implement({ set: function (u, s) { u = u.toLowerCase(); var t = f[u] && "set" + f[u]; if (t && this[t]) { this[t](s); } return this; }.overloadSetter(), get: function (t) { t = t.toLowerCase(); var s = f[t] && "get" + f[t]; if (s && this[s]) { return this[s](); } return null; }.overloadGetter(), clone: function () { return new a(this.get("time")); }, increment: function (s, u) { s = s || "day"; u = u != null ? u : 1; switch (s) { case "year": return this.increment("month", u * 12); case "month": var t = this.get("date"); this.set("date", 1).set("mo", this.get("mo") + u); return this.set("date", t.min(this.get("lastdayofmonth"))); case "week": return this.increment("day", u * 7); case "day": return this.set("date", this.get("date") + u); } if (!a.units[s]) { throw new Error(s + " is not a supported interval"); } return this.set("time", this.get("time") + u * a.units[s]()); }, decrement: function (s, t) { return this.increment(s, -1 * (t != null ? t : 1)); }, isLeapYear: function () { return a.isLeapYear(this.get("year")); }, clearTime: function () { return this.set({ hr: 0, min: 0, sec: 0, ms: 0 }); }, diff: function (t, s) { if (typeOf(t) == "string") { t = a.parse(t); } return ((t - this) / a.units[s || "day"](3, 3)).round(); }, getLastDayOfMonth: function () { return a.daysInMonth(this.get("mo"), this.get("year")); }, getDayOfYear: function () { return (a.UTC(this.get("year"), this.get("mo"), this.get("date") + 1) - a.UTC(this.get("year"), 0, 1)) / a.units.day(); }, setDay: function (t, s) { if (s == null) { s = a.getMsg("firstDayOfWeek"); if (s === "") { s = 1; } } t = (7 + a.parseDay(t, true) - s) % 7; var u = (7 + this.get("day") - s) % 7; return this.increment("day", t - u); }, getWeek: function (v) { if (v == null) { v = a.getMsg("firstDayOfWeek"); if (v === "") { v = 1; } } var x = this, u = (7 + x.get("day") - v) % 7, t = 0, w; if (v == 1) { var y = x.get("month"), s = x.get("date") - u; if (y == 11 && s > 28) { return 1; } if (y == 0 && s < -2) { x = new a(x).decrement("day", u); u = 0; } w = new a(x.get("year"), 0, 1).get("day") || 7; if (w > 4) { t = -7; } } else { w = new a(x.get("year"), 0, 1).get("day"); } t += x.get("dayofyear"); t += 6 - u; t += (7 + w - v) % 7; return t / 7; }, getOrdinal: function (s) { return a.getMsg("ordinal", s || this.get("date")); }, getTimezone: function () { return this.toString() .replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/, "$1") .replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3"); }, getGMTOffset: function () { var s = this.get("timezoneOffset"); return (s > 0 ? "-" : "+") + p((s.abs() / 60).floor(), 2) + p(s % 60, 2); }, setAMPM: function (s) { s = s.toUpperCase(); var t = this.get("hr"); if (t > 11 && s == "AM") { return this.decrement("hour", 12); } else { if (t < 12 && s == "PM") { return this.increment("hour", 12); } } return this; }, getAMPM: function () { return this.get("hr") < 12 ? "AM" : "PM"; }, parse: function (s) { this.set("time", a.parse(s)); return this; }, isValid: function (s) { if (!s) { s = this; } return typeOf(s) == "date" && !isNaN(s.valueOf()); }, format: function (s) { if (!this.isValid()) { return "invalid date"; } if (!s) { s = "%x %X"; } if (typeof s == "string") { s = g[s.toLowerCase()] || s; } if (typeof s == "function") { return s(this); } var t = this; return s.replace(/%([a-z%])/gi, function (v, u) { switch (u) { case "a": return a.getMsg("days_abbr")[t.get("day")]; case "A": return a.getMsg("days")[t.get("day")]; case "b": return a.getMsg("months_abbr")[t.get("month")]; case "B": return a.getMsg("months")[t.get("month")]; case "c": return t.format("%a %b %d %H:%M:%S %Y"); case "d": return p(t.get("date"), 2); case "e": return p(t.get("date"), 2, " "); case "H": return p(t.get("hr"), 2); case "I": return p(t.get("hr") % 12 || 12, 2); case "j": return p(t.get("dayofyear"), 3); case "k": return p(t.get("hr"), 2, " "); case "l": return p(t.get("hr") % 12 || 12, 2, " "); case "L": return p(t.get("ms"), 3); case "m": return p(t.get("mo") + 1, 2); case "M": return p(t.get("min"), 2); case "o": return t.get("ordinal"); case "p": return a.getMsg(t.get("ampm")); case "s": return Math.round(t / 1000); case "S": return p(t.get("seconds"), 2); case "T": return t.format("%H:%M:%S"); case "U": return p(t.get("week"), 2); case "w": return t.get("day"); case "x": return t.format(a.getMsg("shortDate")); case "X": return t.format(a.getMsg("shortTime")); case "y": return t.get("year").toString().substr(2); case "Y": return t.get("year"); case "z": return t.get("GMTOffset"); case "Z": return t.get("Timezone"); } return u; }); }, toISOString: function () { return this.format("iso8601"); }, }).alias({ toJSON: "toISOString", compare: "diff", strftime: "format" }); var k = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], h = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var g = { db: "%Y-%m-%d %H:%M:%S", compact: "%Y%m%dT%H%M%S", short: "%d %b %H:%M", long: "%B %d, %Y %H:%M", rfc822: function (s) { return k[s.get("day")] + s.format(", %d ") + h[s.get("month")] + s.format(" %Y %H:%M:%S %Z"); }, rfc2822: function (s) { return k[s.get("day")] + s.format(", %d ") + h[s.get("month")] + s.format(" %Y %H:%M:%S %z"); }, iso8601: function (s) { return s.getUTCFullYear() + "-" + p(s.getUTCMonth() + 1, 2) + "-" + p(s.getUTCDate(), 2) + "T" + p(s.getUTCHours(), 2) + ":" + p(s.getUTCMinutes(), 2) + ":" + p(s.getUTCSeconds(), 2) + "." + p(s.getUTCMilliseconds(), 3) + "Z"; }, }; var c = [], n = a.parse; var r = function (v, x, u) { var t = -1, w = a.getMsg(v + "s"); switch (typeOf(x)) { case "object": t = w[x.get(v)]; break; case "number": t = w[x]; if (!t) { throw new Error("Invalid " + v + " index: " + x); } break; case "string": var s = w.filter(function (y) { return this.test(y); }, new RegExp("^" + x, "i")); if (!s.length) { throw new Error("Invalid " + v + " string"); } if (s.length > 1) { throw new Error("Ambiguous " + v); } t = s[0]; } return u ? w.indexOf(t) : t; }; var i = 1900, o = 70; a.extend({ getMsg: function (t, s) { return Locale.get("Date." + t, s); }, units: { ms: Function.from(1), second: Function.from(1000), minute: Function.from(60000), hour: Function.from(3600000), day: Function.from(86400000), week: Function.from(608400000), month: function (t, s) { var u = new a(); return a.daysInMonth(t != null ? t : u.get("mo"), s != null ? s : u.get("year")) * 86400000; }, year: function (s) { s = s || new a().get("year"); return a.isLeapYear(s) ? 31622400000 : 31536000000; }, }, daysInMonth: function (t, s) { return [31, a.isLeapYear(s) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][t]; }, isLeapYear: function (s) { return (s % 4 === 0 && s % 100 !== 0) || s % 400 === 0; }, parse: function (v) { var u = typeOf(v); if (u == "number") { return new a(v); } if (u != "string") { return v; } v = v.clean(); if (!v.length) { return null; } var s; c.some(function (w) { var t = w.re.exec(v); return t ? (s = w.handler(t)) : false; }); if (!(s && s.isValid())) { s = new a(n(v)); if (!(s && s.isValid())) { s = new a(v.toInt()); } } return s; }, parseDay: function (s, t) { return r("day", s, t); }, parseMonth: function (t, s) { return r("month", t, s); }, parseUTC: function (t) { var s = new a(t); var u = a.UTC(s.get("year"), s.get("mo"), s.get("date"), s.get("hr"), s.get("min"), s.get("sec"), s.get("ms")); return new a(u); }, orderIndex: function (s) { return a.getMsg("dateOrder").indexOf(s) + 1; }, defineFormat: function (s, t) { g[s] = t; return this; }, defineParser: function (s) { c.push(s.re && s.handler ? s : l(s)); return this; }, defineParsers: function () { Array.flatten(arguments).each(a.defineParser); return this; }, define2DigitYearStart: function (s) { o = s % 100; i = s - o; return this; }, }).extend({ defineFormats: a.defineFormat.overloadSetter() }); var d = function (s) { return new RegExp( "(?:" + a .getMsg(s) .map(function (t) { return t.substr(0, 3); }) .join("|") + ")[a-z]*" ); }; var m = function (s) { switch (s) { case "T": return "%H:%M:%S"; case "x": return (a.orderIndex("month") == 1 ? "%m[-./]%d" : "%d[-./]%m") + "([-./]%y)?"; case "X": return "%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?"; } return null; }; var j = { d: /[0-2]?[0-9]|3[01]/, H: /[01]?[0-9]|2[0-3]/, I: /0?[1-9]|1[0-2]/, M: /[0-5]?\d/, s: /\d+/, o: /[a-z]*/, p: /[ap]\.?m\.?/, y: /\d{2}|\d{4}/, Y: /\d{4}/, z: /Z|[+-]\d{2}(?::?\d{2})?/ }; j.m = j.I; j.S = j.M; var e; var b = function (s) { e = s; j.a = j.A = d("days"); j.b = j.B = d("months"); c.each(function (u, t) { if (u.format) { c[t] = l(u.format); } }); }; var l = function (u) { if (!e) { return { format: u }; } var s = []; var t = (u.source || u) .replace(/%([a-z])/gi, function (w, v) { return m(v) || w; }) .replace(/\((?!\?)/g, "(?:") .replace(/ (?!\?|\*)/g, ",? ") .replace(/%([a-z%])/gi, function (w, v) { var x = j[v]; if (!x) { return v; } s.push(v); return "(" + x.source + ")"; }) .replace(/\[a-z\]/gi, "[a-z\\u00c0-\\uffff;&]"); return { format: u, re: new RegExp("^" + t + "$", "i"), handler: function (y) { y = y.slice(1).associate(s); var v = new a().clearTime(), x = y.y || y.Y; if (x != null) { q.call(v, "y", x); } if ("d" in y) { q.call(v, "d", 1); } if ("m" in y || y.b || y.B) { q.call(v, "m", 1); } for (var w in y) { q.call(v, w, y[w]); } return v; }, }; }; var q = function (s, t) { if (!t) { return this; } switch (s) { case "a": case "A": return this.set("day", a.parseDay(t, true)); case "b": case "B": return this.set("mo", a.parseMonth(t, true)); case "d": return this.set("date", t); case "H": case "I": return this.set("hr", t); case "m": return this.set("mo", t - 1); case "M": return this.set("min", t); case "p": return this.set("ampm", t.replace(/\./g, "")); case "S": return this.set("sec", t); case "s": return this.set("ms", ("0." + t) * 1000); case "w": return this.set("day", t); case "Y": return this.set("year", t); case "y": t = +t; if (t < 100) { t += i + (t < o ? 100 : 0); } return this.set("year", t); case "z": if (t == "Z") { t = "+00"; } var u = t.match(/([+-])(\d{2}):?(\d{2})?/); u = (u[1] + "1") * (u[2] * 60 + (+u[3] || 0)) + this.getTimezoneOffset(); return this.set("time", this - u * 60000); } return this; }; a.defineParsers("%Y([-./]%m([-./]%d((T| )%X)?)?)?", "%Y%m%d(T%H(%M%S?)?)?", "%x( %X)?", "%d%o( %b( %Y)?)?( %X)?", "%b( %d%o)?( %Y)?( %X)?", "%Y %b( %d%o( %X)?)?", "%o %b %d %X %z %Y", "%T", "%H:%M( ?%p)?"); Locale.addEvent("change", function (s) { if (Locale.get("Date")) { b(s); } }).fireEvent("change", Locale.getCurrent()); })(); Date.implement({ timeDiffInWords: function (a) { return Date.distanceOfTimeInWords(this, a || new Date()); }, timeDiff: function (f, c) { if (f == null) { f = new Date(); } var h = ((f - this) / 1000).floor().abs(); var e = [], a = [60, 60, 24, 365, 0], d = ["s", "m", "h", "d", "y"], g, b; for (var i = 0; i < a.length; i++) { if (i && !h) { break; } g = h; if ((b = a[i])) { g = h % b; h = (h / b).floor(); } e.unshift(g + (d[i] || "")); } return e.join(c || ":"); }, }) .extend({ distanceOfTimeInWords: function (b, a) { return Date.getTimePhrase(((a - b) / 1000).toInt()); }, getTimePhrase: function (f) { var d = f < 0 ? "Until" : "Ago"; if (f < 0) { f *= -1; } var b = { minute: 60, hour: 60, day: 24, week: 7, month: 52 / 12, year: 12, eon: Infinity }; var e = "lessThanMinute"; for (var c in b) { var a = b[c]; if (f < 1.5 * a) { if (f > 0.75 * a) { e = c; } break; } f /= a; e = c + "s"; } f = f.round(); return Date.getMsg(e + d, f).substitute({ delta: f }); }, }) .defineParsers( { re: /^(?:tod|tom|yes)/i, handler: function (a) { var b = new Date().clearTime(); switch (a[0]) { case "tom": return b.increment(); case "yes": return b.decrement(); default: return b; } }, }, { re: /^(next|last) ([a-z]+)$/i, handler: function (e) { var f = new Date().clearTime(); var b = f.getDay(); var c = Date.parseDay(e[2], true); var a = c - b; if (c <= b) { a += 7; } if (e[1] == "last") { a -= 7; } return f.set("date", f.getDate() + a); }, } ) .alias("timeAgoInWords", "timeDiffInWords"); Locale.define("en-US", "Number", { decimal: ".", group: ",", currency: { prefix: "$ " } }); Number.implement({ format: function (q) { var n = this; q = q ? Object.clone(q) : {}; var a = function (i) { if (q[i] != null) { return q[i]; } return Locale.get("Number." + i); }; var f = n < 0, h = a("decimal"), k = a("precision"), o = a("group"), c = a("decimals"); if (f) { var e = a("negative") || {}; if (e.prefix == null && e.suffix == null) { e.prefix = "-"; } ["prefix", "suffix"].each(function (i) { if (e[i]) { q[i] = a(i) + e[i]; } }); n = -n; } var l = a("prefix"), p = a("suffix"); if (c !== "" && c >= 0 && c <= 20) { n = n.toFixed(c); } if (k >= 1 && k <= 21) { n = (+n).toPrecision(k); } n += ""; var m; if (a("scientific") === false && n.indexOf("e") > -1) { var j = n.split("e"), b = +j[1]; n = j[0].replace(".", ""); if (b < 0) { b = -b - 1; m = j[0].indexOf("."); if (m > -1) { b -= m - 1; } while (b--) { n = "0" + n; } n = "0." + n; } else { m = j[0].lastIndexOf("."); if (m > -1) { b -= j[0].length - m - 1; } while (b--) { n += "0"; } } } if (h != ".") { n = n.replace(".", h); } if (o) { m = n.lastIndexOf(h); m = m > -1 ? m : n.length; var d = n.substring(m), g = m; while (g--) { if ((m - g - 1) % 3 == 0 && g != m - 1) { d = o + d; } d = n.charAt(g) + d; } n = d; } if (l) { n = l + n; } if (p) { n += p; } return n; }, formatCurrency: function (b) { var a = Locale.get("Number.currency") || {}; if (a.scientific == null) { a.scientific = false; } a.decimals = b != null ? b : a.decimals == null ? 2 : a.decimals; return this.format(a); }, formatPercentage: function (b) { var a = Locale.get("Number.percentage") || {}; if (a.suffix == null) { a.suffix = "%"; } a.decimals = b != null ? b : a.decimals == null ? 2 : a.decimals; return this.format(a); }, }); (function () { var c = { a: /[àáâãäåăą]/g, A: /[ÀÁÂÃÄÅĂĄ]/g, c: /[ćčç]/g, C: /[ĆČÇ]/g, d: /[ďđ]/g, D: /[ĎÐ]/g, e: /[èéêëěę]/g, E: /[ÈÉÊËĚĘ]/g, g: /[ğ]/g, G: /[Ğ]/g, i: /[ìíîï]/g, I: /[ÌÍÎÏ]/g, l: /[ĺľł]/g, L: /[ĹĽŁ]/g, n: /[ñňń]/g, N: /[ÑŇŃ]/g, o: /[òóôõöøő]/g, O: /[ÒÓÔÕÖØ]/g, r: /[řŕ]/g, R: /[ŘŔ]/g, s: /[ššş]/g, S: /[ŠŞŚ]/g, t: /[ťţ]/g, T: /[ŤŢ]/g, ue: /[ü]/g, UE: /[Ü]/g, u: /[ùúûůµ]/g, U: /[ÙÚÛŮ]/g, y: /[ÿý]/g, Y: /[ŸÝ]/g, z: /[žźż]/g, Z: /[ŽŹŻ]/g, th: /[þ]/g, TH: /[Þ]/g, dh: /[ð]/g, DH: /[Ð]/g, ss: /[ß]/g, oe: /[œ]/g, OE: /[Œ]/g, ae: /[æ]/g, AE: /[Æ]/g, }, b = { " ": /[\xa0\u2002\u2003\u2009]/g, "*": /[\xb7]/g, "'": /[\u2018\u2019]/g, '"': /[\u201c\u201d]/g, "...": /[\u2026]/g, "-": /[\u2013]/g, "»": /[\uFFFD]/g }; var a = function (f, h) { var e = f, g; for (g in h) { e = e.replace(h[g], g); } return e; }; var d = function (e, g) { e = e || ""; var h = g ? "<" + e + "(?!\\w)[^>]*>([\\s\\S]*?)</" + e + "(?!\\w)>" : "</?" + e + "([^>]+)?>", f = new RegExp(h, "gi"); return f; }; String.implement({ standardize: function () { return a(this, c); }, repeat: function (e) { return new Array(e + 1).join(this); }, pad: function (e, h, g) { if (this.length >= e) { return this; } var f = (h == null ? " " : "" + h).repeat(e - this.length).substr(0, e - this.length); if (!g || g == "right") { return this + f; } if (g == "left") { return f + this; } return f.substr(0, (f.length / 2).floor()) + this + f.substr(0, (f.length / 2).ceil()); }, getTags: function (e, f) { return this.match(d(e, f)) || []; }, stripTags: function (e, f) { return this.replace(d(e, f), ""); }, tidy: function () { return a(this, b); }, truncate: function (e, f, i) { var h = this; if (f == null && arguments.length == 1) { f = "…"; } if (h.length > e) { h = h.substring(0, e); if (i) { var g = h.lastIndexOf(i); if (g != -1) { h = h.substr(0, g); } } if (f) { h += f; } } return h; }, }); })(); String.implement({ parseQueryString: function (d, a) { if (d == null) { d = true; } if (a == null) { a = true; } var c = this.split(/[&;]/), b = {}; if (!c.length) { return b; } c.each(function (i) { var e = i.indexOf("=") + 1, g = e ? i.substr(e) : "", f = e ? i.substr(0, e - 1).match(/([^\]\[]+|(\B)(?=\]))/g) : [i], h = b; if (!f) { return; } if (a) { g = decodeURIComponent(g); } f.each(function (k, j) { if (d) { k = decodeURIComponent(k); } var l = h[k]; if (j < f.length - 1) { h = h[k] = l || {}; } else { if (typeOf(l) == "array") { l.push(g); } else { h[k] = l != null ? [l, g] : g; } } }); }); return b; }, cleanQueryString: function (a) { return this.split("&") .filter(function (e) { var b = e.indexOf("="), c = b < 0 ? "" : e.substr(0, b), d = e.substr(b + 1); return a ? a.call(null, c, d) : d || d === 0; }) .join("&"); }, }); (function () { var b = function () { return this.get("value"); }; var a = (this.URI = new Class({ Implements: Options, options: {}, regex: /^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/, parts: ["scheme", "user", "password", "host", "port", "directory", "file", "query", "fragment"], schemes: { http: 80, https: 443, ftp: 21, rtsp: 554, mms: 1755, file: 0 }, initialize: function (d, c) { this.setOptions(c); var e = this.options.base || a.base; if (!d) { d = e; } if (d && d.parsed) { this.parsed = Object.clone(d.parsed); } else { this.set("value", d.href || d.toString(), e ? new a(e) : false); } }, parse: function (e, d) { var c = e.match(this.regex); if (!c) { return false; } c.shift(); return this.merge(c.associate(this.parts), d); }, merge: function (d, c) { if ((!d || !d.scheme) && (!c || !c.scheme)) { return false; } if (c) { this.parts.every(function (e) { if (d[e]) { return false; } d[e] = c[e] || ""; return true; }); } d.port = d.port || this.schemes[d.scheme.toLowerCase()]; d.directory = d.directory ? this.parseDirectory(d.directory, c ? c.directory : "") : "/"; return d; }, parseDirectory: function (d, e) { d = (d.substr(0, 1) == "/" ? "" : e || "/") + d; if (!d.test(a.regs.directoryDot)) { return d; } var c = []; d.replace(a.regs.endSlash, "") .split("/") .each(function (f) { if (f == ".." && c.length > 0) { c.pop(); } else { if (f != ".") { c.push(f); } } }); return c.join("/") + "/"; }, combine: function (c) { return ( c.value || c.scheme + "://" + (c.user ? c.user + (c.password ? ":" + c.password : "") + "@" : "") + (c.host || "") + (c.port && c.port != this.schemes[c.scheme] ? ":" + c.port : "") + (c.directory || "/") + (c.file || "") + (c.query ? "?" + c.query : "") + (c.fragment ? "#" + c.fragment : "") ); }, set: function (d, f, e) { if (d == "value") { var c = f.match(a.regs.scheme); if (c) { c = c[1]; } if (c && this.schemes[c.toLowerCase()] == null) { this.parsed = { scheme: c, value: f }; } else { this.parsed = this.parse(f, (e || this).parsed) || (c ? { scheme: c, value: f } : { value: f }); } } else { if (d == "data") { this.setData(f); } else { this.parsed[d] = f; } } return this; }, get: function (c, d) { switch (c) { case "value": return this.combine(this.parsed, d ? d.parsed : false); case "data": return this.getData(); } return this.parsed[c] || ""; }, go: function () { document.location.href = this.toString(); }, toURI: function () { return this; }, getData: function (e, d) { var c = this.get(d || "query"); if (!(c || c === 0)) { return e ? null : {}; } var f = c.parseQueryString(); return e ? f[e] : f; }, setData: function (c, f, d) { if (typeof c == "string") { var e = this.getData(); e[arguments[0]] = arguments[1]; c = e; } else { if (f) { c = Object.merge(this.getData(), c); } } return this.set(d || "query", Object.toQueryString(c)); }, clearData: function (c) { return this.set(c || "query", ""); }, toString: b, valueOf: b, })); a.regs = { endSlash: /\/$/, scheme: /^(\w+):/, directoryDot: /\.\/|\.$/ }; a.base = new a(Array.mofrom(document.getElements("base[href]", true)).getLast(), { base: document.location }); String.implement({ toURI: function (c) { return new a(this, c); }, }); })(); URI = Class.refactor(URI, { combine: function (f, e) { if (!e || f.scheme != e.scheme || f.host != e.host || f.port != e.port) { return this.previous.apply(this, arguments); } var a = f.file + (f.query ? "?" + f.query : "") + (f.fragment ? "#" + f.fragment : ""); if (!e.directory) { return (f.directory || (f.file ? "" : "./")) + a; } var d = e.directory.split("/"), c = f.directory.split("/"), g = "", h; var b = 0; for (h = 0; h < d.length && h < c.length && d[h] == c[h]; h++) {} for (b = 0; b < d.length - h - 1; b++) { g += "../"; } for (b = h; b < c.length - 1; b++) { g += c[b] + "/"; } return (g || (f.file ? "" : "./")) + a; }, toAbsolute: function (a) { a = new URI(a); if (a) { a.set("directory", "").set("file", ""); } return this.toRelative(a); }, toRelative: function (a) { return this.get("value", new URI(a)); }, }); (function () { if (this.Hash) { return; } var a = (this.Hash = new Type("Hash", function (b) { if (typeOf(b) == "hash") { b = Object.clone(b.getClean()); } for (var c in b) { this[c] = b[c]; } return this; })); this.$H = function (b) { return new a(b); }; a.implement({ forEach: function (b, c) { Object.forEach(this, b, c); }, getClean: function () { var c = {}; for (var b in this) { if (this.hasOwnProperty(b)) { c[b] = this[b]; } } return c; }, getLength: function () { var c = 0; for (var b in this) { if (this.hasOwnProperty(b)) { c++; } } return c; }, }); a.alias("each", "forEach"); a.implement({ has: Object.prototype.hasOwnProperty, keyOf: function (b) { return Object.keyOf(this, b); }, hasValue: function (b) { return Object.contains(this, b); }, extend: function (b) { a.each( b || {}, function (d, c) { a.set(this, c, d); }, this ); return this; }, combine: function (b) { a.each( b || {}, function (d, c) { a.include(this, c, d); }, this ); return this; }, erase: function (b) { if (this.hasOwnProperty(b)) { delete this[b]; } return this; }, get: function (b) { return this.hasOwnProperty(b) ? this[b] : null; }, set: function (b, c) { if (!this[b] || this.hasOwnProperty(b)) { this[b] = c; } return this; }, empty: function () { a.each( this, function (c, b) { delete this[b]; }, this ); return this; }, include: function (b, c) { if (this[b] == undefined) { this[b] = c; } return this; }, map: function (b, c) { return new a(Object.map(this, b, c)); }, filter: function (b, c) { return new a(Object.filter(this, b, c)); }, every: function (b, c) { return Object.every(this, b, c); }, some: function (b, c) { return Object.some(this, b, c); }, getKeys: function () { return Object.keys(this); }, getValues: function () { return Object.values(this); }, toQueryString: function (b) { return Object.toQueryString(this, b); }, }); a.alias({ indexOf: "keyOf", contains: "hasValue" }); })(); Hash.implement({ getFromPath: function (a) { return Object.getFromPath(this, a); }, cleanValues: function (a) { return new Hash(Object.cleanValues(this, a)); }, run: function () { Object.run(arguments); }, }); Element.implement({ tidy: function () { this.set("value", this.get("value").tidy()); }, getTextInRange: function (b, a) { return this.get("value").substring(b, a); }, getSelectedText: function () { if (this.setSelectionRange) { return this.getTextInRange(this.getSelectionStart(), this.getSelectionEnd()); } return document.selection.createRange().text; }, getSelectedRange: function () { if (this.selectionStart != null) { return { start: this.selectionStart, end: this.selectionEnd }; } var e = { start: 0, end: 0 }; var a = this.getDocument().selection.createRange(); if (!a || a.parentElement() != this) { return e; } var c = a.duplicate(); if (this.type == "text") { e.start = 0 - c.moveStart("character", -100000); e.end = e.start + a.text.length; } else { var b = this.get("value"); var d = b.length; c.moveToElementText(this); c.setEndPoint("StartToEnd", a); if (c.text.length) { d -= b.match(/[\n\r]*$/)[0].length; } e.end = d - c.text.length; c.setEndPoint("StartToStart", a); e.start = d - c.text.length; } return e; }, getSelectionStart: function () { return this.getSelectedRange().start; }, getSelectionEnd: function () { return this.getSelectedRange().end; }, setCaretPosition: function (a) { if (a == "end") { a = this.get("value").length; } this.selectRange(a, a); return this; }, getCaretPosition: function () { return this.getSelectedRange().start; }, selectRange: function (e, a) { if (this.setSelectionRange) { this.focus(); this.setSelectionRange(e, a); } else { var c = this.get("value"); var d = c.substr(e, a - e).replace(/\r/g, "").length; e = c.substr(0, e).replace(/\r/g, "").length; var b = this.createTextRange(); b.collapse(true); b.moveEnd("character", e + d); b.moveStart("character", e); b.select(); } return this; }, insertAtCursor: function (b, a) { var d = this.getSelectedRange(); var c = this.get("value"); this.set("value", c.substring(0, d.start) + b + c.substring(d.end, c.length)); if (a !== false) { this.selectRange(d.start, d.start + b.length); } else { this.setCaretPosition(d.start + b.length); } return this; }, insertAroundCursor: function (b, a) { b = Object.append({ before: "", defaultMiddle: "", after: "" }, b); var c = this.getSelectedText() || b.defaultMiddle; var g = this.getSelectedRange(); var f = this.get("value"); if (g.start == g.end) { this.set("value", f.substring(0, g.start) + b.before + c + b.after + f.substring(g.end, f.length)); this.selectRange(g.start + b.before.length, g.end + b.before.length + c.length); } else { var d = f.substring(g.start, g.end); this.set("value", f.substring(0, g.start) + b.before + d + b.after + f.substring(g.end, f.length)); var e = g.start + b.before.length; if (a !== false) { this.selectRange(e, e + d.length); } else { this.setCaretPosition(e + f.length); } } return this; }, }); Elements.from = function (e, d) { if (d || d == null) { e = e.stripScripts(); } var b, c = e.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i); if (c) { b = new Element("table"); var a = c[1].toLowerCase(); if (["td", "th", "tr"].contains(a)) { b = new Element("tbody").inject(b); if (a != "tr") { b = new Element("tr").inject(b); } } } return (b || new Element("div")).set("html", e).getChildren(); }; (function () { var d = { relay: false }, c = ["once", "throttle", "pause"], b = c.length; while (b--) { d[c[b]] = Events.lookupPseudo(c[b]); } DOMEvent.definePseudo = function (e, f) { d[e] = f; return this; }; var a = Element.prototype; [Element, Window, Document].invoke("implement", Events.Pseudos(d, a.addEvent, a.removeEvent)); })(); (function () { var a = "$moo:keys-pressed", b = "$moo:keys-keyup"; DOMEvent.definePseudo("keys", function (d, e, c) { var g = c[0], f = [], h = this.retrieve(a, []); f.append( d.value .replace("++", function () { f.push("+"); return ""; }) .split("+") ); h.include(g.key); if ( f.every(function (j) { return h.contains(j); }) ) { e.apply(this, c); } this.store(a, h); if (!this.retrieve(b)) { var i = function (j) { (function () { h = this.retrieve(a, []).erase(j.key); this.store(a, h); }.delay(0, this)); }; this.store(b, i).addEvent("keyup", i); } }); DOMEvent.defineKeys({ "16": "shift", "17": "control", "18": "alt", "20": "capslock", "33": "pageup", "34": "pagedown", "35": "end", "36": "home", "144": "numlock", "145": "scrolllock", "186": ";", "187": "=", "188": ",", "190": ".", "191": "/", "192": "`", "219": "[", "220": "\\", "221": "]", "222": "'", "107": "+", }).defineKey(Browser.firefox ? 109 : 189, "-"); })(); (function () { var b = function (e, d) { var f = []; Object.each(d, function (g) { Object.each(g, function (h) { e.each(function (i) { f.push(i + "-" + h + (i == "border" ? "-width" : "")); }); }); }); return f; }; var c = function (f, e) { var d = 0; Object.each(e, function (h, g) { if (g.test(f)) { d = d + h.toInt(); } }); return d; }; var a = function (d) { return !!(!d || d.offsetHeight || d.offsetWidth); }; Element.implement({ measure: function (h) { if (a(this)) { return h.call(this); } var g = this.getParent(), e = []; while (!a(g) && g != document.body) { e.push(g.expose()); g = g.getParent(); } var f = this.expose(), d = h.call(this); f(); e.each(function (i) { i(); }); return d; }, expose: function () { if (this.getStyle("display") != "none") { return function () {}; } var d = this.style.cssText; this.setStyles({ display: "block", position: "absolute", visibility: "hidden" }); return function () { this.style.cssText = d; }.bind(this); }, getDimensions: function (d) { d = Object.merge({ computeSize: false }, d); var i = { x: 0, y: 0 }; var h = function (j, e) { return e.computeSize ? j.getComputedSize(e) : j.getSize(); }; var f = this.getParent("body"); if (f && this.getStyle("display") == "none") { i = this.measure(function () { return h(this, d); }); } else { if (f) { try { i = h(this, d); } catch (g) {} } } return Object.append(i, i.x || i.x === 0 ? { width: i.x, height: i.y } : { x: i.width, y: i.height }); }, getComputedSize: function (d) { d = Object.merge({ styles: ["padding", "border"], planes: { height: ["top", "bottom"], width: ["left", "right"] }, mode: "both" }, d); var g = {}, e = { width: 0, height: 0 }, f; if (d.mode == "vertical") { delete e.width; delete d.planes.width; } else { if (d.mode == "horizontal") { delete e.height; delete d.planes.height; } } b(d.styles, d.planes).each(function (h) { g[h] = this.getStyle(h).toInt(); }, this); Object.each( d.planes, function (i, h) { var k = h.capitalize(), j = this.getStyle(h); if (j == "auto" && !f) { f = this.getDimensions(); } j = g[h] = j == "auto" ? f[h] : j.toInt(); e["total" + k] = j; i.each(function (m) { var l = c(m, g); e["computed" + m.capitalize()] = l; e["total" + k] += l; }); }, this ); return Object.append(e, g); }, }); })(); (function () { var a = false, b = false; var c = function () { var d = new Element("div").setStyles({ position: "fixed", top: 0, right: 0 }).inject(document.body); a = d.offsetTop === 0; d.dispose(); b = true; }; Element.implement({ pin: function (h, f) { if (!b) { c(); } if (this.getStyle("display") == "none") { return this; } var j, k = window.getScroll(), l, e; if (h !== false) { j = this.getPosition(a ? document.body : this.getOffsetParent()); if (!this.retrieve("pin:_pinned")) { var g = { top: j.y - k.y, left: j.x - k.x }; if (a && !f) { this.setStyle("position", "fixed").setStyles(g); } else { l = this.getOffsetParent(); var i = this.getPosition(l), m = this.getStyles("left", "top"); if ((l && m.left == "auto") || m.top == "auto") { this.setPosition(i); } if (this.getStyle("position") == "static") { this.setStyle("position", "absolute"); } i = { x: m.left.toInt() - k.x, y: m.top.toInt() - k.y }; e = function () { if (!this.retrieve("pin:_pinned")) { return; } var n = window.getScroll(); this.setStyles({ left: i.x + n.x, top: i.y + n.y }); }.bind(this); this.store("pin:_scrollFixer", e); window.addEvent("scroll", e); } this.store("pin:_pinned", true); } } else { if (!this.retrieve("pin:_pinned")) { return this; } l = this.getParent(); var d = l.getComputedStyle("position") != "static" ? l : l.getOffsetParent(); j = this.getPosition(d); this.store("pin:_pinned", false); e = this.retrieve("pin:_scrollFixer"); if (!e) { this.setStyles({ position: "absolute", top: j.y + k.y, left: j.x + k.x }); } else { this.store("pin:_scrollFixer", null); window.removeEvent("scroll", e); } this.removeClass("isPinned"); } return this; }, unpin: function () { return this.pin(false); }, togglePin: function () { return this.pin(!this.retrieve("pin:_pinned")); }, }); })(); (function (b) { var a = (Element.Position = { options: { relativeTo: document.body, position: { x: "center", y: "center" }, offset: { x: 0, y: 0 } }, getOptions: function (d, c) { c = Object.merge({}, a.options, c); a.setPositionOption(c); a.setEdgeOption(c); a.setOffsetOption(d, c); a.setDimensionsOption(d, c); return c; }, setPositionOption: function (c) { c.position = a.getCoordinateFromValue(c.position); }, setEdgeOption: function (d) { var c = a.getCoordinateFromValue(d.edge); d.edge = c ? c : d.position.x == "center" && d.position.y == "center" ? { x: "center", y: "center" } : { x: "left", y: "top" }; }, setOffsetOption: function (f, d) { var c = { x: 0, y: 0 }, g = f.measure(function () { return document.id(this.getOffsetParent()); }), e = g.getScroll(); if (!g || g == f.getDocument().body) { return; } c = g.measure(function () { var i = this.getPosition(); if (this.getStyle("position") == "fixed") { var h = window.getScroll(); i.x += h.x; i.y += h.y; } return i; }); d.offset = { parentPositioned: g != document.id(d.relativeTo), x: d.offset.x - c.x + e.x, y: d.offset.y - c.y + e.y }; }, setDimensionsOption: function (d, c) { c.dimensions = d.getDimensions({ computeSize: true, styles: ["padding", "border", "margin"] }); }, getPosition: function (e, d) { var c = {}; d = a.getOptions(e, d); var f = document.id(d.relativeTo) || document.body; a.setPositionCoordinates(d, c, f); if (d.edge) { a.toEdge(c, d); } var g = d.offset; c.left = (c.x >= 0 || g.parentPositioned || d.allowNegative ? c.x : 0).toInt(); c.top = (c.y >= 0 || g.parentPositioned || d.allowNegative ? c.y : 0).toInt(); a.toMinMax(c, d); if (d.relFixedPosition || f.getStyle("position") == "fixed") { a.toRelFixedPosition(f, c); } if (d.ignoreScroll) { a.toIgnoreScroll(f, c); } if (d.ignoreMargins) { a.toIgnoreMargins(c, d); } c.left = Math.ceil(c.left); c.top = Math.ceil(c.top); delete c.x; delete c.y; return c; }, setPositionCoordinates: function (k, g, d) { var f = k.offset.y, h = k.offset.x, e = d == document.body ? window.getScroll() : d.getPosition(), j = e.y, c = e.x, i = window.getSize(); switch (k.position.x) { case "left": g.x = c + h; break; case "right": g.x = c + h + d.offsetWidth; break; default: g.x = c + (d == document.body ? i.x : d.offsetWidth) / 2 + h; break; } switch (k.position.y) { case "top": g.y = j + f; break; case "bottom": g.y = j + f + d.offsetHeight; break; default: g.y = j + (d == document.body ? i.y : d.offsetHeight) / 2 + f; break; } }, toMinMax: function (c, d) { var f = { left: "x", top: "y" }, e; ["minimum", "maximum"].each(function (g) { ["left", "top"].each(function (h) { e = d[g] ? d[g][f[h]] : null; if (e != null && (g == "minimum" ? c[h] < e : c[h] > e)) { c[h] = e; } }); }); }, toRelFixedPosition: function (e, c) { var d = window.getScroll(); c.top += d.y; c.left += d.x; }, toIgnoreScroll: function (e, d) { var c = e.getScroll(); d.top -= c.y; d.left -= c.x; }, toIgnoreMargins: function (c, d) { c.left += d.edge.x == "right" ? d.dimensions["margin-right"] : d.edge.x != "center" ? -d.dimensions["margin-left"] : -d.dimensions["margin-left"] + (d.dimensions["margin-right"] + d.dimensions["margin-left"]) / 2; c.top += d.edge.y == "bottom" ? d.dimensions["margin-bottom"] : d.edge.y != "center" ? -d.dimensions["margin-top"] : -d.dimensions["margin-top"] + (d.dimensions["margin-bottom"] + d.dimensions["margin-top"]) / 2; }, toEdge: function (c, d) { var e = {}, g = d.dimensions, f = d.edge; switch (f.x) { case "left": e.x = 0; break; case "right": e.x = -g.x - g.computedRight - g.computedLeft; break; default: e.x = -Math.round(g.totalWidth / 2); break; } switch (f.y) { case "top": e.y = 0; break; case "bottom": e.y = -g.y - g.computedTop - g.computedBottom; break; default: e.y = -Math.round(g.totalHeight / 2); break; } c.x += e.x; c.y += e.y; }, getCoordinateFromValue: function (c) { if (typeOf(c) != "string") { return c; } c = c.toLowerCase(); return { x: c.test("left") ? "left" : c.test("right") ? "right" : "center", y: c.test(/upper|top/) ? "top" : c.test("bottom") ? "bottom" : "center" }; }, }); Element.implement({ position: function (d) { if (d && (d.x != null || d.y != null)) { return b ? b.apply(this, arguments) : this; } var c = this.setStyle("position", "absolute").calculatePosition(d); return d && d.returnPos ? c : this.setStyles(c); }, calculatePosition: function (c) { return a.getPosition(this, c); }, }); })(Element.prototype.position); Element.implement({ isDisplayed: function () { return this.getStyle("display") != "none"; }, isVisible: function () { var a = this.offsetWidth, b = this.offsetHeight; return a == 0 && b == 0 ? false : a > 0 && b > 0 ? true : this.style.display != "none"; }, toggle: function () { return this[this.isDisplayed() ? "hide" : "show"](); }, hide: function () { var b; try { b = this.getStyle("display"); } catch (a) {} if (b == "none") { return this; } return this.store("element:_originalDisplay", b || "").setStyle("display", "none"); }, show: function (a) { if (!a && this.isDisplayed()) { return this; } a = a || this.retrieve("element:_originalDisplay") || "block"; return this.setStyle("display", a == "none" ? "block" : a); }, swapClass: function (a, b) { return this.removeClass(a).addClass(b); }, }); Document.implement({ clearSelection: function () { if (window.getSelection) { var a = window.getSelection(); if (a && a.removeAllRanges) { a.removeAllRanges(); } } else { if (document.selection && document.selection.empty) { try { document.selection.empty(); } catch (b) {} } } }, }); var IframeShim = new Class({ Implements: [Options, Events, Class.Occlude], options: { className: "iframeShim", src: 'javascript:false;document.write("");', display: false, zIndex: null, margin: 0, offset: { x: 0, y: 0 }, browsers: Browser.ie6 || (Browser.firefox && Browser.version < 3 && Browser.Platform.mac), }, property: "IframeShim", initialize: function (b, a) { this.element = document.id(b); if (this.occlude()) { return this.occluded; } this.setOptions(a); this.makeShim(); return this; }, makeShim: function () { if (this.options.browsers) { var c = this.element.getStyle("zIndex").toInt(); if (!c) { c = 1; var b = this.element.getStyle("position"); if (b == "static" || !b) { this.element.setStyle("position", "relative"); } this.element.setStyle("zIndex", c); } c = (this.options.zIndex != null || this.options.zIndex === 0) && c > this.options.zIndex ? this.options.zIndex : c - 1; if (c < 0) { c = 1; } this.shim = new Element("iframe", { src: this.options.src, scrolling: "no", frameborder: 0, styles: { zIndex: c, position: "absolute", border: "none", filter: "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)" }, class: this.options.className, }).store("IframeShim", this); var a = function () { this.shim.inject(this.element, "after"); this[this.options.display ? "show" : "hide"](); this.fireEvent("inject"); }.bind(this); if (!IframeShim.ready) { window.addEvent("load", a); } else { a(); } } else { this.position = this.hide = this.show = this.dispose = Function.from(this); } }, position: function () { if (!IframeShim.ready || !this.shim) { return this; } var a = this.element.measure(function () { return this.getSize(); }); if (this.options.margin != undefined) { a.x = a.x - this.options.margin * 2; a.y = a.y - this.options.margin * 2; this.options.offset.x += this.options.margin; this.options.offset.y += this.options.margin; } this.shim.set({ width: a.x, height: a.y }).position({ relativeTo: this.element, offset: this.options.offset }); return this; }, hide: function () { if (this.shim) { this.shim.setStyle("display", "none"); } return this; }, show: function () { if (this.shim) { this.shim.setStyle("display", "block"); } return this.position(); }, dispose: function () { if (this.shim) { this.shim.dispose(); } return this; }, destroy: function () { if (this.shim) { this.shim.destroy(); } return this; }, }); window.addEvent("load", function () { IframeShim.ready = true; }); var Mask = new Class({ Implements: [Options, Events], Binds: ["position"], options: { style: {}, class: "mask", maskMargins: false, useIframeShim: true, iframeShimOptions: {} }, initialize: function (b, a) { this.target = document.id(b) || document.id(document.body); this.target.store("mask", this); this.setOptions(a); this.render(); this.inject(); }, render: function () { this.element = new Element("div", { class: this.options["class"], id: this.options.id || "mask-" + String.uniqueID(), styles: Object.merge({}, this.options.style, { display: "none" }), events: { click: function (a) { this.fireEvent("click", a); if (this.options.hideOnClick) { this.hide(); } }.bind(this), }, }); this.hidden = true; }, toElement: function () { return this.element; }, inject: function (b, a) { a = a || (this.options.inject ? this.options.inject.where : "") || this.target == document.body ? "inside" : "after"; b = b || (this.options.inject && this.options.inject.target) || this.target; this.element.inject(b, a); if (this.options.useIframeShim) { this.shim = new IframeShim(this.element, this.options.iframeShimOptions); this.addEvents({ show: this.shim.show.bind(this.shim), hide: this.shim.hide.bind(this.shim), destroy: this.shim.destroy.bind(this.shim) }); } }, position: function () { this.resize(this.options.width, this.options.height); this.element.position({ relativeTo: this.target, position: "topLeft", ignoreMargins: !this.options.maskMargins, ignoreScroll: this.target == document.body }); return this; }, resize: function (a, e) { var b = { styles: ["padding", "border"] }; if (this.options.maskMargins) { b.styles.push("margin"); } var d = this.target.getComputedSize(b); if (this.target == document.body) { this.element.setStyles({ width: 0, height: 0 }); var c = window.getScrollSize(); if (d.totalHeight < c.y) { d.totalHeight = c.y; } if (d.totalWidth < c.x) { d.totalWidth = c.x; } } this.element.setStyles({ width: Array.pick([a, d.totalWidth, d.x]), height: Array.pick([e, d.totalHeight, d.y]) }); return this; }, show: function () { if (!this.hidden) { return this; } window.addEvent("resize", this.position); this.position(); this.showMask.apply(this, arguments); return this; }, showMask: function () { this.element.setStyle("display", "block"); this.hidden = false; this.fireEvent("show"); }, hide: function () { if (this.hidden) { return this; } window.removeEvent("resize", this.position); this.hideMask.apply(this, arguments); if (this.options.destroyOnHide) { return this.destroy(); } return this; }, hideMask: function () { this.element.setStyle("display", "none"); this.hidden = true; this.fireEvent("hide"); }, toggle: function () { this[this.hidden ? "show" : "hide"](); }, destroy: function () { this.hide(); this.element.destroy(); this.fireEvent("destroy"); this.target.eliminate("mask"); }, }); Element.Properties.mask = { set: function (b) { var a = this.retrieve("mask"); if (a) { a.destroy(); } return this.eliminate("mask").store("mask:options", b); }, get: function () { var a = this.retrieve("mask"); if (!a) { a = new Mask(this, this.retrieve("mask:options")); this.store("mask", a); } return a; }, }; Element.implement({ mask: function (a) { if (a) { this.set("mask", a); } this.get("mask").show(); return this; }, unmask: function () { this.get("mask").hide(); return this; }, }); var Spinner = new Class({ Extends: Mask, Implements: Chain, options: { class: "spinner", containerPosition: {}, content: { class: "spinner-content" }, messageContainer: { class: "spinner-msg" }, img: { class: "spinner-img" }, fxOptions: { link: "chain" } }, initialize: function (c, a) { this.target = document.id(c) || document.id(document.body); this.target.store("spinner", this); this.setOptions(a); this.render(); this.inject(); var b = function () { this.active = false; }.bind(this); this.addEvents({ hide: b, show: b }); }, render: function () { this.parent(); this.element.set("id", this.options.id || "spinner-" + String.uniqueID()); this.content = document.id(this.options.content) || new Element("div", this.options.content); this.content.inject(this.element); if (this.options.message) { this.msg = document.id(this.options.message) || new Element("p", this.options.messageContainer).appendText(this.options.message); this.msg.inject(this.content); } if (this.options.img) { this.img = document.id(this.options.img) || new Element("div", this.options.img); this.img.inject(this.content); } this.element.set("tween", this.options.fxOptions); }, show: function (a) { if (this.active) { return this.chain(this.show.bind(this)); } if (!this.hidden) { this.callChain.delay(20, this); return this; } this.active = true; return this.parent(a); }, showMask: function (a) { var b = function () { this.content.position(Object.merge({ relativeTo: this.element }, this.options.containerPosition)); }.bind(this); if (a) { this.parent(); b(); } else { if (!this.options.style.opacity) { this.options.style.opacity = this.element.getStyle("opacity").toFloat(); } this.element.setStyles({ display: "block", opacity: 0 }).tween("opacity", this.options.style.opacity); b(); this.hidden = false; this.fireEvent("show"); this.callChain(); } }, hide: function (a) { if (this.active) { return this.chain(this.hide.bind(this)); } if (this.hidden) { this.callChain.delay(20, this); return this; } this.active = true; return this.parent(a); }, hideMask: function (a) { if (a) { return this.parent(); } this.element .tween("opacity", 0) .get("tween") .chain( function () { this.element.setStyle("display", "none"); this.hidden = true; this.fireEvent("hide"); this.callChain(); }.bind(this) ); }, destroy: function () { this.content.destroy(); this.parent(); this.target.eliminate("spinner"); }, }); Request = Class.refactor(Request, { options: { useSpinner: false, spinnerOptions: {}, spinnerTarget: false }, initialize: function (a) { this._send = this.send; this.send = function (b) { var c = this.getSpinner(); if (c) { c.chain(this._send.pass(b, this)).show(); } else { this._send(b); } return this; }; this.previous(a); }, getSpinner: function () { if (!this.spinner) { var b = document.id(this.options.spinnerTarget) || document.id(this.options.update); if (this.options.useSpinner && b) { b.set("spinner", this.options.spinnerOptions); var a = (this.spinner = b.get("spinner")); ["complete", "exception", "cancel"].each(function (c) { this.addEvent(c, a.hide.bind(a)); }, this); } } return this.spinner; }, }); Element.Properties.spinner = { set: function (a) { var b = this.retrieve("spinner"); if (b) { b.destroy(); } return this.eliminate("spinner").store("spinner:options", a); }, get: function () { var a = this.retrieve("spinner"); if (!a) { a = new Spinner(this, this.retrieve("spinner:options")); this.store("spinner", a); } return a; }, }; Element.implement({ spin: function (a) { if (a) { this.set("spinner", a); } this.get("spinner").show(); return this; }, unspin: function () { this.get("spinner").hide(); return this; }, }); if (!window.Form) { window.Form = {}; } (function () { Form.Request = new Class({ Binds: ["onSubmit", "onFormValidate"], Implements: [Options, Events, Class.Occlude], options: { requestOptions: { evalScripts: true, useSpinner: true, emulation: false, link: "ignore" }, sendButtonClicked: true, extraData: {}, resetForm: true }, property: "form.request", initialize: function (b, c, a) { this.element = document.id(b); if (this.occlude()) { return this.occluded; } this.setOptions(a).setTarget(c).attach(); }, setTarget: function (a) { this.target = document.id(a); if (!this.request) { this.makeRequest(); } else { this.request.setOptions({ update: this.target }); } return this; }, toElement: function () { return this.element; }, makeRequest: function () { var a = this; this.request = new Request.HTML(Object.merge({ update: this.target, emulation: false, spinnerTarget: this.element, method: this.element.get("method") || "post" }, this.options.requestOptions)).addEvents({ success: function (c, e, d, b) { ["complete", "success"].each(function (f) { a.fireEvent(f, [a.target, c, e, d, b]); }); }, failure: function () { a.fireEvent("complete", arguments).fireEvent("failure", arguments); }, exception: function () { a.fireEvent("failure", arguments); }, }); return this.attachReset(); }, attachReset: function () { if (!this.options.resetForm) { return this; } this.request.addEvent( "success", function () { Function.attempt( function () { this.element.reset(); }.bind(this) ); if (window.OverText) { OverText.update(); } }.bind(this) ); return this; }, attach: function (a) { var c = a != false ? "addEvent" : "removeEvent"; this.element[c]("click:relay(button, input[type=submit])", this.saveClickedButton.bind(this)); var b = this.element.retrieve("validator"); if (b) { b[c]("onFormValidate", this.onFormValidate); } else { this.element[c]("submit", this.onSubmit); } return this; }, detach: function () { return this.attach(false); }, enable: function () { return this.attach(); }, disable: function () { return this.detach(); }, onFormValidate: function (c, b, a) { if (!a) { return; } var d = this.element.retrieve("validator"); if (c || (d && !d.options.stopOnFailure)) { a.stop(); this.send(); } }, onSubmit: function (a) { var b = this.element.retrieve("validator"); if (b) { this.element.removeEvent("submit", this.onSubmit); b.addEvent("onFormValidate", this.onFormValidate); this.element.validate(); return; } if (a) { a.stop(); } this.send(); }, saveClickedButton: function (b, c) { var a = c.get("name"); if (!a || !this.options.sendButtonClicked) { return; } this.options.extraData[a] = c.get("value") || true; this.clickedCleaner = function () { delete this.options.extraData[a]; this.clickedCleaner = function () {}; }.bind(this); }, clickedCleaner: function () {}, send: function () { var b = this.element.toQueryString().trim(), a = Object.toQueryString(this.options.extraData); if (b) { b += "&" + a; } else { b = a; } this.fireEvent("send", [this.element, b.parseQueryString()]); this.request.send({ data: b, url: this.options.requestOptions.url || this.element.get("action") }); this.clickedCleaner(); return this; }, }); Element.implement("formUpdate", function (c, b) { var a = this.retrieve("form.request"); if (!a) { a = new Form.Request(this, c, b); } else { if (c) { a.setTarget(c); } if (b) { a.setOptions(b).makeRequest(); } } a.send(); return this; }); })(); (function () { var a = function (d) { var b = d.options.hideInputs; if (window.OverText) { var c = [null]; OverText.each(function (e) { c.include("." + e.options.labelClass); }); if (c) { b += c.join(", "); } } return b ? d.element.getElements(b) : null; }; Fx.Reveal = new Class({ Extends: Fx.Morph, options: { link: "cancel", styles: ["padding", "border", "margin"], transitionOpacity: !Browser.ie6, mode: "vertical", display: function () { return this.element.get("tag") != "tr" ? "block" : "table-row"; }, opacity: 1, hideInputs: Browser.ie ? "select, input, textarea, object, embed" : null, }, dissolve: function () { if (!this.hiding && !this.showing) { if (this.element.getStyle("display") != "none") { this.hiding = true; this.showing = false; this.hidden = true; this.cssText = this.element.style.cssText; var d = this.element.getComputedSize({ styles: this.options.styles, mode: this.options.mode }); if (this.options.transitionOpacity) { d.opacity = this.options.opacity; } var c = {}; Object.each(d, function (f, e) { c[e] = [f, 0]; }); this.element.setStyles({ display: Function.from(this.options.display).call(this), overflow: "hidden" }); var b = a(this); if (b) { b.setStyle("visibility", "hidden"); } this.$chain.unshift( function () { if (this.hidden) { this.hiding = false; this.element.style.cssText = this.cssText; this.element.setStyle("display", "none"); if (b) { b.setStyle("visibility", "visible"); } } this.fireEvent("hide", this.element); this.callChain(); }.bind(this) ); this.start(c); } else { this.callChain.delay(10, this); this.fireEvent("complete", this.element); this.fireEvent("hide", this.element); } } else { if (this.options.link == "chain") { this.chain(this.dissolve.bind(this)); } else { if (this.options.link == "cancel" && !this.hiding) { this.cancel(); this.dissolve(); } } } return this; }, reveal: function () { if (!this.showing && !this.hiding) { if (this.element.getStyle("display") == "none") { this.hiding = false; this.showing = true; this.hidden = false; this.cssText = this.element.style.cssText; var d; this.element.measure( function () { d = this.element.getComputedSize({ styles: this.options.styles, mode: this.options.mode }); }.bind(this) ); if (this.options.heightOverride != null) { d.height = this.options.heightOverride.toInt(); } if (this.options.widthOverride != null) { d.width = this.options.widthOverride.toInt(); } if (this.options.transitionOpacity) { this.element.setStyle("opacity", 0); d.opacity = this.options.opacity; } var c = { height: 0, display: Function.from(this.options.display).call(this) }; Object.each(d, function (f, e) { c[e] = 0; }); c.overflow = "hidden"; this.element.setStyles(c); var b = a(this); if (b) { b.setStyle("visibility", "hidden"); } this.$chain.unshift( function () { this.element.style.cssText = this.cssText; this.element.setStyle("display", Function.from(this.options.display).call(this)); if (!this.hidden) { this.showing = false; } if (b) { b.setStyle("visibility", "visible"); } this.callChain(); this.fireEvent("show", this.element); }.bind(this) ); this.start(d); } else { this.callChain(); this.fireEvent("complete", this.element); this.fireEvent("show", this.element); } } else { if (this.options.link == "chain") { this.chain(this.reveal.bind(this)); } else { if (this.options.link == "cancel" && !this.showing) { this.cancel(); this.reveal(); } } } return this; }, toggle: function () { if (this.element.getStyle("display") == "none") { this.reveal(); } else { this.dissolve(); } return this; }, cancel: function () { this.parent.apply(this, arguments); if (this.cssText != null) { this.element.style.cssText = this.cssText; } this.hiding = false; this.showing = false; return this; }, }); Element.Properties.reveal = { set: function (b) { this.get("reveal").cancel().setOptions(b); return this; }, get: function () { var b = this.retrieve("reveal"); if (!b) { b = new Fx.Reveal(this); this.store("reveal", b); } return b; }, }; Element.Properties.dissolve = Element.Properties.reveal; Element.implement({ reveal: function (b) { this.get("reveal").setOptions(b).reveal(); return this; }, dissolve: function (b) { this.get("reveal").setOptions(b).dissolve(); return this; }, nix: function (b) { var c = Array.link(arguments, { destroy: Type.isBoolean, options: Type.isObject }); this.get("reveal") .setOptions(b) .dissolve() .chain( function () { this[c.destroy ? "destroy" : "dispose"](); }.bind(this) ); return this; }, wink: function () { var c = Array.link(arguments, { duration: Type.isNumber, options: Type.isObject }); var b = this.get("reveal").setOptions(c.options); b.reveal().chain(function () { (function () { b.dissolve(); }.delay(c.duration || 2000)); }); }, }); })(); Form.Request.Append = new Class({ Extends: Form.Request, options: { useReveal: true, revealOptions: {}, inject: "bottom" }, makeRequest: function () { this.request = new Request.HTML(Object.merge({ url: this.element.get("action"), method: this.element.get("method") || "post", spinnerTarget: this.element }, this.options.requestOptions, { evalScripts: false })).addEvents({ success: function (b, g, f, a) { var c; var d = Elements.from(f); if (d.length == 1) { c = d[0]; } else { c = new Element("div", { styles: { display: "none" } }).adopt(d); } c.inject(this.target, this.options.inject); if (this.options.requestOptions.evalScripts) { Browser.exec(a); } this.fireEvent("beforeEffect", c); var e = function () { this.fireEvent("success", [c, this.target, b, g, f, a]); }.bind(this); if (this.options.useReveal) { c.set("reveal", this.options.revealOptions).get("reveal").chain(e); c.reveal(); } else { e(); } }.bind(this), failure: function (a) { this.fireEvent("failure", a); }.bind(this), }); this.attachReset(); }, }); Locale.define("en-US", "FormValidator", { required: "This field is required.", length: "Please enter {length} characters (you entered {elLength} characters)", minLength: "Please enter at least {minLength} characters (you entered {length} characters).", maxLength: "Please enter no more than {maxLength} characters (you entered {length} characters).", integer: "Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.", numeric: 'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").', digits: "Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).", alpha: "Please use only letters (a-z) within this field. No spaces or other characters are allowed.", alphanum: "Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.", dateSuchAs: "Please enter a valid date such as {date}", dateInFormatMDY: 'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")', email: 'Please enter a valid email address. For example "fred@domain.com".', url: "Please enter a valid URL such as http://www.example.com.", currencyDollar: "Please enter a valid $ amount. For example $100.00 .", oneRequired: "Please enter something for at least one of these inputs.", errorPrefix: "Error: ", warningPrefix: "Warning: ", noSpace: "There can be no spaces in this input.", reqChkByNode: "No items are selected.", requiredChk: "This field is required.", reqChkByName: "Please select a {label}.", match: "This field needs to match the {matchName} field", startDate: "the start date", endDate: "the end date", currendDate: "the current date", afterDate: "The date should be the same or after {label}.", beforeDate: "The date should be the same or before {label}.", startMonth: "Please select a start month", sameMonth: "These two dates must be in the same month - you must change one or the other.", creditcard: "The credit card number entered is invalid. Please check the number and try again. {length} digits entered.", }); if (!window.Form) { window.Form = {}; } var InputValidator = (this.InputValidator = new Class({ Implements: [Options], options: { errorMsg: "Validation failed.", test: Function.from(true) }, initialize: function (b, a) { this.setOptions(a); this.className = b; }, test: function (b, a) { b = document.id(b); return b ? this.options.test(b, a || this.getProps(b)) : false; }, getError: function (c, a) { c = document.id(c); var b = this.options.errorMsg; if (typeOf(b) == "function") { b = b(c, a || this.getProps(c)); } return b; }, getProps: function (a) { a = document.id(a); return a ? a.get("validatorProps") : {}; }, })); Element.Properties.validators = { get: function () { return (this.get("data-validators") || this.className).clean().split(" "); }, }; Element.Properties.validatorProps = { set: function (a) { return this.eliminate("$moo:validatorProps").store("$moo:validatorProps", a); }, get: function (a) { if (a) { this.set(a); } if (this.retrieve("$moo:validatorProps")) { return this.retrieve("$moo:validatorProps"); } if (this.getProperty("data-validator-properties") || this.getProperty("validatorProps")) { try { this.store("$moo:validatorProps", JSON.decode(this.getProperty("validatorProps") || this.getProperty("data-validator-properties"))); } catch (c) { return {}; } } else { var b = this.get("validators").filter(function (d) { return d.test(":"); }); if (!b.length) { this.store("$moo:validatorProps", {}); } else { a = {}; b.each(function (d) { var f = d.split(":"); if (f[1]) { try { a[f[0]] = JSON.decode(f[1]); } catch (g) {} } }); this.store("$moo:validatorProps", a); } } return this.retrieve("$moo:validatorProps"); }, }; Form.Validator = new Class({ Implements: [Options, Events], Binds: ["onSubmit"], options: { fieldSelectors: "input, select, textarea", ignoreHidden: true, ignoreDisabled: true, useTitles: false, evaluateOnSubmit: true, evaluateFieldsOnBlur: true, evaluateFieldsOnChange: true, serial: true, stopOnFailure: true, warningPrefix: function () { return Form.Validator.getMsg("warningPrefix") || "Warning: "; }, errorPrefix: function () { return Form.Validator.getMsg("errorPrefix") || "Error: "; }, }, initialize: function (b, a) { this.setOptions(a); this.element = document.id(b); this.element.store("validator", this); this.warningPrefix = Function.from(this.options.warningPrefix)(); this.errorPrefix = Function.from(this.options.errorPrefix)(); if (this.options.evaluateOnSubmit) { this.element.addEvent("submit", this.onSubmit); } if (this.options.evaluateFieldsOnBlur || this.options.evaluateFieldsOnChange) { this.watchFields(this.getFields()); } }, toElement: function () { return this.element; }, getFields: function () { return (this.fields = this.element.getElements(this.options.fieldSelectors)); }, watchFields: function (a) { a.each(function (b) { if (this.options.evaluateFieldsOnBlur) { b.addEvent("blur", this.validationMonitor.pass([b, false], this)); } if (this.options.evaluateFieldsOnChange) { b.addEvent("change", this.validationMonitor.pass([b, true], this)); } }, this); }, validationMonitor: function () { clearTimeout(this.timer); this.timer = this.validateField.delay(50, this, arguments); }, onSubmit: function (a) { if (this.validate(a)) { this.reset(); } }, reset: function () { this.getFields().each(this.resetField, this); return this; }, validate: function (b) { var a = this.getFields() .map(function (c) { return this.validateField(c, true); }, this) .every(function (c) { return c; }); this.fireEvent("formValidate", [a, this.element, b]); if (this.options.stopOnFailure && !a && b) { b.preventDefault(); } return a; }, validateField: function (j, b) { if (this.paused) { return true; } j = document.id(j); var f = !j.hasClass("validation-failed"); var g, i; if (this.options.serial && !b) { g = this.element.getElement(".validation-failed"); i = this.element.getElement(".warning"); } if (j && (!g || b || j.hasClass("validation-failed") || (g && !this.options.serial))) { var a = j.get("validators"); var d = a.some(function (k) { return this.getValidator(k); }, this); var h = []; a.each(function (k) { if (k && !this.test(k, j)) { h.include(k); } }, this); f = h.length === 0; if (d && !this.hasValidator(j, "warnOnly")) { if (f) { j.addClass("validation-passed").removeClass("validation-failed"); this.fireEvent("elementPass", [j]); } else { j.addClass("validation-failed").removeClass("validation-passed"); this.fireEvent("elementFail", [j, h]); } } if (!i) { var e = a.some(function (k) { if (k.test("^warn")) { return this.getValidator(k.replace(/^warn-/, "")); } else { return null; } }, this); j.removeClass("warning"); var c = a.map(function (k) { if (k.test("^warn")) { return this.test(k.replace(/^warn-/, ""), j, true); } else { return null; } }, this); } } return f; }, test: function (b, d, e) { d = document.id(d); if ((this.options.ignoreHidden && !d.isVisible()) || (this.options.ignoreDisabled && d.get("disabled"))) { return true; } var a = this.getValidator(b); if (e != null) { e = false; } if (this.hasValidator(d, "warnOnly")) { e = true; } var c = this.hasValidator(d, "ignoreValidation") || (a ? a.test(d) : true); if (a && d.isVisible()) { this.fireEvent("elementValidate", [c, d, b, e]); } if (e) { return true; } return c; }, hasValidator: function (b, a) { return b.get("validators").contains(a); }, resetField: function (a) { a = document.id(a); if (a) { a.get("validators").each(function (b) { if (b.test("^warn-")) { b = b.replace(/^warn-/, ""); } a.removeClass("validation-failed"); a.removeClass("warning"); a.removeClass("validation-passed"); }, this); } return this; }, stop: function () { this.paused = true; return this; }, start: function () { this.paused = false; return this; }, ignoreField: function (a, b) { a = document.id(a); if (a) { this.enforceField(a); if (b) { a.addClass("warnOnly"); } else { a.addClass("ignoreValidation"); } } return this; }, enforceField: function (a) { a = document.id(a); if (a) { a.removeClass("warnOnly").removeClass("ignoreValidation"); } return this; }, }); Form.Validator.getMsg = function (a) { return Locale.get("FormValidator." + a); }; Form.Validator.adders = { validators: {}, add: function (b, a) { this.validators[b] = new InputValidator(b, a); if (!this.initialize) { this.implement({ validators: this.validators }); } }, addAllThese: function (a) { Array.mofrom(a).each(function (b) { this.add(b[0], b[1]); }, this); }, getValidator: function (a) { return this.validators[a.split(":")[0]]; }, }; Object.append(Form.Validator, Form.Validator.adders); Form.Validator.implement(Form.Validator.adders); Form.Validator.add("IsEmpty", { errorMsg: false, test: function (a) { if (a.type == "select-one" || a.type == "select") { return !(a.selectedIndex >= 0 && a.options[a.selectedIndex].value != ""); } else { return a.get("value") == null || a.get("value").length == 0; } }, }); Form.Validator.addAllThese([ [ "required", { errorMsg: function () { return Form.Validator.getMsg("required"); }, test: function (a) { return !Form.Validator.getValidator("IsEmpty").test(a); }, }, ], [ "length", { errorMsg: function (a, b) { if (typeOf(b.length) != "null") { return Form.Validator.getMsg("length").substitute({ length: b.length, elLength: a.get("value").length }); } else { return ""; } }, test: function (a, b) { if (typeOf(b.length) != "null") { return a.get("value").length == b.length || a.get("value").length == 0; } else { return true; } }, }, ], [ "minLength", { errorMsg: function (a, b) { if (typeOf(b.minLength) != "null") { return Form.Validator.getMsg("minLength").substitute({ minLength: b.minLength, length: a.get("value").length }); } else { return ""; } }, test: function (a, b) { if (typeOf(b.minLength) != "null") { return a.get("value").length >= (b.minLength || 0); } else { return true; } }, }, ], [ "maxLength", { errorMsg: function (a, b) { if (typeOf(b.maxLength) != "null") { return Form.Validator.getMsg("maxLength").substitute({ maxLength: b.maxLength, length: a.get("value").length }); } else { return ""; } }, test: function (a, b) { return a.get("value").length <= (b.maxLength || 10000); }, }, ], [ "validate-integer", { errorMsg: Form.Validator.getMsg.pass("integer"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^(-?[1-9]\d*|0)$/.test(a.get("value")); }, }, ], [ "validate-numeric", { errorMsg: Form.Validator.getMsg.pass("numeric"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/.test(a.get("value")); }, }, ], [ "validate-digits", { errorMsg: Form.Validator.getMsg.pass("digits"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^[\d() .:\-\+#]+$/.test(a.get("value")); }, }, ], [ "validate-alpha", { errorMsg: Form.Validator.getMsg.pass("alpha"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^[a-zA-Z]+$/.test(a.get("value")); }, }, ], [ "validate-alphanum", { errorMsg: Form.Validator.getMsg.pass("alphanum"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || !/\W/.test(a.get("value")); }, }, ], [ "validate-date", { errorMsg: function (a, b) { if (Date.parse) { var c = b.dateFormat || "%x"; return Form.Validator.getMsg("dateSuchAs").substitute({ date: new Date().format(c) }); } else { return Form.Validator.getMsg("dateInFormatMDY"); } }, test: function (e, g) { if (Form.Validator.getValidator("IsEmpty").test(e)) { return true; } var a = Locale.getCurrent().sets.Date, b = new RegExp([a.days, a.days_abbr, a.months, a.months_abbr].flatten().join("|"), "i"), i = e.get("value"), f = i.match(/[a-z]+/gi); if (f && !f.every(b.exec, b)) { return false; } var c = Date.parse(i), h = g.dateFormat || "%x", d = c.format(h); if (d != "invalid date") { e.set("value", d); } return c.isValid(); }, }, ], [ "validate-email", { errorMsg: Form.Validator.getMsg.pass("email"), test: function (a) { return ( Form.Validator.getValidator("IsEmpty").test(a) || /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i.test( a.get("value") ) ); }, }, ], [ "validate-url", { errorMsg: Form.Validator.getMsg.pass("url"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(a.get("value")); }, }, ], [ "validate-currency-dollar", { errorMsg: Form.Validator.getMsg.pass("currencyDollar"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(a.get("value")); }, }, ], [ "validate-one-required", { errorMsg: Form.Validator.getMsg.pass("oneRequired"), test: function (a, b) { var c = document.id(b["validate-one-required"]) || a.getParent(b["validate-one-required"]); return c.getElements("input").some(function (d) { if (["checkbox", "radio"].contains(d.get("type"))) { return d.get("checked"); } return d.get("value"); }); }, }, ], ]); Element.Properties.validator = { set: function (a) { this.get("validator").setOptions(a); }, get: function () { var a = this.retrieve("validator"); if (!a) { a = new Form.Validator(this); this.store("validator", a); } return a; }, }; Element.implement({ validate: function (a) { if (a) { this.set("validator", a); } return this.get("validator").validate(); }, }); Form.Validator.Inline = new Class({ Extends: Form.Validator, options: { showError: function (a) { if (a.reveal) { a.reveal(); } else { a.setStyle("display", "block"); } }, hideError: function (a) { if (a.dissolve) { a.dissolve(); } else { a.setStyle("display", "none"); } }, scrollToErrorsOnSubmit: true, scrollToErrorsOnBlur: false, scrollToErrorsOnChange: false, scrollFxOptions: { transition: "quad:out", offset: { y: -20 } }, }, initialize: function (b, a) { this.parent(b, a); this.addEvent("onElementValidate", function (g, f, e, h) { var d = this.getValidator(e); if (!g && d.getError(f)) { if (h) { f.addClass("warning"); } var c = this.makeAdvice(e, f, d.getError(f), h); this.insertAdvice(c, f); this.showAdvice(e, f); } else { this.hideAdvice(e, f); } }); }, makeAdvice: function (d, f, c, g) { var e = g ? this.warningPrefix : this.errorPrefix; e += this.options.useTitles ? f.title || c : c; var a = g ? "warning-advice" : "validation-advice"; var b = this.getAdvice(d, f); if (b) { b = b.set("html", e); } else { b = new Element("div", { html: e, styles: { display: "none" }, id: "advice-" + d.split(":")[0] + "-" + this.getFieldId(f) }).addClass(a); } f.store("$moo:advice-" + d, b); return b; }, getFieldId: function (a) { return a.id ? a.id : (a.id = "input_" + a.name); }, showAdvice: function (b, c) { var a = this.getAdvice(b, c); if (a && !c.retrieve("$moo:" + this.getPropName(b)) && (a.getStyle("display") == "none" || a.getStyle("visiblity") == "hidden" || a.getStyle("opacity") == 0)) { c.store("$moo:" + this.getPropName(b), true); this.options.showError(a); this.fireEvent("showAdvice", [c, a, b]); } }, hideAdvice: function (b, c) { var a = this.getAdvice(b, c); if (a && c.retrieve("$moo:" + this.getPropName(b))) { c.store("$moo:" + this.getPropName(b), false); this.options.hideError(a); this.fireEvent("hideAdvice", [c, a, b]); } }, getPropName: function (a) { return "advice" + a; }, resetField: function (a) { a = document.id(a); if (!a) { return this; } this.parent(a); a.get("validators").each(function (b) { this.hideAdvice(b, a); }, this); return this; }, getAllAdviceMessages: function (d, c) { var b = []; if (d.hasClass("ignoreValidation") && !c) { return b; } var a = d.get("validators").some(function (g) { var e = g.test("^warn-") || d.hasClass("warnOnly"); if (e) { g = g.replace(/^warn-/, ""); } var f = this.getValidator(g); if (!f) { return; } b.push({ message: f.getError(d), warnOnly: e, passed: f.test(), validator: f }); }, this); return b; }, getAdvice: function (a, b) { return b.retrieve("$moo:advice-" + a); }, insertAdvice: function (a, c) { var b = c.get("validatorProps"); if (!b.msgPos || !document.id(b.msgPos)) { if (c.type && c.type.toLowerCase() == "radio") { c.getParent().adopt(a); } else { a.inject(document.id(c), "after"); } } else { document.id(b.msgPos).grab(a); } }, validateField: function (g, f, b) { var a = this.parent(g, f); if (((this.options.scrollToErrorsOnSubmit && b == null) || b) && !a) { var c = document.id(this).getElement(".validation-failed"); var d = document.id(this).getParent(); while (d != document.body && d.getScrollSize().y == d.getSize().y) { d = d.getParent(); } var e = d.retrieve("$moo:fvScroller"); if (!e && window.Fx && Fx.Scroll) { e = new Fx.Scroll(d, this.options.scrollFxOptions); d.store("$moo:fvScroller", e); } if (c) { if (e) { e.toElement(c); } else { d.scrollTo(d.getScroll().x, c.getPosition(d).y - 20); } } } return a; }, watchFields: function (a) { a.each(function (b) { if (this.options.evaluateFieldsOnBlur) { b.addEvent("blur", this.validationMonitor.pass([b, false, this.options.scrollToErrorsOnBlur], this)); } if (this.options.evaluateFieldsOnChange) { b.addEvent("change", this.validationMonitor.pass([b, true, this.options.scrollToErrorsOnChange], this)); } }, this); }, }); Form.Validator.addAllThese([ [ "validate-enforce-oncheck", { test: function (a, b) { var c = a.getParent("form").retrieve("validator"); if (!c) { return true; } (b.toEnforce || document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function (d) { if (a.checked) { c.enforceField(d); } else { c.ignoreField(d); c.resetField(d); } }); return true; }, }, ], [ "validate-ignore-oncheck", { test: function (a, b) { var c = a.getParent("form").retrieve("validator"); if (!c) { return true; } (b.toIgnore || document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function (d) { if (a.checked) { c.ignoreField(d); c.resetField(d); } else { c.enforceField(d); } }); return true; }, }, ], [ "validate-nospace", { errorMsg: function () { return Form.Validator.getMsg("noSpace"); }, test: function (a, b) { return !a.get("value").test(/\s/); }, }, ], [ "validate-toggle-oncheck", { test: function (b, c) { var d = b.getParent("form").retrieve("validator"); if (!d) { return true; } var a = c.toToggle || document.id(c.toToggleChildrenOf).getElements("input, select, textarea"); if (!b.checked) { a.each(function (e) { d.ignoreField(e); d.resetField(e); }); } else { a.each(function (e) { d.enforceField(e); }); } return true; }, }, ], [ "validate-reqchk-bynode", { errorMsg: function () { return Form.Validator.getMsg("reqChkByNode"); }, test: function (a, b) { return document .id(b.nodeId) .getElements(b.selector || "input[type=checkbox], input[type=radio]") .some(function (c) { return c.checked; }); }, }, ], [ "validate-required-check", { errorMsg: function (a, b) { return b.useTitle ? a.get("title") : Form.Validator.getMsg("requiredChk"); }, test: function (a, b) { return !!a.checked; }, }, ], [ "validate-reqchk-byname", { errorMsg: function (a, b) { return Form.Validator.getMsg("reqChkByName").substitute({ label: b.label || a.get("type") }); }, test: function (b, d) { var c = d.groupName || b.get("name"); var a = $$(document.getElementsByName(c)).some(function (g, f) { return g.checked; }); var e = b.getParent("form").retrieve("validator"); if (a && e) { e.resetField(b); } return a; }, }, ], [ "validate-match", { errorMsg: function (a, b) { return Form.Validator.getMsg("match").substitute({ matchName: b.matchName || document.id(b.matchInput).get("name") }); }, test: function (b, c) { var d = b.get("value"); var a = document.id(c.matchInput) && document.id(c.matchInput).get("value"); return d && a ? d == a : true; }, }, ], [ "validate-after-date", { errorMsg: function (a, b) { return Form.Validator.getMsg("afterDate").substitute({ label: b.afterLabel || (b.afterElement ? Form.Validator.getMsg("startDate") : Form.Validator.getMsg("currentDate")) }); }, test: function (b, c) { var d = document.id(c.afterElement) ? Date.parse(document.id(c.afterElement).get("value")) : new Date(); var a = Date.parse(b.get("value")); return a && d ? a >= d : true; }, }, ], [ "validate-before-date", { errorMsg: function (a, b) { return Form.Validator.getMsg("beforeDate").substitute({ label: b.beforeLabel || (b.beforeElement ? Form.Validator.getMsg("endDate") : Form.Validator.getMsg("currentDate")) }); }, test: function (b, c) { var d = Date.parse(b.get("value")); var a = document.id(c.beforeElement) ? Date.parse(document.id(c.beforeElement).get("value")) : new Date(); return a && d ? a >= d : true; }, }, ], [ "validate-custom-required", { errorMsg: function () { return Form.Validator.getMsg("required"); }, test: function (a, b) { return a.get("value") != b.emptyValue; }, }, ], [ "validate-same-month", { errorMsg: function (a, b) { var c = document.id(b.sameMonthAs) && document.id(b.sameMonthAs).get("value"); var d = a.get("value"); if (d != "") { return Form.Validator.getMsg(c ? "sameMonth" : "startMonth"); } }, test: function (a, b) { var d = Date.parse(a.get("value")); var c = Date.parse(document.id(b.sameMonthAs) && document.id(b.sameMonthAs).get("value")); return d && c ? d.format("%B") == c.format("%B") : true; }, }, ], [ "validate-cc-num", { errorMsg: function (a) { var b = a.get("value").replace(/[^0-9]/g, ""); return Form.Validator.getMsg("creditcard").substitute({ length: b.length }); }, test: function (c) { if (Form.Validator.getValidator("IsEmpty").test(c)) { return true; } var g = c.get("value"); g = g.replace(/[^0-9]/g, ""); var a = false; if (g.test(/^4[0-9]{12}([0-9]{3})?$/)) { a = "Visa"; } else { if (g.test(/^5[1-5]([0-9]{14})$/)) { a = "Master Card"; } else { if (g.test(/^3[47][0-9]{13}$/)) { a = "American Express"; } else { if (g.test(/^6011[0-9]{12}$/)) { a = "Discover"; } } } } if (a) { var d = 0; var e = 0; for (var b = g.length - 1; b >= 0; --b) { e = g.charAt(b).toInt(); if (e == 0) { continue; } if ((g.length - b) % 2 == 0) { e += e; } if (e > 9) { e = e.toString().charAt(0).toInt() + e.toString().charAt(1).toInt(); } d += e; } if (d % 10 == 0) { return true; } } var f = ""; while (g != "") { f += " " + g.substr(0, 4); g = g.substr(4); } c.getParent("form").retrieve("validator").ignoreField(c); c.set("value", f.clean()); c.getParent("form").retrieve("validator").enforceField(c); return false; }, }, ], ]); var OverText = new Class({ Implements: [Options, Events, Class.Occlude], Binds: ["reposition", "assert", "focus", "hide"], options: { element: "label", labelClass: "overTxtLabel", positionOptions: { position: "upperLeft", edge: "upperLeft", offset: { x: 4, y: 2 } }, poll: false, pollInterval: 250, wrap: false }, property: "OverText", initialize: function (b, a) { b = this.element = document.id(b); if (this.occlude()) { return this.occluded; } this.setOptions(a); this.attach(b); OverText.instances.push(this); if (this.options.poll) { this.poll(); } }, toElement: function () { return this.element; }, attach: function () { var b = this.element, a = this.options, c = a.textOverride || b.get("alt") || b.get("title"); if (!c) { return this; } var d = (this.text = new Element(a.element, { class: a.labelClass, styles: { lineHeight: "normal", position: "absolute", cursor: "text" }, html: c, events: { click: this.hide.pass(a.element == "label", this) } }).inject( b, "after" )); if (a.element == "label") { if (!b.get("id")) { b.set("id", "input_" + String.uniqueID()); } d.set("for", b.get("id")); } if (a.wrap) { this.textHolder = new Element("div.overTxtWrapper", { styles: { lineHeight: "normal", position: "relative" } }).grab(d).inject(b, "before"); } return this.enable(); }, destroy: function () { this.element.eliminate(this.property); this.disable(); if (this.text) { this.text.destroy(); } if (this.textHolder) { this.textHolder.destroy(); } return this; }, disable: function () { this.element.removeEvents({ focus: this.focus, blur: this.assert, change: this.assert }); window.removeEvent("resize", this.reposition); this.hide(true, true); return this; }, enable: function () { this.element.addEvents({ focus: this.focus, blur: this.assert, change: this.assert }); window.addEvent("resize", this.reposition); this.reposition(); return this; }, wrap: function () { if (this.options.element == "label") { if (!this.element.get("id")) { this.element.set("id", "input_" + String.uniqueID()); } this.text.set("for", this.element.get("id")); } }, startPolling: function () { this.pollingPaused = false; return this.poll(); }, poll: function (a) { if (this.poller && !a) { return this; } if (a) { clearInterval(this.poller); } else { this.poller = function () { if (!this.pollingPaused) { this.assert(true); } }.periodical(this.options.pollInterval, this); } return this; }, stopPolling: function () { this.pollingPaused = true; return this.poll(true); }, focus: function () { if (this.text && (!this.text.isDisplayed() || this.element.get("disabled"))) { return this; } return this.hide(); }, hide: function (c, a) { if (this.text && this.text.isDisplayed() && (!this.element.get("disabled") || a)) { this.text.hide(); this.fireEvent("textHide", [this.text, this.element]); this.pollingPaused = true; if (!c) { try { this.element.fireEvent("focus"); this.element.focus(); } catch (b) {} } } return this; }, show: function () { if (this.text && !this.text.isDisplayed()) { this.text.show(); this.reposition(); this.fireEvent("textShow", [this.text, this.element]); this.pollingPaused = false; } return this; }, test: function () { return !this.element.get("value"); }, assert: function (a) { return this[this.test() ? "show" : "hide"](a); }, reposition: function () { this.assert(true); if (!this.element.isVisible()) { return this.stopPolling().hide(); } if (this.text && this.test()) { this.text.position(Object.merge(this.options.positionOptions, { relativeTo: this.element })); } return this; }, }); OverText.instances = []; Object.append(OverText, { each: function (a) { return OverText.instances.each(function (c, b) { if (c.element && c.text) { a.call(OverText, c, b); } }); }, update: function () { return OverText.each(function (a) { return a.reposition(); }); }, hideAll: function () { return OverText.each(function (a) { return a.hide(true, true); }); }, showAll: function () { return OverText.each(function (a) { return a.show(); }); }, }); Fx.Elements = new Class({ Extends: Fx.CSS, initialize: function (b, a) { this.elements = this.subject = $$(b); this.parent(a); }, compute: function (g, h, j) { var c = {}; for (var d in g) { var a = g[d], e = h[d], f = (c[d] = {}); for (var b in a) { f[b] = this.parent(a[b], e[b], j); } } return c; }, set: function (b) { for (var c in b) { if (!this.elements[c]) { continue; } var a = b[c]; for (var d in a) { this.render(this.elements[c], d, a[d], this.options.unit); } } return this; }, start: function (c) { if (!this.check(c)) { return this; } var h = {}, j = {}; for (var d in c) { if (!this.elements[d]) { continue; } var f = c[d], a = (h[d] = {}), g = (j[d] = {}); for (var b in f) { var e = this.prepare(this.elements[d], b, f[b]); a[b] = e.from; g[b] = e.to; } } return this.parent(h, j); }, }); Fx.Accordion = new Class({ Extends: Fx.Elements, options: { fixedHeight: false, fixedWidth: false, display: 0, show: false, height: true, width: false, opacity: true, alwaysHide: false, trigger: "click", initialDisplayFx: true, resetHeight: true }, initialize: function () { var g = function (h) { return h != null; }; var f = Array.link(arguments, { container: Type.isElement, options: Type.isObject, togglers: g, elements: g }); this.parent(f.elements, f.options); var b = this.options, e = (this.togglers = $$(f.togglers)); this.previous = -1; this.internalChain = new Chain(); if (b.alwaysHide) { this.options.link = "chain"; } if (b.show || this.options.show === 0) { b.display = false; this.previous = b.show; } if (b.start) { b.display = false; b.show = false; } var d = (this.effects = {}); if (b.opacity) { d.opacity = "fullOpacity"; } if (b.width) { d.width = b.fixedWidth ? "fullWidth" : "offsetWidth"; } if (b.height) { d.height = b.fixedHeight ? "fullHeight" : "scrollHeight"; } for (var c = 0, a = e.length; c < a; c++) { this.addSection(e[c], this.elements[c]); } this.elements.each(function (j, h) { if (b.show === h) { this.fireEvent("active", [e[h], j]); } else { for (var k in d) { j.setStyle(k, 0); } } }, this); if (b.display || b.display === 0 || b.initialDisplayFx === false) { this.display(b.display, b.initialDisplayFx); } if (b.fixedHeight !== false) { b.resetHeight = false; } this.addEvent("complete", this.internalChain.callChain.bind(this.internalChain)); }, addSection: function (g, d) { g = document.id(g); d = document.id(d); this.togglers.include(g); this.elements.include(d); var f = this.togglers, c = this.options, h = f.contains(g), a = f.indexOf(g), b = this.display.pass(a, this); g.store("accordion:display", b).addEvent(c.trigger, b); if (c.height) { d.setStyles({ "padding-top": 0, "border-top": "none", "padding-bottom": 0, "border-bottom": "none" }); } if (c.width) { d.setStyles({ "padding-left": 0, "border-left": "none", "padding-right": 0, "border-right": "none" }); } d.fullOpacity = 1; if (c.fixedWidth) { d.fullWidth = c.fixedWidth; } if (c.fixedHeight) { d.fullHeight = c.fixedHeight; } d.setStyle("overflow", "hidden"); if (!h) { for (var e in this.effects) { d.setStyle(e, 0); } } return this; }, removeSection: function (f, b) { var e = this.togglers, a = e.indexOf(f), c = this.elements[a]; var d = function () { e.erase(f); this.elements.erase(c); this.detach(f); }.bind(this); if (this.now == a || b != null) { this.display(b != null ? b : a - 1 >= 0 ? a - 1 : 0).chain(d); } else { d(); } return this; }, detach: function (b) { var a = function (c) { c.removeEvent(this.options.trigger, c.retrieve("accordion:display")); }.bind(this); if (!b) { this.togglers.each(a); } else { a(b); } return this; }, display: function (b, c) { if (!this.check(b, c)) { return this; } var h = {}, g = this.elements, a = this.options, f = this.effects; if (c == null) { c = true; } if (typeOf(b) == "element") { b = g.indexOf(b); } if (b == this.previous && !a.alwaysHide) { return this; } if (a.resetHeight) { var e = g[this.previous]; if (e && !this.selfHidden) { for (var d in f) { e.setStyle(d, e[f[d]]); } } } if ((this.timer && a.link == "chain") || (b === this.previous && !a.alwaysHide)) { return this; } this.previous = b; this.selfHidden = false; g.each(function (l, k) { h[k] = {}; var j; if (k != b) { j = true; } else { if (a.alwaysHide && ((l.offsetHeight > 0 && a.height) || (l.offsetWidth > 0 && a.width))) { j = true; this.selfHidden = true; } } this.fireEvent(j ? "background" : "active", [this.togglers[k], l]); for (var m in f) { h[k][m] = j ? 0 : l[f[m]]; } if (!c && !j && a.resetHeight) { h[k].height = "auto"; } }, this); this.internalChain.clearChain(); this.internalChain.chain( function () { if (a.resetHeight && !this.selfHidden) { var i = g[b]; if (i) { i.setStyle("height", "auto"); } } }.bind(this) ); return c ? this.start(h) : this.set(h).internalChain.callChain(); }, }); Fx.Move = new Class({ Extends: Fx.Morph, options: { relativeTo: document.body, position: "center", edge: false, offset: { x: 0, y: 0 } }, start: function (a) { var b = this.element, c = b.getStyles("top", "left"); if (c.top == "auto" || c.left == "auto") { b.setPosition(b.getPosition(b.getOffsetParent())); } return this.parent(b.position(Object.merge({}, this.options, a, { returnPos: true }))); }, }); Element.Properties.move = { set: function (a) { this.get("move").cancel().setOptions(a); return this; }, get: function () { var a = this.retrieve("move"); if (!a) { a = new Fx.Move(this, { link: "cancel" }); this.store("move", a); } return a; }, }; Element.implement({ move: function (a) { this.get("move").start(a); return this; }, }); (function () { Fx.Scroll = new Class({ Extends: Fx, options: { offset: { x: 0, y: 0 }, wheelStops: true }, initialize: function (c, b) { this.element = this.subject = document.id(c); this.parent(b); if (typeOf(this.element) != "element") { this.element = document.id(this.element.getDocument().body); } if (this.options.wheelStops) { var d = this.element, e = this.cancel.pass(false, this); this.addEvent( "start", function () { d.addEvent("mousewheel", e); }, true ); this.addEvent( "complete", function () { d.removeEvent("mousewheel", e); }, true ); } }, set: function () { var b = Array.flatten(arguments); if (Browser.firefox) { b = [Math.round(b[0]), Math.round(b[1])]; } this.element.scrollTo(b[0], b[1]); return this; }, compute: function (d, c, b) { return [0, 1].map(function (e) { return Fx.compute(d[e], c[e], b); }); }, start: function (c, d) { if (!this.check(c, d)) { return this; } var b = this.element.getScroll(); return this.parent([b.x, b.y], [c, d]); }, calculateScroll: function (g, f) { var d = this.element, b = d.getScrollSize(), h = d.getScroll(), j = d.getSize(), c = this.options.offset, i = { x: g, y: f }; for (var e in i) { if (!i[e] && i[e] !== 0) { i[e] = h[e]; } if (typeOf(i[e]) != "number") { i[e] = b[e] - j[e]; } i[e] += c[e]; } return [i.x, i.y]; }, toTop: function () { return this.start.apply(this, this.calculateScroll(false, 0)); }, toLeft: function () { return this.start.apply(this, this.calculateScroll(0, false)); }, toRight: function () { return this.start.apply(this, this.calculateScroll("right", false)); }, toBottom: function () { return this.start.apply(this, this.calculateScroll(false, "bottom")); }, toElement: function (d, e) { e = e ? Array.mofrom(e) : ["x", "y"]; var c = a(this.element) ? { x: 0, y: 0 } : this.element.getScroll(); var b = Object.map(document.id(d).getPosition(this.element), function (g, f) { return e.contains(f) ? g + c[f] : false; }); return this.start.apply(this, this.calculateScroll(b.x, b.y)); }, toElementEdge: function (d, g, e) { g = g ? Array.mofrom(g) : ["x", "y"]; d = document.id(d); var i = {}, f = d.getPosition(this.element), j = d.getSize(), h = this.element.getScroll(), b = this.element.getSize(), c = { x: f.x + j.x, y: f.y + j.y }; ["x", "y"].each(function (k) { if (g.contains(k)) { if (c[k] > h[k] + b[k]) { i[k] = c[k] - b[k]; } if (f[k] < h[k]) { i[k] = f[k]; } } if (i[k] == null) { i[k] = h[k]; } if (e && e[k]) { i[k] = i[k] + e[k]; } }, this); if (i.x != h.x || i.y != h.y) { this.start(i.x, i.y); } return this; }, toElementCenter: function (e, f, h) { f = f ? Array.mofrom(f) : ["x", "y"]; e = document.id(e); var i = {}, c = e.getPosition(this.element), d = e.getSize(), b = this.element.getScroll(), g = this.element.getSize(); ["x", "y"].each(function (j) { if (f.contains(j)) { i[j] = c[j] - (g[j] - d[j]) / 2; } if (i[j] == null) { i[j] = b[j]; } if (h && h[j]) { i[j] = i[j] + h[j]; } }, this); if (i.x != b.x || i.y != b.y) { this.start(i.x, i.y); } return this; }, }); function a(b) { return /^(?:body|html)$/i.test(b.tagName); } })(); Fx.Slide = new Class({ Extends: Fx, options: { mode: "vertical", wrapper: false, hideOverflow: true, resetHeight: false }, initialize: function (b, a) { b = this.element = this.subject = document.id(b); this.parent(a); a = this.options; var d = b.retrieve("wrapper"), c = b.getStyles("margin", "position", "overflow"); if (a.hideOverflow) { c = Object.append(c, { overflow: "hidden" }); } if (a.wrapper) { d = document.id(a.wrapper).setStyles(c); } if (!d) { d = new Element("div", { styles: c }).wraps(b); } b.store("wrapper", d).setStyle("margin", 0); if (b.getStyle("overflow") == "visible") { b.setStyle("overflow", "hidden"); } this.now = []; this.open = true; this.wrapper = d; this.addEvent( "complete", function () { this.open = d["offset" + this.layout.capitalize()] != 0; if (this.open && this.options.resetHeight) { d.setStyle("height", ""); } }, true ); }, vertical: function () { this.margin = "margin-top"; this.layout = "height"; this.offset = this.element.offsetHeight; }, horizontal: function () { this.margin = "margin-left"; this.layout = "width"; this.offset = this.element.offsetWidth; }, set: function (a) { this.element.setStyle(this.margin, a[0]); this.wrapper.setStyle(this.layout, a[1]); return this; }, compute: function (c, b, a) { return [0, 1].map(function (d) { return Fx.compute(c[d], b[d], a); }); }, start: function (b, e) { if (!this.check(b, e)) { return this; } this[e || this.options.mode](); var d = this.element.getStyle(this.margin).toInt(), c = this.wrapper.getStyle(this.layout).toInt(), a = [ [d, c], [0, this.offset], ], g = [ [d, c], [-this.offset, 0], ], f; switch (b) { case "in": f = a; break; case "out": f = g; break; case "toggle": f = c == 0 ? a : g; } return this.parent(f[0], f[1]); }, slideIn: function (a) { return this.start("in", a); }, slideOut: function (a) { return this.start("out", a); }, hide: function (a) { this[a || this.options.mode](); this.open = false; return this.set([-this.offset, 0]); }, show: function (a) { this[a || this.options.mode](); this.open = true; return this.set([0, this.offset]); }, toggle: function (a) { return this.start("toggle", a); }, }); Element.Properties.slide = { set: function (a) { this.get("slide").cancel().setOptions(a); return this; }, get: function () { var a = this.retrieve("slide"); if (!a) { a = new Fx.Slide(this, { link: "cancel" }); this.store("slide", a); } return a; }, }; Element.implement({ slide: function (d, e) { d = d || "toggle"; var b = this.get("slide"), a; switch (d) { case "hide": b.hide(e); break; case "show": b.show(e); break; case "toggle": var c = this.retrieve("slide:flag", b.open); b[c ? "slideOut" : "slideIn"](e); this.store("slide:flag", !c); a = true; break; default: b.start(d, e); } if (!a) { this.eliminate("slide:flag"); } return this; }, }); Fx.SmoothScroll = new Class({ Extends: Fx.Scroll, options: { axes: ["x", "y"] }, initialize: function (c, d) { d = d || document; this.doc = d.getDocument(); this.parent(this.doc, c); var e = d.getWindow(), a = e.location.href.match(/^[^#]*/)[0] + "#", b = $$(this.options.links || this.doc.links); b.each(function (g) { if (g.href.indexOf(a) != 0) { return; } var f = g.href.substr(a.length); if (f) { this.useLink(g, f); } }, this); this.addEvent( "complete", function () { e.location.hash = this.anchor; this.element.scrollTo(this.to[0], this.to[1]); }, true ); }, useLink: function (b, a) { b.addEvent( "click", function (d) { var c = document.id(a) || this.doc.getElement("a[name=" + a + "]"); if (!c) { return; } d.preventDefault(); this.toElement(c, this.options.axes).chain( function () { this.fireEvent("scrolledTo", [b, c]); }.bind(this) ); this.anchor = a; }.bind(this) ); return this; }, }); Fx.Sort = new Class({ Extends: Fx.Elements, options: { mode: "vertical" }, initialize: function (b, a) { this.parent(b, a); this.elements.each(function (c) { if (c.getStyle("position") == "static") { c.setStyle("position", "relative"); } }); this.setDefaultOrder(); }, setDefaultOrder: function () { this.currentOrder = this.elements.map(function (b, a) { return a; }); }, sort: function () { if (!this.check(arguments)) { return this; } var e = Array.flatten(arguments); var i = 0, a = 0, c = {}, h = {}, d = this.options.mode == "vertical"; var f = this.elements.map(function (m, k) { var l = m.getComputedSize({ styles: ["border", "padding", "margin"] }); var n; if (d) { n = { top: i, margin: l["margin-top"], height: l.totalHeight }; i += n.height - l["margin-top"]; } else { n = { left: a, margin: l["margin-left"], width: l.totalWidth }; a += n.width; } var j = d ? "top" : "left"; h[k] = {}; var o = m.getStyle(j).toInt(); h[k][j] = o || 0; return n; }, this); this.set(h); e = e.map(function (j) { return j.toInt(); }); if (e.length != this.elements.length) { this.currentOrder.each(function (j) { if (!e.contains(j)) { e.push(j); } }); if (e.length > this.elements.length) { e.splice(this.elements.length - 1, e.length - this.elements.length); } } var b = 0; i = a = 0; e.each(function (k) { var j = {}; if (d) { j.top = i - f[k].top - b; i += f[k].height; } else { j.left = a - f[k].left; a += f[k].width; } b = b + f[k].margin; c[k] = j; }, this); var g = {}; Array.clone(e) .sort() .each(function (j) { g[j] = c[j]; }); this.start(g); this.currentOrder = e; return this; }, rearrangeDOM: function (a) { a = a || this.currentOrder; var b = this.elements[0].getParent(); var c = []; this.elements.setStyle("opacity", 0); a.each(function (d) { c.push(this.elements[d].inject(b).setStyles({ top: 0, left: 0 })); }, this); this.elements.setStyle("opacity", 1); this.elements = $$(c); this.setDefaultOrder(); return this; }, getDefaultOrder: function () { return this.elements.map(function (b, a) { return a; }); }, getCurrentOrder: function () { return this.currentOrder; }, forward: function () { return this.sort(this.getDefaultOrder()); }, backward: function () { return this.sort(this.getDefaultOrder().reverse()); }, reverse: function () { return this.sort(this.currentOrder.reverse()); }, sortByElements: function (a) { return this.sort( a.map(function (b) { return this.elements.indexOf(b); }, this) ); }, swap: function (c, b) { if (typeOf(c) == "element") { c = this.elements.indexOf(c); } if (typeOf(b) == "element") { b = this.elements.indexOf(b); } var a = Array.clone(this.currentOrder); a[this.currentOrder.indexOf(c)] = b; a[this.currentOrder.indexOf(b)] = c; return this.sort(a); }, }); var Drag = new Class({ Implements: [Events, Options], options: { snap: 6, unit: "px", grid: false, style: true, limit: false, handle: false, invert: false, preventDefault: false, stopPropagation: false, modifiers: { x: "left", y: "top" } }, initialize: function () { var b = Array.link(arguments, { options: Type.isObject, element: function (c) { return c != null; }, }); this.element = document.id(b.element); this.document = this.element.getDocument(); this.setOptions(b.options || {}); var a = typeOf(this.options.handle); this.handles = (a == "array" || a == "collection" ? $$(this.options.handle) : document.id(this.options.handle)) || this.element; this.mouse = { now: {}, pos: {} }; this.value = { start: {}, now: {} }; this.selection = Browser.ie ? "selectstart" : "mousedown"; if (Browser.ie && !Drag.ondragstartFixed) { document.ondragstart = Function.from(false); Drag.ondragstartFixed = true; } this.bound = { start: this.start.bind(this), check: this.check.bind(this), drag: this.drag.bind(this), stop: this.stop.bind(this), cancel: this.cancel.bind(this), eventStop: Function.from(false) }; this.attach(); }, attach: function () { this.handles.addEvent("mousedown", this.bound.start); return this; }, detach: function () { this.handles.removeEvent("mousedown", this.bound.start); return this; }, start: function (a) { var j = this.options; if (a.rightClick) { return; } if (j.preventDefault) { a.preventDefault(); } if (j.stopPropagation) { a.stopPropagation(); } this.mouse.start = a.page; this.fireEvent("beforeStart", this.element); var c = j.limit; this.limit = { x: [], y: [] }; var e, g; for (e in j.modifiers) { if (!j.modifiers[e]) { continue; } var b = this.element.getStyle(j.modifiers[e]); if (b && !b.match(/px$/)) { if (!g) { g = this.element.getCoordinates(this.element.getOffsetParent()); } b = g[j.modifiers[e]]; } if (j.style) { this.value.now[e] = (b || 0).toInt(); } else { this.value.now[e] = this.element[j.modifiers[e]]; } if (j.invert) { this.value.now[e] *= -1; } this.mouse.pos[e] = a.page[e] - this.value.now[e]; if (c && c[e]) { var d = 2; while (d--) { var f = c[e][d]; if (f || f === 0) { this.limit[e][d] = typeof f == "function" ? f() : f; } } } } if (typeOf(this.options.grid) == "number") { this.options.grid = { x: this.options.grid, y: this.options.grid }; } var h = { mousemove: this.bound.check, mouseup: this.bound.cancel }; h[this.selection] = this.bound.eventStop; this.document.addEvents(h); }, check: function (a) { if (this.options.preventDefault) { a.preventDefault(); } var b = Math.round(Math.sqrt(Math.pow(a.page.x - this.mouse.start.x, 2) + Math.pow(a.page.y - this.mouse.start.y, 2))); if (b > this.options.snap) { this.cancel(); this.document.addEvents({ mousemove: this.bound.drag, mouseup: this.bound.stop }); this.fireEvent("start", [this.element, a]).fireEvent("snap", this.element); } }, drag: function (b) { var a = this.options; if (a.preventDefault) { b.preventDefault(); } this.mouse.now = b.page; for (var c in a.modifiers) { if (!a.modifiers[c]) { continue; } this.value.now[c] = this.mouse.now[c] - this.mouse.pos[c]; if (a.invert) { this.value.now[c] *= -1; } if (a.limit && this.limit[c]) { if ((this.limit[c][1] || this.limit[c][1] === 0) && this.value.now[c] > this.limit[c][1]) { this.value.now[c] = this.limit[c][1]; } else { if ((this.limit[c][0] || this.limit[c][0] === 0) && this.value.now[c] < this.limit[c][0]) { this.value.now[c] = this.limit[c][0]; } } } if (a.grid[c]) { this.value.now[c] -= (this.value.now[c] - (this.limit[c][0] || 0)) % a.grid[c]; } if (a.style) { this.element.setStyle(a.modifiers[c], this.value.now[c] + a.unit); } else { this.element[a.modifiers[c]] = this.value.now[c]; } } this.fireEvent("drag", [this.element, b]); }, cancel: function (a) { this.document.removeEvents({ mousemove: this.bound.check, mouseup: this.bound.cancel }); if (a) { this.document.removeEvent(this.selection, this.bound.eventStop); this.fireEvent("cancel", this.element); } }, stop: function (b) { var a = { mousemove: this.bound.drag, mouseup: this.bound.stop }; a[this.selection] = this.bound.eventStop; this.document.removeEvents(a); if (b) { this.fireEvent("complete", [this.element, b]); } }, }); Element.implement({ makeResizable: function (a) { var b = new Drag(this, Object.merge({ modifiers: { x: "width", y: "height" } }, a)); this.store("resizer", b); return b.addEvent( "drag", function () { this.fireEvent("resize", b); }.bind(this) ); }, }); Drag.Move = new Class({ Extends: Drag, options: { droppables: [], container: false, precalculate: false, includeMargins: true, checkDroppables: true }, initialize: function (b, a) { this.parent(b, a); b = this.element; this.droppables = $$(this.options.droppables); this.container = document.id(this.options.container); if (this.container && typeOf(this.container) != "element") { this.container = document.id(this.container.getDocument().body); } if (this.options.style) { if (this.options.modifiers.x == "left" && this.options.modifiers.y == "top") { var c = b.getOffsetParent(), d = b.getStyles("left", "top"); if (c && (d.left == "auto" || d.top == "auto")) { b.setPosition(b.getPosition(c)); } } if (b.getStyle("position") == "static") { b.setStyle("position", "absolute"); } } this.addEvent("start", this.checkDroppables, true); this.overed = null; }, start: function (a) { if (this.container) { this.options.limit = this.calculateLimit(); } if (this.options.precalculate) { this.positions = this.droppables.map(function (b) { return b.getCoordinates(); }); } this.parent(a); }, calculateLimit: function () { var j = this.element, e = this.container, d = document.id(j.getOffsetParent()) || document.body, h = e.getCoordinates(d), c = {}, b = {}, k = {}, g = {}, m = {}; ["top", "right", "bottom", "left"].each(function (q) { c[q] = j.getStyle("margin-" + q).toInt(); b[q] = j.getStyle("border-" + q).toInt(); k[q] = e.getStyle("margin-" + q).toInt(); g[q] = e.getStyle("border-" + q).toInt(); m[q] = d.getStyle("padding-" + q).toInt(); }, this); var f = j.offsetWidth + c.left + c.right, p = j.offsetHeight + c.top + c.bottom, i = 0, l = 0, o = h.right - g.right - f, a = h.bottom - g.bottom - p; if (this.options.includeMargins) { i += c.left; l += c.top; } else { o += c.right; a += c.bottom; } if (j.getStyle("position") == "relative") { var n = j.getCoordinates(d); n.left -= j.getStyle("left").toInt(); n.top -= j.getStyle("top").toInt(); i -= n.left; l -= n.top; if (e.getStyle("position") != "relative") { i += g.left; l += g.top; } o += c.left - n.left; a += c.top - n.top; if (e != d) { i += k.left + m.left; l += (Browser.ie6 || Browser.ie7 ? 0 : k.top) + m.top; } } else { i -= c.left; l -= c.top; if (e != d) { i += h.left + g.left; l += h.top + g.top; } } return { x: [i, o], y: [l, a] }; }, getDroppableCoordinates: function (c) { var b = c.getCoordinates(); if (c.getStyle("position") == "fixed") { var a = window.getScroll(); b.left += a.x; b.right += a.x; b.top += a.y; b.bottom += a.y; } return b; }, checkDroppables: function () { var a = this.droppables .filter(function (d, c) { d = this.positions ? this.positions[c] : this.getDroppableCoordinates(d); var b = this.mouse.now; return b.x > d.left && b.x < d.right && b.y < d.bottom && b.y > d.top; }, this) .getLast(); if (this.overed != a) { if (this.overed) { this.fireEvent("leave", [this.element, this.overed]); } if (a) { this.fireEvent("enter", [this.element, a]); } this.overed = a; } }, drag: function (a) { this.parent(a); if (this.options.checkDroppables && this.droppables.length) { this.checkDroppables(); } }, stop: function (a) { this.checkDroppables(); this.fireEvent("drop", [this.element, this.overed, a]); this.overed = null; return this.parent(a); }, }); Element.implement({ makeDraggable: function (a) { var b = new Drag.Move(this, a); this.store("dragger", b); return b; }, }); var Slider = new Class({ Implements: [Events, Options], Binds: ["clickedElement", "draggedKnob", "scrolledElement"], options: { onTick: function (a) { this.setKnobPosition(a); }, initialStep: 0, snap: false, offset: 0, range: false, wheel: false, steps: 100, mode: "horizontal", }, initialize: function (f, a, e) { this.setOptions(e); e = this.options; this.element = document.id(f); a = this.knob = document.id(a); this.previousChange = this.previousEnd = this.step = -1; var b = {}, d = { x: false, y: false }; switch (e.mode) { case "vertical": this.axis = "y"; this.property = "top"; this.offset = "offsetHeight"; break; case "horizontal": this.axis = "x"; this.property = "left"; this.offset = "offsetWidth"; } this.setSliderDimensions(); this.setRange(e.range); if (a.getStyle("position") == "static") { a.setStyle("position", "relative"); } a.setStyle(this.property, -e.offset); d[this.axis] = this.property; b[this.axis] = [-e.offset, this.full - e.offset]; var c = { snap: 0, limit: b, modifiers: d, onDrag: this.draggedKnob, onStart: this.draggedKnob, onBeforeStart: function () { this.isDragging = true; }.bind(this), onCancel: function () { this.isDragging = false; }.bind(this), onComplete: function () { this.isDragging = false; this.draggedKnob(); this.end(); }.bind(this), }; if (e.snap) { this.setSnap(c); } this.drag = new Drag(a, c); this.attach(); if (e.initialStep != null) { this.set(e.initialStep); } }, attach: function () { this.element.addEvent("mousedown", this.clickedElement); if (this.options.wheel) { this.element.addEvent("mousewheel", this.scrolledElement); } this.drag.attach(); return this; }, detach: function () { this.element.removeEvent("mousedown", this.clickedElement).removeEvent("mousewheel", this.scrolledElement); this.drag.detach(); return this; }, autosize: function () { this.setSliderDimensions().setKnobPosition(this.toPosition(this.step)); this.drag.options.limit[this.axis] = [-this.options.offset, this.full - this.options.offset]; if (this.options.snap) { this.setSnap(); } return this; }, setSnap: function (a) { if (!a) { a = this.drag.options; } a.grid = Math.ceil(this.stepWidth); a.limit[this.axis][1] = this.full; return this; }, setKnobPosition: function (a) { if (this.options.snap) { a = this.toPosition(this.step); } this.knob.setStyle(this.property, a); return this; }, setSliderDimensions: function () { this.full = this.element.measure( function () { this.half = this.knob[this.offset] / 2; return this.element[this.offset] - this.knob[this.offset] + this.options.offset * 2; }.bind(this) ); return this; }, set: function (a) { if (!((this.range > 0) ^ (a < this.min))) { a = this.min; } if (!((this.range > 0) ^ (a > this.max))) { a = this.max; } this.step = Math.round(a); return this.checkStep().fireEvent("tick", this.toPosition(this.step)).end(); }, setRange: function (a, b) { this.min = Array.pick([a[0], 0]); this.max = Array.pick([a[1], this.options.steps]); this.range = this.max - this.min; this.steps = this.options.steps || this.full; this.stepSize = Math.abs(this.range) / this.steps; this.stepWidth = (this.stepSize * this.full) / Math.abs(this.range); if (a) { this.set(Array.pick([b, this.step]).floor(this.min).max(this.max)); } return this; }, clickedElement: function (c) { if (this.isDragging || c.target == this.knob) { return; } var b = this.range < 0 ? -1 : 1, a = c.page[this.axis] - this.element.getPosition()[this.axis] - this.half; a = a.limit(-this.options.offset, this.full - this.options.offset); this.step = Math.round(this.min + b * this.toStep(a)); this.checkStep().fireEvent("tick", a).end(); }, scrolledElement: function (a) { var b = this.options.mode == "horizontal" ? a.wheel < 0 : a.wheel > 0; this.set(this.step + (b ? -1 : 1) * this.stepSize); a.stop(); }, draggedKnob: function () { var b = this.range < 0 ? -1 : 1, a = this.drag.value.now[this.axis]; a = a.limit(-this.options.offset, this.full - this.options.offset); this.step = Math.round(this.min + b * this.toStep(a)); this.checkStep(); }, checkStep: function () { var a = this.step; if (this.previousChange != a) { this.previousChange = a; this.fireEvent("change", a); } return this; }, end: function () { var a = this.step; if (this.previousEnd !== a) { this.previousEnd = a; this.fireEvent("complete", a + ""); } return this; }, toStep: function (a) { var b = (((a + this.options.offset) * this.stepSize) / this.full) * this.steps; return this.options.steps ? Math.round((b -= b % this.stepSize)) : b; }, toPosition: function (a) { return (this.full * Math.abs(this.min - a)) / (this.steps * this.stepSize) - this.options.offset; }, }); var Sortables = new Class({ Implements: [Events, Options], options: { opacity: 1, clone: false, revert: false, handle: false, dragOptions: {} }, initialize: function (a, b) { this.setOptions(b); this.elements = []; this.lists = []; this.idle = true; this.addLists($$(document.id(a) || a)); if (!this.options.clone) { this.options.revert = false; } if (this.options.revert) { this.effect = new Fx.Morph(null, Object.merge({ duration: 250, link: "cancel" }, this.options.revert)); } }, attach: function () { this.addLists(this.lists); return this; }, detach: function () { this.lists = this.removeLists(this.lists); return this; }, addItems: function () { Array.flatten(arguments).each(function (a) { this.elements.push(a); var b = a.retrieve( "sortables:start", function (c) { this.start.call(this, c, a); }.bind(this) ); (this.options.handle ? a.getElement(this.options.handle) || a : a).addEvent("mousedown", b); }, this); return this; }, addLists: function () { Array.flatten(arguments).each(function (a) { this.lists.include(a); this.addItems(a.getChildren()); }, this); return this; }, removeItems: function () { return $$( Array.flatten(arguments).map(function (a) { this.elements.erase(a); var b = a.retrieve("sortables:start"); (this.options.handle ? a.getElement(this.options.handle) || a : a).removeEvent("mousedown", b); return a; }, this) ); }, removeLists: function () { return $$( Array.flatten(arguments).map(function (a) { this.lists.erase(a); this.removeItems(a.getChildren()); return a; }, this) ); }, getClone: function (b, a) { if (!this.options.clone) { return new Element(a.tagName).inject(document.body); } if (typeOf(this.options.clone) == "function") { return this.options.clone.call(this, b, a, this.list); } var c = a .clone(true) .setStyles({ margin: 0, position: "absolute", visibility: "hidden", width: a.getStyle("width") }) .addEvent("mousedown", function (d) { a.fireEvent("mousedown", d); }); if (c.get("html").test("radio")) { c.getElements("input[type=radio]").each(function (d, e) { d.set("name", "clone_" + e); if (d.get("checked")) { a.getElements("input[type=radio]")[e].set("checked", true); } }); } return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent())); }, getDroppables: function () { var a = this.list.getChildren().erase(this.clone).erase(this.element); if (!this.options.constrain) { a.append(this.lists).erase(this.list); } return a; }, insert: function (c, b) { var a = "inside"; if (this.lists.contains(b)) { this.list = b; this.drag.droppables = this.getDroppables(); } else { a = this.element.getAllPrevious().contains(b) ? "before" : "after"; } this.element.inject(b, a); this.fireEvent("sort", [this.element, this.clone]); }, start: function (b, a) { if (!this.idle || b.rightClick || ["button", "input", "a", "textarea"].contains(b.target.get("tag"))) { return; } this.idle = false; this.element = a; this.opacity = a.getStyle("opacity"); this.list = a.getParent(); this.clone = this.getClone(b, a); this.drag = new Drag.Move(this.clone, Object.merge({ droppables: this.getDroppables() }, this.options.dragOptions)).addEvents({ onSnap: function () { b.stop(); this.clone.setStyle("visibility", "visible"); this.element.setStyle("opacity", this.options.opacity || 0); this.fireEvent("start", [this.element, this.clone]); }.bind(this), onEnter: this.insert.bind(this), onCancel: this.end.bind(this), onComplete: this.end.bind(this), }); this.clone.inject(this.element, "before"); this.drag.start(b); }, end: function () { this.drag.detach(); this.element.setStyle("opacity", this.opacity); if (this.effect) { var b = this.element.getStyles("width", "height"), d = this.clone, c = d.computePosition(this.element.getPosition(this.clone.getOffsetParent())); var a = function () { this.removeEvent("cancel", a); d.destroy(); }; this.effect.element = d; this.effect.start({ top: c.top, left: c.left, width: b.width, height: b.height, opacity: 0.25 }).addEvent("cancel", a).chain(a); } else { this.clone.destroy(); } this.reset(); }, reset: function () { this.idle = true; this.fireEvent("complete", this.element); }, serialize: function () { var c = Array.link(arguments, { modifier: Type.isFunction, index: function (d) { return d != null; }, }); var b = this.lists.map(function (d) { return d.getChildren().map( c.modifier || function (e) { return e.get("id"); }, this ); }, this); var a = c.index; if (this.lists.length == 1) { a = 0; } return (a || a === 0) && a >= 0 && a < this.lists.length ? b[a] : b; }, }); Request.JSONP = new Class({ Implements: [Chain, Events, Options], options: { onRequest: function (a) { if (this.options.log && window.console && console.log) { console.log("JSONP retrieving script with url:" + a); } }, onError: function (a) { if (this.options.log && window.console && console.warn) { console.warn("JSONP " + a + " will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs"); } }, url: "", callbackKey: "callback", injectScript: document.head, data: "", link: "ignore", timeout: 0, log: false, }, initialize: function (a) { this.setOptions(a); }, send: function (c) { if (!Request.prototype.check.call(this, c)) { return this; } this.running = true; var d = typeOf(c); if (d == "string" || d == "element") { c = { data: c }; } c = Object.merge(this.options, c || {}); var e = c.data; switch (typeOf(e)) { case "element": e = document.id(e).toQueryString(); break; case "object": case "hash": e = Object.toQueryString(e); } var b = (this.index = Request.JSONP.counter++); var f = c.url + (c.url.test("\\?") ? "&" : "?") + c.callbackKey + "=Request.JSONP.request_map.request_" + b + (e ? "&" + e : ""); if (f.length > 2083) { this.fireEvent("error", f); } Request.JSONP.request_map["request_" + b] = function () { this.success(arguments, b); }.bind(this); var a = this.getScript(f).inject(c.injectScript); this.fireEvent("request", [f, a]); if (c.timeout) { this.timeout.delay(c.timeout, this); } return this; }, getScript: function (a) { if (!this.script) { this.script = new Element("script", { type: "text/javascript", async: true, src: a }); } return this.script; }, success: function (b, a) { if (!this.running) { return; } this.clear().fireEvent("complete", b).fireEvent("success", b).callChain(); }, cancel: function () { if (this.running) { this.clear().fireEvent("cancel"); } return this; }, isRunning: function () { return !!this.running; }, clear: function () { this.running = false; if (this.script) { this.script.destroy(); this.script = null; } return this; }, timeout: function () { if (this.running) { this.running = false; this.fireEvent("timeout", [this.script.get("src"), this.script]) .fireEvent("failure") .cancel(); } return this; }, }); Request.JSONP.counter = 0; Request.JSONP.request_map = {}; Request.Queue = new Class({ Implements: [Options, Events], Binds: ["attach", "request", "complete", "cancel", "success", "failure", "exception"], options: { stopOnFailure: true, autoAdvance: true, concurrent: 1, requests: {} }, initialize: function (a) { var b; if (a) { b = a.requests; delete a.requests; } this.setOptions(a); this.requests = {}; this.queue = []; this.reqBinders = {}; if (b) { this.addRequests(b); } }, addRequest: function (a, b) { this.requests[a] = b; this.attach(a, b); return this; }, addRequests: function (a) { Object.each( a, function (c, b) { this.addRequest(b, c); }, this ); return this; }, getName: function (a) { return Object.keyOf(this.requests, a); }, attach: function (a, b) { if (b._groupSend) { return this; } ["request", "complete", "cancel", "success", "failure", "exception"].each(function (c) { if (!this.reqBinders[a]) { this.reqBinders[a] = {}; } this.reqBinders[a][c] = function () { this["on" + c.capitalize()].apply(this, [a, b].append(arguments)); }.bind(this); b.addEvent(c, this.reqBinders[a][c]); }, this); b._groupSend = b.send; b.send = function (c) { this.send(a, c); return b; }.bind(this); return this; }, removeRequest: function (b) { var a = typeOf(b) == "object" ? this.getName(b) : b; if (!a && typeOf(a) != "string") { return this; } b = this.requests[a]; if (!b) { return this; } ["request", "complete", "cancel", "success", "failure", "exception"].each(function (c) { b.removeEvent(c, this.reqBinders[a][c]); }, this); b.send = b._groupSend; delete b._groupSend; return this; }, getRunning: function () { return Object.filter(this.requests, function (a) { return a.running; }); }, isRunning: function () { return !!Object.keys(this.getRunning()).length; }, send: function (b, a) { var c = function () { this.requests[b]._groupSend(a); this.queue.erase(c); }.bind(this); c.name = b; if (Object.keys(this.getRunning()).length >= this.options.concurrent || (this.error && this.options.stopOnFailure)) { this.queue.push(c); } else { c(); } return this; }, hasNext: function (a) { return !a ? !!this.queue.length : !!this.queue.filter(function (b) { return b.name == a; }).length; }, resume: function () { this.error = false; (this.options.concurrent - Object.keys(this.getRunning()).length).times(this.runNext, this); return this; }, runNext: function (a) { if (!this.queue.length) { return this; } if (!a) { this.queue[0](); } else { var b; this.queue.each(function (c) { if (!b && c.name == a) { b = true; c(); } }); } return this; }, runAll: function () { this.queue.each(function (a) { a(); }); return this; }, clear: function (a) { if (!a) { this.queue.empty(); } else { this.queue = this.queue .map(function (b) { if (b.name != a) { return b; } else { return false; } }) .filter(function (b) { return b; }); } return this; }, cancel: function (a) { this.requests[a].cancel(); return this; }, onRequest: function () { this.fireEvent("request", arguments); }, onComplete: function () { this.fireEvent("complete", arguments); if (!this.queue.length) { this.fireEvent("end"); } }, onCancel: function () { if (this.options.autoAdvance && !this.error) { this.runNext(); } this.fireEvent("cancel", arguments); }, onSuccess: function () { if (this.options.autoAdvance && !this.error) { this.runNext(); } this.fireEvent("success", arguments); }, onFailure: function () { this.error = true; if (!this.options.stopOnFailure && this.options.autoAdvance) { this.runNext(); } this.fireEvent("failure", arguments); }, onException: function () { this.error = true; if (!this.options.stopOnFailure && this.options.autoAdvance) { this.runNext(); } this.fireEvent("exception", arguments); }, }); Request.implement({ options: { initialDelay: 5000, delay: 5000, limit: 60000 }, startTimer: function (b) { var a = function () { if (!this.running) { this.send({ data: b }); } }; this.lastDelay = this.options.initialDelay; this.timer = a.delay(this.lastDelay, this); this.completeCheck = function (c) { clearTimeout(this.timer); this.lastDelay = c ? this.options.delay : (this.lastDelay + this.options.delay).min(this.options.limit); this.timer = a.delay(this.lastDelay, this); }; return this.addEvent("complete", this.completeCheck); }, stopTimer: function () { clearTimeout(this.timer); return this.removeEvent("complete", this.completeCheck); }, }); var Asset = { javascript: function (d, b) { if (!b) { b = {}; } var a = new Element("script", { src: d, type: "text/javascript" }), e = b.document || document, c = b.onload || b.onLoad; delete b.onload; delete b.onLoad; delete b.document; if (c) { if (typeof a.onreadystatechange != "undefined") { a.addEvent("readystatechange", function () { if (["loaded", "complete"].contains(this.readyState)) { c.call(this); } }); } else { a.addEvent("load", c); } } return a.set(b).inject(e.head); }, css: function (d, a) { if (!a) { a = {}; } var b = new Element("link", { rel: "stylesheet", media: "screen", type: "text/css", href: d }); var c = a.onload || a.onLoad, e = a.document || document; delete a.onload; delete a.onLoad; delete a.document; if (c) { b.addEvent("load", c); } return b.set(a).inject(e.head); }, image: function (c, b) { if (!b) { b = {}; } var d = new Image(), a = document.id(d) || new Element("img"); ["load", "abort", "error"].each(function (e) { var g = "on" + e, f = "on" + e.capitalize(), h = b[g] || b[f] || function () {}; delete b[f]; delete b[g]; d[g] = function () { if (!d) { return; } if (!a.parentNode) { a.width = d.width; a.height = d.height; } d = d.onload = d.onabort = d.onerror = null; h.delay(1, a, a); a.fireEvent(e, a, 1); }; }); d.src = a.src = c; if (d && d.complete) { d.onload.delay(1); } return a.set(b); }, images: function (c, b) { c = Array.mofrom(c); var d = function () {}, a = 0; b = Object.merge({ onComplete: d, onProgress: d, onError: d, properties: {} }, b); return new Elements( c.map(function (f, e) { return Asset.image( f, Object.append(b.properties, { onload: function () { a++; b.onProgress.call(this, a, e, f); if (a == c.length) { b.onComplete(); } }, onerror: function () { a++; b.onError.call(this, a, e, f); if (a == c.length) { b.onComplete(); } }, }) ); }) ); }, }; (function () { var a = (this.Color = new Type("Color", function (c, d) { if (arguments.length >= 3) { d = "rgb"; c = Array.slice(arguments, 0, 3); } else { if (typeof c == "string") { if (c.match(/rgb/)) { c = c.rgbToHex().hexToRgb(true); } else { if (c.match(/hsb/)) { c = c.hsbToRgb(); } else { c = c.hexToRgb(true); } } } } d = d || "rgb"; switch (d) { case "hsb": var b = c; c = c.hsbToRgb(); c.hsb = b; break; case "hex": c = c.hexToRgb(true); break; } c.rgb = c.slice(0, 3); c.hsb = c.hsb || c.rgbToHsb(); c.hex = c.rgbToHex(); return Object.append(c, this); })); a.implement({ mix: function () { var b = Array.slice(arguments); var d = typeOf(b.getLast()) == "number" ? b.pop() : 50; var c = this.slice(); b.each(function (e) { e = new a(e); for (var f = 0; f < 3; f++) { c[f] = Math.round((c[f] / 100) * (100 - d) + (e[f] / 100) * d); } }); return new a(c, "rgb"); }, invert: function () { return new a( this.map(function (b) { return 255 - b; }) ); }, setHue: function (b) { return new a([b, this.hsb[1], this.hsb[2]], "hsb"); }, setSaturation: function (b) { return new a([this.hsb[0], b, this.hsb[2]], "hsb"); }, setBrightness: function (b) { return new a([this.hsb[0], this.hsb[1], b], "hsb"); }, }); this.$RGB = function (e, d, c) { return new a([e, d, c], "rgb"); }; this.$HSB = function (e, d, c) { return new a([e, d, c], "hsb"); }; this.$HEX = function (b) { return new a(b, "hex"); }; Array.implement({ rgbToHsb: function () { var c = this[0], d = this[1], k = this[2], h = 0; var j = Math.max(c, d, k), f = Math.min(c, d, k); var l = j - f; var i = j / 255, g = j != 0 ? l / j : 0; if (g != 0) { var e = (j - c) / l; var b = (j - d) / l; var m = (j - k) / l; if (c == j) { h = m - b; } else { if (d == j) { h = 2 + e - m; } else { h = 4 + b - e; } } h /= 6; if (h < 0) { h++; } } return [Math.round(h * 360), Math.round(g * 100), Math.round(i * 100)]; }, hsbToRgb: function () { var d = Math.round((this[2] / 100) * 255); if (this[1] == 0) { return [d, d, d]; } else { var b = this[0] % 360; var g = b % 60; var h = Math.round(((this[2] * (100 - this[1])) / 10000) * 255); var e = Math.round(((this[2] * (6000 - this[1] * g)) / 600000) * 255); var c = Math.round(((this[2] * (6000 - this[1] * (60 - g))) / 600000) * 255); switch (Math.floor(b / 60)) { case 0: return [d, c, h]; case 1: return [e, d, h]; case 2: return [h, d, c]; case 3: return [h, e, d]; case 4: return [c, h, d]; case 5: return [d, h, e]; } } return false; }, }); String.implement({ rgbToHsb: function () { var b = this.match(/\d{1,3}/g); return b ? b.rgbToHsb() : null; }, hsbToRgb: function () { var b = this.match(/\d{1,3}/g); return b ? b.hsbToRgb() : null; }, }); })(); (function () { this.Group = new Class({ initialize: function () { this.instances = Array.flatten(arguments); }, addEvent: function (e, d) { var g = this.instances, a = g.length, f = a, c = new Array(a), b = this; g.each(function (h, j) { h.addEvent(e, function () { if (!c[j]) { f--; } c[j] = arguments; if (!f) { d.call(b, g, h, c); f = a; c = new Array(a); } }); }); }, }); })(); Hash.Cookie = new Class({ Extends: Cookie, options: { autoSave: true }, initialize: function (b, a) { this.parent(b, a); this.load(); }, save: function () { var a = JSON.encode(this.hash); if (!a || a.length > 4096) { return false; } if (a == "{}") { this.dispose(); } else { this.write(a); } return true; }, load: function () { this.hash = new Hash(JSON.decode(this.read(), true)); return this; }, }); Hash.each(Hash.prototype, function (b, a) { if (typeof b == "function") { Hash.Cookie.implement(a, function () { var c = b.apply(this.hash, arguments); if (this.options.autoSave) { this.save(); } return c; }); } }); (function () { var a = (this.Table = function () { this.length = 0; var c = [], b = []; this.set = function (e, g) { var d = c.indexOf(e); if (d == -1) { var f = c.length; c[f] = e; b[f] = g; this.length++; } else { b[d] = g; } return this; }; this.get = function (e) { var d = c.indexOf(e); return d == -1 ? null : b[d]; }; this.erase = function (e) { var d = c.indexOf(e); if (d != -1) { this.length--; c.splice(d, 1); return b.splice(d, 1)[0]; } return null; }; this.each = this.forEach = function (f, g) { for (var e = 0, d = this.length; e < d; e++) { f.call(g, c[e], b[e], this); } }; }); if (this.Type) { new Type("Table", a); } })(); var HtmlTable = new Class({ Implements: [Options, Events, Class.Occlude], options: { properties: { cellpadding: 0, cellspacing: 0, border: 0 }, rows: [], headers: [], footers: [] }, property: "HtmlTable", initialize: function () { var a = Array.link(arguments, { options: Type.isObject, table: Type.isElement, id: Type.isString }); this.setOptions(a.options); if (!a.table && a.id) { a.table = document.id(a.id); } this.element = a.table || new Element("table", this.options.properties); if (this.occlude()) { return this.occluded; } this.build(); }, build: function () { this.element.store("HtmlTable", this); this.body = document.id(this.element.tBodies[0]) || new Element("tbody").inject(this.element); $$(this.body.rows); if (this.options.headers.length) { this.setHeaders(this.options.headers); } else { this.thead = document.id(this.element.tHead); } if (this.thead) { this.head = this.getHead(); } if (this.options.footers.length) { this.setFooters(this.options.footers); } this.tfoot = document.id(this.element.tFoot); if (this.tfoot) { this.foot = document.id(this.tfoot.rows[0]); } this.options.rows.each(function (a) { this.push(a); }, this); }, toElement: function () { return this.element; }, empty: function () { this.body.empty(); return this; }, set: function (e, a) { var d = e == "headers" ? "tHead" : "tFoot", b = d.toLowerCase(); this[b] = (document.id(this.element[d]) || new Element(b).inject(this.element, "top")).empty(); var c = this.push(a, {}, this[b], e == "headers" ? "th" : "td"); if (e == "headers") { this.head = this.getHead(); } else { this.foot = this.getHead(); } return c; }, getHead: function () { var a = this.thead.rows; return a.length > 1 ? $$(a) : a.length ? document.id(a[0]) : false; }, setHeaders: function (a) { this.set("headers", a); return this; }, setFooters: function (a) { this.set("footers", a); return this; }, update: function (d, e, a) { var b = d.getChildren(a || "td"), c = b.length - 1; e.each(function (i, f) { var j = b[f] || new Element(a || "td").inject(d), h = (i ? i.content : "") || i, g = typeOf(h); if (i && i.properties) { j.set(i.properties); } if (/(element(s?)|array|collection)/.test(g)) { j.empty().adopt(h); } else { j.set("html", h); } if (f > c) { b.push(j); } else { b[f] = j; } }); return { tr: d, tds: b }; }, push: function (e, c, d, a, b) { if (typeOf(e) == "element" && e.get("tag") == "tr") { e.inject(d || this.body, b); return { tr: e, tds: e.getChildren("td") }; } return this.update(new Element("tr", c).inject(d || this.body, b), e, a); }, pushMany: function (d, c, e, a, b) { return d.map(function (f) { return this.push(f, c, e, a, b); }, this); }, }); ["adopt", "inject", "wraps", "grab", "replaces", "dispose"].each(function (a) { HtmlTable.implement(a, function () { this.element[a].apply(this.element, arguments); return this; }); }); HtmlTable = Class.refactor(HtmlTable, { options: { classZebra: "table-tr-odd", zebra: true, zebraOnlyVisibleRows: true }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded; } if (this.options.zebra) { this.updateZebras(); } }, updateZebras: function () { var a = 0; Array.each( this.body.rows, function (b) { if (!this.options.zebraOnlyVisibleRows || b.isDisplayed()) { this.zebra(b, a++); } }, this ); }, setRowStyle: function (b, a) { if (this.previous) { this.previous(b, a); } this.zebra(b, a); }, zebra: function (b, a) { return b[(a % 2 ? "remove" : "add") + "Class"](this.options.classZebra); }, push: function () { var a = this.previous.apply(this, arguments); if (this.options.zebra) { this.updateZebras(); } return a; }, }); HtmlTable = Class.refactor(HtmlTable, { options: { sortIndex: 0, sortReverse: false, parsers: [], defaultParser: "string", classSortable: "table-sortable", classHeadSort: "table-th-sort", classHeadSortRev: "table-th-sort-rev", classNoSort: "table-th-nosort", classGroupHead: "table-tr-group-head", classGroup: "table-tr-group", classCellSort: "table-td-sort", classSortSpan: "table-th-sort-span", sortable: false, thSelector: "th", }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded; } this.sorted = { index: null, dir: 1 }; if (!this.bound) { this.bound = {}; } this.bound.headClick = this.headClick.bind(this); this.sortSpans = new Elements(); if (this.options.sortable) { this.enableSort(); if (this.options.sortIndex != null) { this.sort(this.options.sortIndex, this.options.sortReverse); } } }, attachSorts: function (a) { this.detachSorts(); if (a !== false) { this.element.addEvent("click:relay(" + this.options.thSelector + ")", this.bound.headClick); } }, detachSorts: function () { this.element.removeEvents("click:relay(" + this.options.thSelector + ")"); }, setHeaders: function () { this.previous.apply(this, arguments); if (this.sortEnabled) { this.setParsers(); } }, setParsers: function () { this.parsers = this.detectParsers(); }, detectParsers: function () { return this.head && this.head.getElements(this.options.thSelector).flatten().map(this.detectParser, this); }, detectParser: function (a, b) { if (a.hasClass(this.options.classNoSort) || a.retrieve("htmltable-parser")) { return a.retrieve("htmltable-parser"); } var c = new Element("div"); c.adopt(a.childNodes).inject(a); var f = new Element("span", { class: this.options.classSortSpan }).inject(c, "top"); this.sortSpans.push(f); var g = this.options.parsers[b], e = this.body.rows, d; switch (typeOf(g)) { case "function": g = { convert: g }; d = true; break; case "string": g = g; d = true; break; } if (!d) { HtmlTable.ParserPriority.some(function (k) { var o = HtmlTable.Parsers[k], m = o.match; if (!m) { return false; } for (var n = 0, l = e.length; n < l; n++) { var h = document.id(e[n].cells[b]), p = h ? h.get("html").clean() : ""; if (p && m.test(p)) { g = o; return true; } } }); } if (!g) { g = this.options.defaultParser; } a.store("htmltable-parser", g); return g; }, headClick: function (b, a) { if (!this.head || a.hasClass(this.options.classNoSort)) { return; } return this.sort(Array.indexOf(this.head.getElements(this.options.thSelector).flatten(), a) % this.body.rows[0].cells.length); }, serialize: function () { var a = this.previous.apply(this, arguments) || {}; if (this.options.sortable) { a.sortIndex = this.sorted.index; a.sortReverse = this.sorted.reverse; } return a; }, restore: function (a) { if (this.options.sortable && a.sortIndex) { this.sort(a.sortIndex, a.sortReverse); } this.previous.apply(this, arguments); }, setSortedState: function (b, a) { if (a != null) { this.sorted.reverse = a; } else { if (this.sorted.index == b) { this.sorted.reverse = !this.sorted.reverse; } else { this.sorted.reverse = this.sorted.index == null; } } if (b != null) { this.sorted.index = b; } }, setHeadSort: function (a) { var b = $$( !this.head.length ? this.head.cells[this.sorted.index] : this.head .map(function (c) { return c.getElements(this.options.thSelector)[this.sorted.index]; }, this) .clean() ); if (!b.length) { return; } if (a) { b.addClass(this.options.classHeadSort); if (this.sorted.reverse) { b.addClass(this.options.classHeadSortRev); } else { b.removeClass(this.options.classHeadSortRev); } } else { b.removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev); } }, setRowSort: function (b, a) { var e = b.length, d = this.body, g, f; while (e) { var h = b[--e], c = h.position, i = d.rows[c]; if (i.disabled) { continue; } if (!a) { g = this.setGroupSort(g, i, h); this.setRowStyle(i, e); } d.appendChild(i); for (f = 0; f < e; f++) { if (b[f].position > c) { b[f].position--; } } } }, setRowStyle: function (b, a) { this.previous(b, a); b.cells[this.sorted.index].addClass(this.options.classCellSort); }, setGroupSort: function (b, c, a) { if (b == a.value) { c.removeClass(this.options.classGroupHead).addClass(this.options.classGroup); } else { c.removeClass(this.options.classGroup).addClass(this.options.classGroupHead); } return a.value; }, getParser: function () { var a = this.parsers[this.sorted.index]; return typeOf(a) == "string" ? HtmlTable.Parsers[a] : a; }, sort: function (c, b, e) { if (!this.head) { return; } if (!e) { this.clearSort(); this.setSortedState(c, b); this.setHeadSort(true); } var f = this.getParser(); if (!f) { return; } var a; if (!Browser.ie) { a = this.body.getParent(); this.body.dispose(); } var d = this.parseData(f).sort(function (h, g) { if (h.value === g.value) { return 0; } return h.value > g.value ? 1 : -1; }); if (this.sorted.reverse == (f == HtmlTable.Parsers["input-checked"])) { d.reverse(true); } this.setRowSort(d, e); if (a) { a.grab(this.body); } this.fireEvent("stateChanged"); return this.fireEvent("sort", [this.body, this.sorted.index]); }, parseData: function (a) { return Array.map( this.body.rows, function (d, b) { var c = a.convert.call(document.id(d.cells[this.sorted.index])); return { position: b, value: c }; }, this ); }, clearSort: function () { this.setHeadSort(false); this.body.getElements("td").removeClass(this.options.classCellSort); }, reSort: function () { if (this.sortEnabled) { this.sort.call(this, this.sorted.index, this.sorted.reverse); } return this; }, enableSort: function () { this.element.addClass(this.options.classSortable); this.attachSorts(true); this.setParsers(); this.sortEnabled = true; return this; }, disableSort: function () { this.element.removeClass(this.options.classSortable); this.attachSorts(false); this.sortSpans.each(function (a) { a.destroy(); }); this.sortSpans.empty(); this.sortEnabled = false; return this; }, }); HtmlTable.ParserPriority = ["date", "input-checked", "input-value", "float", "number"]; HtmlTable.Parsers = { date: { match: /^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/, convert: function () { var a = Date.parse(this.get("text").stripTags()); return typeOf(a) == "date" ? a.format("db") : ""; }, type: "date", }, "input-checked": { match: / type="(radio|checkbox)" /, convert: function () { return this.getElement("input").checked; }, }, "input-value": { match: /<input/, convert: function () { return this.getElement("input").value; }, }, number: { match: /^\d+[^\d.,]*$/, convert: function () { return this.get("text").stripTags().toInt(); }, number: true, }, numberLax: { match: /^[^\d]+\d+$/, convert: function () { return this.get("text") .replace(/[^-?^0-9]/, "") .stripTags() .toInt(); }, number: true, }, float: { match: /^[\d]+\.[\d]+/, convert: function () { return this.get("text") .replace(/[^-?^\d.]/, "") .stripTags() .toFloat(); }, number: true, }, floatLax: { match: /^[^\d]+[\d]+\.[\d]+$/, convert: function () { return this.get("text") .replace(/[^-?^\d.]/, "") .stripTags(); }, number: true, }, string: { match: null, convert: function () { return this.get("text").stripTags().toLowerCase(); }, }, title: { match: null, convert: function () { return this.title; }, }, }; HtmlTable.defineParsers = function (a) { HtmlTable.Parsers = Object.append(HtmlTable.Parsers, a); for (var b in a) { HtmlTable.ParserPriority.unshift(b); } }; (function () { var a = (this.Keyboard = new Class({ Extends: Events, Implements: [Options], options: { defaultEventType: "keydown", active: false, manager: null, events: {}, nonParsedEvents: ["activate", "deactivate", "onactivate", "ondeactivate", "changed", "onchanged"] }, initialize: function (f) { if (f && f.manager) { this._manager = f.manager; delete f.manager; } this.setOptions(f); this._setup(); }, addEvent: function (h, g, f) { return this.parent(a.parse(h, this.options.defaultEventType, this.options.nonParsedEvents), g, f); }, removeEvent: function (g, f) { return this.parent(a.parse(g, this.options.defaultEventType, this.options.nonParsedEvents), f); }, toggleActive: function () { return this[this.isActive() ? "deactivate" : "activate"](); }, activate: function (f) { if (f) { if (f.isActive()) { return this; } if (this._activeKB && f != this._activeKB) { this.previous = this._activeKB; this.previous.fireEvent("deactivate"); } this._activeKB = f.fireEvent("activate"); a.manager.fireEvent("changed"); } else { if (this._manager) { this._manager.activate(this); } } return this; }, isActive: function () { return this._manager ? this._manager._activeKB == this : a.manager == this; }, deactivate: function (f) { if (f) { if (f === this._activeKB) { this._activeKB = null; f.fireEvent("deactivate"); a.manager.fireEvent("changed"); } } else { if (this._manager) { this._manager.deactivate(this); } } return this; }, relinquish: function () { if (this.isActive() && this._manager && this._manager.previous) { this._manager.activate(this._manager.previous); } else { this.deactivate(); } return this; }, manage: function (f) { if (f._manager) { f._manager.drop(f); } this._instances.push(f); f._manager = this; if (!this._activeKB) { this.activate(f); } return this; }, drop: function (f) { f.relinquish(); this._instances.erase(f); if (this._activeKB == f) { if (this.previous && this._instances.contains(this.previous)) { this.activate(this.previous); } else { this._activeKB = this._instances[0]; } } return this; }, trace: function () { a.trace(this); }, each: function (f) { a.each(this, f); }, _instances: [], _disable: function (f) { if (this._activeKB == f) { this._activeKB = null; } }, _setup: function () { this.addEvents(this.options.events); if (a.manager && !this._manager) { a.manager.manage(this); } if (this.options.active) { this.activate(); } else { this.relinquish(); } }, _handle: function (h, g) { if (h.preventKeyboardPropagation) { return; } var f = !!this._manager; if (f && this._activeKB) { this._activeKB._handle(h, g); if (h.preventKeyboardPropagation) { return; } } this.fireEvent(g, h); if (!f && this._activeKB) { this._activeKB._handle(h, g); } }, })); var b = {}; var c = ["shift", "control", "alt", "meta"]; var e = /^(?:shift|control|ctrl|alt|meta)$/; a.parse = function (h, g, k) { if (k && k.contains(h.toLowerCase())) { return h; } h = h.toLowerCase().replace(/^(keyup|keydown):/, function (m, l) { g = l; return ""; }); if (!b[h]) { var f, j = {}; h.split("+").each(function (l) { if (e.test(l)) { j[l] = true; } else { f = l; } }); j.control = j.control || j.ctrl; var i = []; c.each(function (l) { if (j[l]) { i.push(l); } }); if (f) { i.push(f); } b[h] = i.join("+"); } return g + ":keys(" + b[h] + ")"; }; a.each = function (f, g) { var h = f || a.manager; while (h) { g.run(h); h = h._activeKB; } }; a.stop = function (f) { f.preventKeyboardPropagation = true; }; a.manager = new a({ active: true }); a.trace = function (f) { f = f || a.manager; var g = window.console && console.log; if (g) { console.log("the following items have focus: "); } a.each(f, function (h) { if (g) { console.log(document.id(h.widget) || h.wiget || h); } }); }; var d = function (g) { var f = []; c.each(function (h) { if (g[h]) { f.push(h); } }); if (!e.test(g.key)) { f.push(g.key); } a.manager._handle(g, g.type + ":keys(" + f.join("+") + ")"); }; document.addEvents({ keyup: d, keydown: d }); })(); Keyboard.prototype.options.nonParsedEvents.combine(["rebound", "onrebound"]); Keyboard.implement({ addShortcut: function (b, a) { this._shortcuts = this._shortcuts || []; this._shortcutIndex = this._shortcutIndex || {}; a.getKeyboard = Function.from(this); a.name = b; this._shortcutIndex[b] = a; this._shortcuts.push(a); if (a.keys) { this.addEvent(a.keys, a.handler); } return this; }, addShortcuts: function (b) { for (var a in b) { this.addShortcut(a, b[a]); } return this; }, removeShortcut: function (b) { var a = this.getShortcut(b); if (a && a.keys) { this.removeEvent(a.keys, a.handler); delete this._shortcutIndex[b]; this._shortcuts.erase(a); } return this; }, removeShortcuts: function (a) { a.each(this.removeShortcut, this); return this; }, getShortcuts: function () { return this._shortcuts || []; }, getShortcut: function (a) { return (this._shortcutIndex || {})[a]; }, }); Keyboard.rebind = function (b, a) { Array.mofrom(a).each(function (c) { c.getKeyboard().removeEvent(c.keys, c.handler); c.getKeyboard().addEvent(b, c.handler); c.keys = b; c.getKeyboard().fireEvent("rebound"); }); }; Keyboard.getActiveShortcuts = function (b) { var a = [], c = []; Keyboard.each(b, [].push.bind(a)); a.each(function (d) { c.extend(d.getShortcuts()); }); return c; }; Keyboard.getShortcut = function (c, b, d) { d = d || {}; var a = d.many ? [] : null, e = d.many ? function (g) { var f = g.getShortcut(c); if (f) { a.push(f); } } : function (f) { if (!a) { a = f.getShortcut(c); } }; Keyboard.each(b, e); return a; }; Keyboard.getShortcuts = function (b, a) { return Keyboard.getShortcut(b, a, { many: true }); }; HtmlTable = Class.refactor(HtmlTable, { options: { useKeyboard: true, classRowSelected: "table-tr-selected", classRowHovered: "table-tr-hovered", classSelectable: "table-selectable", shiftForMultiSelect: true, allowMultiSelect: true, selectable: false, selectHiddenRows: false, }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded; } this.selectedRows = new Elements(); if (!this.bound) { this.bound = {}; } this.bound.mouseleave = this.mouseleave.bind(this); this.bound.clickRow = this.clickRow.bind(this); this.bound.activateKeyboard = function () { if (this.keyboard && this.selectEnabled) { this.keyboard.activate(); } }.bind(this); if (this.options.selectable) { this.enableSelect(); } }, empty: function () { this.selectNone(); return this.previous(); }, enableSelect: function () { this.selectEnabled = true; this.attachSelects(); this.element.addClass(this.options.classSelectable); return this; }, disableSelect: function () { this.selectEnabled = false; this.attachSelects(false); this.element.removeClass(this.options.classSelectable); return this; }, push: function () { var a = this.previous.apply(this, arguments); this.updateSelects(); return a; }, toggleRow: function (a) { return this[(this.isSelected(a) ? "de" : "") + "selectRow"](a); }, selectRow: function (b, a) { if (this.isSelected(b) || (!a && !this.body.getChildren().contains(b))) { return; } if (!this.options.allowMultiSelect) { this.selectNone(); } if (!this.isSelected(b)) { this.selectedRows.push(b); b.addClass(this.options.classRowSelected); this.fireEvent("rowFocus", [b, this.selectedRows]); this.fireEvent("stateChanged"); } this.focused = b; document.clearSelection(); return this; }, isSelected: function (a) { return this.selectedRows.contains(a); }, getSelected: function () { return this.selectedRows; }, getSelected: function () { return this.selectedRows; }, serialize: function () { var a = this.previous.apply(this, arguments) || {}; if (this.options.selectable) { a.selectedRows = this.selectedRows.map( function (b) { return Array.indexOf(this.body.rows, b); }.bind(this) ); } return a; }, restore: function (a) { if (this.options.selectable && a.selectedRows) { a.selectedRows.each( function (b) { this.selectRow(this.body.rows[b]); }.bind(this) ); } this.previous.apply(this, arguments); }, deselectRow: function (b, a) { if (!this.isSelected(b) || (!a && !this.body.getChildren().contains(b))) { return; } this.selectedRows = new Elements(Array.mofrom(this.selectedRows).erase(b)); b.removeClass(this.options.classRowSelected); this.fireEvent("rowUnfocus", [b, this.selectedRows]); this.fireEvent("stateChanged"); return this; }, selectAll: function (a) { if (!a && !this.options.allowMultiSelect) { return; } this.selectRange(0, this.body.rows.length, a); return this; }, selectNone: function () { return this.selectAll(true); }, selectRange: function (b, a, f) { if (!this.options.allowMultiSelect && !f) { return; } var g = f ? "deselectRow" : "selectRow", e = Array.clone(this.body.rows); if (typeOf(b) == "element") { b = e.indexOf(b); } if (typeOf(a) == "element") { a = e.indexOf(a); } a = a < e.length - 1 ? a : e.length - 1; if (a < b) { var d = b; b = a; a = d; } for (var c = b; c <= a; c++) { if (this.options.selectHiddenRows || e[c].isDisplayed()) { this[g](e[c], true); } } return this; }, deselectRange: function (b, a) { this.selectRange(b, a, true); }, getSelected: function () { return this.selectedRows; }, enterRow: function (a) { if (this.hovered) { this.hovered = this.leaveRow(this.hovered); } this.hovered = a.addClass(this.options.classRowHovered); }, leaveRow: function (a) { a.removeClass(this.options.classRowHovered); }, updateSelects: function () { Array.each( this.body.rows, function (a) { var b = a.retrieve("binders"); if (!b && !this.selectEnabled) { return; } if (!b) { b = { mouseenter: this.enterRow.pass([a], this), mouseleave: this.leaveRow.pass([a], this) }; a.store("binders", b); } if (this.selectEnabled) { a.addEvents(b); } else { a.removeEvents(b); } }, this ); }, shiftFocus: function (b, a) { if (!this.focused) { return this.selectRow(this.body.rows[0], a); } var c = this.getRowByOffset(b, this.options.selectHiddenRows); if (c === null || this.focused == this.body.rows[c]) { return this; } this.toggleRow(this.body.rows[c], a); }, clickRow: function (a, b) { var c = (a.shift || a.meta || a.control) && this.options.shiftForMultiSelect; if (!c && !(a.rightClick && this.isSelected(b) && this.options.allowMultiSelect)) { this.selectNone(); } if (a.rightClick) { this.selectRow(b); } else { this.toggleRow(b); } if (a.shift) { this.selectRange(this.rangeStart || this.body.rows[0], b, this.rangeStart ? !this.isSelected(b) : true); this.focused = b; } this.rangeStart = b; }, getRowByOffset: function (e, d) { if (!this.focused) { return 0; } var b = Array.indexOf(this.body.rows, this.focused); if ((b == 0 && e < 0) || (b == this.body.rows.length - 1 && e > 0)) { return null; } if (d) { b += e; } else { var a = 0, c = 0; if (e > 0) { while (c < e && b < this.body.rows.length - 1) { if (this.body.rows[++b].isDisplayed()) { c++; } } } else { while (c > e && b > 0) { if (this.body.rows[--b].isDisplayed()) { c--; } } } } return b; }, attachSelects: function (d) { d = d != null ? d : true; var g = d ? "addEvents" : "removeEvents"; this.element[g]({ mouseleave: this.bound.mouseleave, click: this.bound.activateKeyboard }); this.body[g]({ "click:relay(tr)": this.bound.clickRow, "contextmenu:relay(tr)": this.bound.clickRow }); if (this.options.useKeyboard || this.keyboard) { if (!this.keyboard) { this.keyboard = new Keyboard(); } if (!this.selectKeysDefined) { this.selectKeysDefined = true; var f, e; var c = function (i) { var h = function (j) { clearTimeout(f); j.preventDefault(); var k = this.body.rows[this.getRowByOffset(i, this.options.selectHiddenRows)]; if (j.shift && k && this.isSelected(k)) { this.deselectRow(this.focused); this.focused = k; } else { if (k && (!this.options.allowMultiSelect || !j.shift)) { this.selectNone(); } this.shiftFocus(i, j); } if (e) { f = h.delay(100, this, j); } else { f = function () { e = true; h(j); }.delay(400); } }.bind(this); return h; }.bind(this); var b = function () { clearTimeout(f); e = false; }; this.keyboard.addEvents({ "keydown:shift+up": c(-1), "keydown:shift+down": c(1), "keyup:shift+up": b, "keyup:shift+down": b, "keyup:up": b, "keyup:down": b }); var a = ""; if (this.options.allowMultiSelect && this.options.shiftForMultiSelect && this.options.useKeyboard) { a = " (Shift multi-selects)."; } this.keyboard.addShortcuts({ "Select Previous Row": { keys: "up", shortcut: "up arrow", handler: c(-1), description: "Select the previous row in the table." + a }, "Select Next Row": { keys: "down", shortcut: "down arrow", handler: c(1), description: "Select the next row in the table." + a }, }); } this.keyboard[d ? "activate" : "deactivate"](); } this.updateSelects(); }, mouseleave: function () { if (this.hovered) { this.leaveRow(this.hovered); } }, }); var Scroller = new Class({ Implements: [Events, Options], options: { area: 20, velocity: 1, onChange: function (a, b) { this.element.scrollTo(a, b); }, fps: 50, }, initialize: function (b, a) { this.setOptions(a); this.element = document.id(b); this.docBody = document.id(this.element.getDocument().body); this.listener = typeOf(this.element) != "element" ? this.docBody : this.element; this.timer = null; this.bound = { attach: this.attach.bind(this), detach: this.detach.bind(this), getCoords: this.getCoords.bind(this) }; }, start: function () { this.listener.addEvents({ mouseover: this.bound.attach, mouseleave: this.bound.detach }); return this; }, stop: function () { this.listener.removeEvents({ mouseover: this.bound.attach, mouseleave: this.bound.detach }); this.detach(); this.timer = clearInterval(this.timer); return this; }, attach: function () { this.listener.addEvent("mousemove", this.bound.getCoords); }, detach: function () { this.listener.removeEvent("mousemove", this.bound.getCoords); this.timer = clearInterval(this.timer); }, getCoords: function (a) { this.page = this.listener.get("tag") == "body" ? a.client : a.page; if (!this.timer) { this.timer = this.scroll.periodical(Math.round(1000 / this.options.fps), this); } }, scroll: function () { var c = this.element.getSize(), a = this.element.getScroll(), h = this.element != this.docBody ? this.element.getOffsets() : { x: 0, y: 0 }, d = this.element.getScrollSize(), g = { x: 0, y: 0 }, e = this.options.area.top || this.options.area, b = this.options.area.bottom || this.options.area; for (var f in this.page) { if (this.page[f] < e + h[f] && a[f] != 0) { g[f] = (this.page[f] - e - h[f]) * this.options.velocity; } else { if (this.page[f] + b > c[f] + h[f] && a[f] + c[f] != d[f]) { g[f] = (this.page[f] - c[f] + b - h[f]) * this.options.velocity; } } g[f] = g[f].round(); } if (g.y || g.x) { this.fireEvent("change", [a.x + g.x, a.y + g.y]); } }, }); (function () { var a = function (c, b) { return c ? (typeOf(c) == "function" ? c(b) : b.get(c)) : ""; }; this.Tips = new Class({ Implements: [Events, Options], options: { onShow: function () { this.tip.setStyle("display", "block"); }, onHide: function () { this.tip.setStyle("display", "none"); }, title: "title", text: function (b) { return b.get("rel") || b.get("href"); }, showDelay: 100, hideDelay: 100, className: "tip-wrap", offset: { x: 16, y: 16 }, windowPadding: { x: 0, y: 0 }, fixed: false, waiAria: true, }, initialize: function () { var b = Array.link(arguments, { options: Type.isObject, elements: function (c) { return c != null; }, }); this.setOptions(b.options); if (b.elements) { this.attach(b.elements); } this.container = new Element("div", { class: "tip" }); if (this.options.id) { this.container.set("id", this.options.id); if (this.options.waiAria) { this.attachWaiAria(); } } }, toElement: function () { if (this.tip) { return this.tip; } this.tip = new Element("div", { class: this.options.className, styles: { position: "absolute", top: 0, left: 0 } }).adopt(new Element("div", { class: "tip-top" }), this.container, new Element("div", { class: "tip-bottom" })); return this.tip; }, attachWaiAria: function () { var b = this.options.id; this.container.set("role", "tooltip"); if (!this.waiAria) { this.waiAria = { show: function (c) { if (b) { c.set("aria-describedby", b); } this.container.set("aria-hidden", "false"); }, hide: function (c) { if (b) { c.erase("aria-describedby"); } this.container.set("aria-hidden", "true"); }, }; } this.addEvents(this.waiAria); }, detachWaiAria: function () { if (this.waiAria) { this.container.erase("role"); this.container.erase("aria-hidden"); this.removeEvents(this.waiAria); } }, attach: function (b) { $$(b).each(function (d) { var f = a(this.options.title, d), e = a(this.options.text, d); d.set("title", "").store("tip:native", f).retrieve("tip:title", f); d.retrieve("tip:text", e); this.fireEvent("attach", [d]); var c = ["enter", "leave"]; if (!this.options.fixed) { c.push("move"); } c.each(function (h) { var g = d.retrieve("tip:" + h); if (!g) { g = function (i) { this["element" + h.capitalize()].apply(this, [i, d]); }.bind(this); } d.store("tip:" + h, g).addEvent("mouse" + h, g); }, this); }, this); return this; }, detach: function (b) { $$(b).each(function (d) { ["enter", "leave", "move"].each(function (e) { d.removeEvent("mouse" + e, d.retrieve("tip:" + e)).eliminate("tip:" + e); }); this.fireEvent("detach", [d]); if (this.options.title == "title") { var c = d.retrieve("tip:native"); if (c) { d.set("title", c); } } }, this); return this; }, elementEnter: function (c, b) { clearTimeout(this.timer); this.timer = function () { this.container.empty(); ["title", "text"].each(function (e) { var d = b.retrieve("tip:" + e); var f = (this["_" + e + "Element"] = new Element("div", { class: "tip-" + e }).inject(this.container)); if (d) { this.fill(f, d); } }, this); this.show(b); this.position(this.options.fixed ? { page: b.getPosition() } : c); }.delay(this.options.showDelay, this); }, elementLeave: function (c, b) { clearTimeout(this.timer); this.timer = this.hide.delay(this.options.hideDelay, this, b); this.fireForParent(c, b); }, setTitle: function (b) { if (this._titleElement) { this._titleElement.empty(); this.fill(this._titleElement, b); } return this; }, setText: function (b) { if (this._textElement) { this._textElement.empty(); this.fill(this._textElement, b); } return this; }, fireForParent: function (c, b) { b = b.getParent(); if (!b || b == document.body) { return; } if (b.retrieve("tip:enter")) { b.fireEvent("mouseenter", c); } else { this.fireForParent(c, b); } }, elementMove: function (c, b) { this.position(c); }, position: function (f) { if (!this.tip) { document.id(this); } var c = window.getSize(), b = window.getScroll(), g = { x: this.tip.offsetWidth, y: this.tip.offsetHeight }, d = { x: "left", y: "top" }, e = { y: false, x2: false, y2: false, x: false }, h = {}; for (var i in d) { h[d[i]] = f.page[i] + this.options.offset[i]; if (h[d[i]] < 0) { e[i] = true; } if (h[d[i]] + g[i] - b[i] > c[i] - this.options.windowPadding[i]) { h[d[i]] = f.page[i] - this.options.offset[i] - g[i]; e[i + "2"] = true; } } this.fireEvent("bound", e); this.tip.setStyles(h); }, fill: function (b, c) { if (typeof c == "string") { b.set("html", c); } else { b.adopt(c); } }, show: function (b) { if (!this.tip) { document.id(this); } if (!this.tip.getParent()) { this.tip.inject(document.body); } this.fireEvent("show", [this.tip, b]); }, hide: function (b) { if (!this.tip) { document.id(this); } this.fireEvent("hide", [this.tip, b]); }, }); })(); (function () { var a = { json: JSON.decode }; Locale.Set.defineParser = function (b, c) { a[b] = c; }; Locale.Set.from = function (d, c) { if (instanceOf(d, Locale.Set)) { return d; } if (!c && typeOf(d) == "string") { c = "json"; } if (a[c]) { d = a[c](d); } var b = new Locale.Set(); b.sets = d.sets || {}; if (d.inherits) { b.inherits.locales = Array.mofrom(d.inherits.locales); b.inherits.sets = d.inherits.sets || {}; } return b; }; })(); Locale.define("ar", "Date", { dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M" }); Locale.define("ar", "FormValidator", { required: "هذا الحقل مطلوب.", minLength: "رجاءً إدخال {minLength} أحرف على الأقل (تم إدخال {length} أحرف).", maxLength: "الرجاء عدم إدخال أكثر من {maxLength} أحرف (تم إدخال {length} أحرف).", integer: "الرجاء إدخال عدد صحيح في هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.", numeric: 'الرجاء إدخال قيم رقمية في هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").', digits: "الرجاء أستخدام قيم رقمية وعلامات ترقيمية فقط في هذا الحقل (مثال, رقم هاتف مع نقطة أو شحطة)", alpha: "الرجاء أستخدام أحرف فقط (ا-ي) في هذا الحقل. أي فراغات أو علامات غير مسموحة.", alphanum: "الرجاء أستخدام أحرف فقط (ا-ي) أو أرقام (0-9) فقط في هذا الحقل. أي فراغات أو علامات غير مسموحة.", dateSuchAs: "الرجاء إدخال تاريخ صحيح كالتالي {date}", dateInFormatMDY: "الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)", email: "الرجاء إدخال بريد إلكتروني صحيح.", url: "الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.example.com", currencyDollar: "الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$", oneRequired: "الرجاء إدخال قيمة في أحد هذه الحقول على الأقل.", errorPrefix: "خطأ: ", warningPrefix: "تحذير: ", }); Locale.define("ca-CA", "Date", { months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juli", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"], months_abbr: ["gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des."], days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"], days_abbr: ["dg", "dl", "dt", "dc", "dj", "dv", "ds"], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 0, ordinal: "", lessThanMinuteAgo: "fa menys d`un minut", minuteAgo: "fa un minut", minutesAgo: "fa {delta} minuts", hourAgo: "fa un hora", hoursAgo: "fa unes {delta} hores", dayAgo: "fa un dia", daysAgo: "fa {delta} dies", lessThanMinuteUntil: "menys d`un minut des d`ara", minuteUntil: "un minut des d`ara", minutesUntil: "{delta} minuts des d`ara", hourUntil: "un hora des d`ara", hoursUntil: "unes {delta} hores des d`ara", dayUntil: "1 dia des d`ara", daysUntil: "{delta} dies des d`ara", }); Locale.define("ca-CA", "FormValidator", { required: "Aquest camp es obligatori.", minLength: "Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).", maxLength: "Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).", integer: "Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.", numeric: 'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").', digits: "Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).", alpha: "Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.", alphanum: "Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.", dateSuchAs: "Per favor introdueix una data valida com {date}", dateInFormatMDY: 'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")', email: 'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".', url: "Per favor introdueix una URL valida com http://www.example.com.", currencyDollar: "Per favor introdueix una quantitat valida de €. Per exemple €100,00 .", oneRequired: "Per favor introdueix alguna cosa per al menys una d´aquestes entrades.", errorPrefix: "Error: ", warningPrefix: "Avis: ", noSpace: "No poden haver espais en aquesta entrada.", reqChkByNode: "No hi han elements seleccionats.", requiredChk: "Aquest camp es obligatori.", reqChkByName: "Per favor selecciona una {label}.", match: "Aquest camp necessita coincidir amb el camp {matchName}", startDate: "la data de inici", endDate: "la data de fi", currendDate: "la data actual", afterDate: "La data deu ser igual o posterior a {label}.", beforeDate: "La data deu ser igual o anterior a {label}.", startMonth: "Per favor selecciona un mes d´orige", sameMonth: "Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra.", }); (function () { var a = function (e, d, c, b) { if (e == 1) { return d; } else { if (e == 2 || e == 3 || e == 4) { return c; } else { return b; } } }; Locale.define("cs-CZ", "Date", { months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"], months_abbr: ["ledna", "února", "března", "dubna", "května", "června", "července", "srpna", "září", "října", "listopadu", "prosince"], days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"], days_abbr: ["ne", "po", "út", "st", "čt", "pá", "so"], dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H:%M", AM: "dop.", PM: "odp.", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "před chvílí", minuteAgo: "přibližně před minutou", minutesAgo: function (b) { return "před {delta} " + a(b, "minutou", "minutami", "minutami"); }, hourAgo: "přibližně před hodinou", hoursAgo: function (b) { return "před {delta} " + a(b, "hodinou", "hodinami", "hodinami"); }, dayAgo: "před dnem", daysAgo: function (b) { return "před {delta} " + a(b, "dnem", "dny", "dny"); }, weekAgo: "před týdnem", weeksAgo: function (b) { return "před {delta} " + a(b, "týdnem", "týdny", "týdny"); }, monthAgo: "před měsícem", monthsAgo: function (b) { return "před {delta} " + a(b, "měsícem", "měsíci", "měsíci"); }, yearAgo: "před rokem", yearsAgo: function (b) { return "před {delta} " + a(b, "rokem", "lety", "lety"); }, lessThanMinuteUntil: "za chvíli", minuteUntil: "přibližně za minutu", minutesUntil: function (b) { return "za {delta} " + a(b, "minutu", "minuty", "minut"); }, hourUntil: "přibližně za hodinu", hoursUntil: function (b) { return "za {delta} " + a(b, "hodinu", "hodiny", "hodin"); }, dayUntil: "za den", daysUntil: function (b) { return "za {delta} " + a(b, "den", "dny", "dnů"); }, weekUntil: "za týden", weeksUntil: function (b) { return "za {delta} " + a(b, "týden", "týdny", "týdnů"); }, monthUntil: "za měsíc", monthsUntil: function (b) { return "za {delta} " + a(b, "měsíc", "měsíce", "měsíců"); }, yearUntil: "za rok", yearsUntil: function (b) { return "za {delta} " + a(b, "rok", "roky", "let"); }, }); })(); Locale.define("cs-CZ", "FormValidator", { required: "Tato položka je povinná.", minLength: "Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).", maxLength: "Zadejte prosím méně než {maxLength} znaků (nápsáno {length} znaků).", integer: "Zadejte prosím celé číslo. Desetinná čísla (např. 1.25) nejsou povolena.", numeric: 'Zadejte jen číselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").', digits: "Zadejte prosím pouze čísla a interpunkční znaménka(například telefonní číslo s pomlčkami nebo tečkami je povoleno).", alpha: "Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.", alphanum: "Zadejte prosím pouze písmena (a-z) nebo číslice (0-9). Mezery nebo jiné znaky nejsou povoleny.", dateSuchAs: "Zadejte prosím platné datum jako {date}", dateInFormatMDY: 'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")', email: 'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".', url: "Zadejte prosím platnou URL adresu jako http://www.example.com.", currencyDollar: "Zadejte prosím platnou částku. Například $100.00.", oneRequired: "Zadejte prosím alespoň jednu hodnotu pro tyto položky.", errorPrefix: "Chyba: ", warningPrefix: "Upozornění: ", noSpace: "V této položce nejsou povoleny mezery", reqChkByNode: "Nejsou vybrány žádné položky.", requiredChk: "Tato položka je vyžadována.", reqChkByName: "Prosím vyberte {label}.", match: "Tato položka se musí shodovat s položkou {matchName}", startDate: "datum zahájení", endDate: "datum ukončení", currendDate: "aktuální datum", afterDate: "Datum by mělo být stejné nebo větší než {label}.", beforeDate: "Datum by mělo být stejné nebo menší než {label}.", startMonth: "Vyberte počáteční měsíc.", sameMonth: "Tyto dva datumy musí být ve stejném měsíci - změňte jeden z nich.", creditcard: "Zadané číslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} čísel.", }); Locale.define("da-DK", "Date", { months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"], months_abbr: ["jan.", "feb.", "mar.", "apr.", "maj.", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec."], days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"], days_abbr: ["søn", "man", "tir", "ons", "tor", "fre", "lør"], dateOrder: ["date", "month", "year"], shortDate: "%d-%m-%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "mindre end et minut siden", minuteAgo: "omkring et minut siden", minutesAgo: "{delta} minutter siden", hourAgo: "omkring en time siden", hoursAgo: "omkring {delta} timer siden", dayAgo: "1 dag siden", daysAgo: "{delta} dage siden", weekAgo: "1 uge siden", weeksAgo: "{delta} uger siden", monthAgo: "1 måned siden", monthsAgo: "{delta} måneder siden", yearAgo: "1 år siden", yearsAgo: "{delta} år siden", lessThanMinuteUntil: "mindre end et minut fra nu", minuteUntil: "omkring et minut fra nu", minutesUntil: "{delta} minutter fra nu", hourUntil: "omkring en time fra nu", hoursUntil: "omkring {delta} timer fra nu", dayUntil: "1 dag fra nu", daysUntil: "{delta} dage fra nu", weekUntil: "1 uge fra nu", weeksUntil: "{delta} uger fra nu", monthUntil: "1 måned fra nu", monthsUntil: "{delta} måneder fra nu", yearUntil: "1 år fra nu", yearsUntil: "{delta} år fra nu", }); Locale.define("da-DK", "FormValidator", { required: "Feltet skal udfyldes.", minLength: "Skriv mindst {minLength} tegn (du skrev {length} tegn).", maxLength: "Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).", integer: "Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.", numeric: 'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").', digits: "Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).", alpha: "Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.", alphanum: "Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.", dateSuchAs: "Skriv en gyldig dato som {date}", dateInFormatMDY: 'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")', email: 'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".', url: 'Skriv en gyldig URL adresse. F.eks "http://www.example.com".', currencyDollar: "Skriv et gldigt beløb. F.eks Kr.100.00 .", oneRequired: "Et eller flere af felterne i denne formular skal udfyldes.", errorPrefix: "Fejl: ", warningPrefix: "Advarsel: ", noSpace: "Der må ikke benyttes mellemrum i dette felt.", reqChkByNode: "Foretag et valg.", requiredChk: "Dette felt skal udfyldes.", reqChkByName: "Vælg en {label}.", match: "Dette felt skal matche {matchName} feltet", startDate: "start dato", endDate: "slut dato", currendDate: "dags dato", afterDate: "Datoen skal være større end eller lig med {label}.", beforeDate: "Datoen skal være mindre end eller lig med {label}.", startMonth: "Vælg en start måned", sameMonth: "De valgte datoer skal være i samme måned - skift en af dem.", }); Locale.define("de-DE", "Date", { months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], months_abbr: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], days_abbr: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H:%M", AM: "vormittags", PM: "nachmittags", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "vor weniger als einer Minute", minuteAgo: "vor einer Minute", minutesAgo: "vor {delta} Minuten", hourAgo: "vor einer Stunde", hoursAgo: "vor {delta} Stunden", dayAgo: "vor einem Tag", daysAgo: "vor {delta} Tagen", weekAgo: "vor einer Woche", weeksAgo: "vor {delta} Wochen", monthAgo: "vor einem Monat", monthsAgo: "vor {delta} Monaten", yearAgo: "vor einem Jahr", yearsAgo: "vor {delta} Jahren", lessThanMinuteUntil: "in weniger als einer Minute", minuteUntil: "in einer Minute", minutesUntil: "in {delta} Minuten", hourUntil: "in ca. einer Stunde", hoursUntil: "in ca. {delta} Stunden", dayUntil: "in einem Tag", daysUntil: "in {delta} Tagen", weekUntil: "in einer Woche", weeksUntil: "in {delta} Wochen", monthUntil: "in einem Monat", monthsUntil: "in {delta} Monaten", yearUntil: "in einem Jahr", yearsUntil: "in {delta} Jahren", }); Locale.define("de-CH").inherit("de-DE", "Date"); Locale.define("de-CH", "FormValidator", { required: "Dieses Feld ist obligatorisch.", minLength: "Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", maxLength: "Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", integer: "Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.", numeric: "Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").", digits: "Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).", alpha: "Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.", alphanum: "Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.", dateSuchAs: "Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}", dateInFormatMDY: "Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")", email: "Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "maria@bernasconi.ch".", url: "Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.example.com.", currencyDollar: "Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .", oneRequired: "Machen Sie für mindestens eines der Eingabefelder einen Eintrag.", errorPrefix: "Fehler: ", warningPrefix: "Warnung: ", noSpace: "In diesem Eingabefeld darf kein Leerzeichen sein.", reqChkByNode: "Es wurden keine Elemente gewählt.", requiredChk: "Dieses Feld ist obligatorisch.", reqChkByName: "Bitte wählen Sie ein {label}.", match: "Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.", startDate: "Das Anfangsdatum", endDate: "Das Enddatum", currendDate: "Das aktuelle Datum", afterDate: "Das Datum sollte zur gleichen Zeit oder später sein {label}.", beforeDate: "Das Datum sollte zur gleichen Zeit oder früher sein {label}.", startMonth: "Wählen Sie bitte einen Anfangsmonat", sameMonth: "Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.", creditcard: "Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.", }); Locale.define("de-DE", "FormValidator", { required: "Dieses Eingabefeld muss ausgefüllt werden.", minLength: "Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).", maxLength: "Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", integer: 'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.', numeric: 'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.', digits: "Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).", alpha: "Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.", alphanum: "Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.", dateSuchAs: 'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").', dateInFormatMDY: 'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").', email: 'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").', url: 'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").', currencyDollar: "Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).", oneRequired: "Bitte füllen Sie mindestens ein Eingabefeld aus.", errorPrefix: "Fehler: ", warningPrefix: "Warnung: ", noSpace: "Es darf kein Leerzeichen in diesem Eingabefeld sein.", reqChkByNode: "Es wurden keine Elemente gewählt.", requiredChk: "Dieses Feld muss ausgefüllt werden.", reqChkByName: "Bitte wählen Sie ein {label}.", match: "Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.", startDate: "Das Anfangsdatum", endDate: "Das Enddatum", currendDate: "Das aktuelle Datum", afterDate: "Das Datum sollte zur gleichen Zeit oder später sein als {label}.", beforeDate: "Das Datum sollte zur gleichen Zeit oder früher sein als {label}.", startMonth: "Wählen Sie bitte einen Anfangsmonat", sameMonth: "Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.", creditcard: "Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.", }); Locale.define("EU", "Number", { decimal: ",", group: ".", currency: { prefix: "€ " } }); Locale.define("de-DE").inherit("EU", "Number"); Locale.define("en-GB", "Date", { dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M" }).inherit("en-US", "Date"); Locale.define("es-ES", "Date", { months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], months_abbr: ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"], days_abbr: ["dom", "lun", "mar", "mié", "juv", "vie", "sáb"], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "hace menos de un minuto", minuteAgo: "hace un minuto", minutesAgo: "hace {delta} minutos", hourAgo: "hace una hora", hoursAgo: "hace unas {delta} horas", dayAgo: "hace un día", daysAgo: "hace {delta} días", weekAgo: "hace una semana", weeksAgo: "hace unas {delta} semanas", monthAgo: "hace un mes", monthsAgo: "hace {delta} meses", yearAgo: "hace un año", yearsAgo: "hace {delta} años", lessThanMinuteUntil: "menos de un minuto desde ahora", minuteUntil: "un minuto desde ahora", minutesUntil: "{delta} minutos desde ahora", hourUntil: "una hora desde ahora", hoursUntil: "unas {delta} horas desde ahora", dayUntil: "un día desde ahora", daysUntil: "{delta} días desde ahora", weekUntil: "una semana desde ahora", weeksUntil: "unas {delta} semanas desde ahora", monthUntil: "un mes desde ahora", monthsUntil: "{delta} meses desde ahora", yearUntil: "un año desde ahora", yearsUntil: "{delta} años desde ahora", }); Locale.define("es-AR").inherit("es-ES", "Date"); Locale.define("es-AR", "FormValidator", { required: "Este campo es obligatorio.", minLength: "Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).", maxLength: "Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).", integer: "Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.", numeric: 'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").', digits: "Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).", alpha: "Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.", alphanum: "Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.", dateSuchAs: "Por favor ingrese una fecha válida como {date}", dateInFormatMDY: 'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")', email: 'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".', url: "Por favor ingrese una URL válida como http://www.example.com.", currencyDollar: "Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .", oneRequired: "Por favor ingrese algo para por lo menos una de estas entradas.", errorPrefix: "Error: ", warningPrefix: "Advertencia: ", noSpace: "No se permiten espacios en este campo.", reqChkByNode: "No hay elementos seleccionados.", requiredChk: "Este campo es obligatorio.", reqChkByName: "Por favor selecciona una {label}.", match: "Este campo necesita coincidir con el campo {matchName}", startDate: "la fecha de inicio", endDate: "la fecha de fin", currendDate: "la fecha actual", afterDate: "La fecha debe ser igual o posterior a {label}.", beforeDate: "La fecha debe ser igual o anterior a {label}.", startMonth: "Por favor selecciona un mes de origen", sameMonth: "Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.", }); Locale.define("es-ES", "FormValidator", { required: "Este campo es obligatorio.", minLength: "Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).", maxLength: "Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).", integer: "Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.", numeric: 'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").', digits: "Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).", alpha: "Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.", alphanum: "Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.", dateSuchAs: "Por favor introduce una fecha válida como {date}", dateInFormatMDY: 'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")', email: 'Por favor, introduce una dirección de email válida. Por ejemplo, "fred@domain.com".', url: "Por favor introduce una URL válida como http://www.example.com.", currencyDollar: "Por favor introduce una cantidad válida de €. Por ejemplo €100,00 .", oneRequired: "Por favor introduce algo para por lo menos una de estas entradas.", errorPrefix: "Error: ", warningPrefix: "Aviso: ", noSpace: "No pueden haber espacios en esta entrada.", reqChkByNode: "No hay elementos seleccionados.", requiredChk: "Este campo es obligatorio.", reqChkByName: "Por favor selecciona una {label}.", match: "Este campo necesita coincidir con el campo {matchName}", startDate: "la fecha de inicio", endDate: "la fecha de fin", currendDate: "la fecha actual", afterDate: "La fecha debe ser igual o posterior a {label}.", beforeDate: "La fecha debe ser igual o anterior a {label}.", startMonth: "Por favor selecciona un mes de origen", sameMonth: "Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.", }); Locale.define("et-EE", "Date", { months: ["jaanuar", "veebruar", "märts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember"], months_abbr: ["jaan", "veebr", "märts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets"], days: ["pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev"], days_abbr: ["pühap", "esmasp", "teisip", "kolmap", "neljap", "reede", "laup"], dateOrder: ["month", "date", "year"], shortDate: "%m.%d.%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "vähem kui minut aega tagasi", minuteAgo: "umbes minut aega tagasi", minutesAgo: "{delta} minutit tagasi", hourAgo: "umbes tund aega tagasi", hoursAgo: "umbes {delta} tundi tagasi", dayAgo: "1 päev tagasi", daysAgo: "{delta} päeva tagasi", weekAgo: "1 nädal tagasi", weeksAgo: "{delta} nädalat tagasi", monthAgo: "1 kuu tagasi", monthsAgo: "{delta} kuud tagasi", yearAgo: "1 aasta tagasi", yearsAgo: "{delta} aastat tagasi", lessThanMinuteUntil: "vähem kui minuti aja pärast", minuteUntil: "umbes minuti aja pärast", minutesUntil: "{delta} minuti pärast", hourUntil: "umbes tunni aja pärast", hoursUntil: "umbes {delta} tunni pärast", dayUntil: "1 päeva pärast", daysUntil: "{delta} päeva pärast", weekUntil: "1 nädala pärast", weeksUntil: "{delta} nädala pärast", monthUntil: "1 kuu pärast", monthsUntil: "{delta} kuu pärast", yearUntil: "1 aasta pärast", yearsUntil: "{delta} aasta pärast", }); Locale.define("et-EE", "FormValidator", { required: "Väli peab olema täidetud.", minLength: "Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).", maxLength: "Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).", integer: "Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.", numeric: 'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").', digits: "Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).", alpha: "Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.", alphanum: "Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.", dateSuchAs: "Palun sisestage kehtiv kuupäev kujul {date}", dateInFormatMDY: 'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").', email: 'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").', url: "Palun sisestage kehtiv URL (näiteks: http://www.example.com).", currencyDollar: "Palun sisestage kehtiv $ summa (näiteks: $100.00).", oneRequired: "Palun sisestage midagi vähemalt ühele antud väljadest.", errorPrefix: "Viga: ", warningPrefix: "Hoiatus: ", noSpace: "Väli ei tohi sisaldada tühikuid.", reqChkByNode: "Ükski väljadest pole valitud.", requiredChk: "Välja täitmine on vajalik.", reqChkByName: "Palun valige üks {label}.", match: "Väli peab sobima {matchName} väljaga", startDate: "algkuupäev", endDate: "lõppkuupäev", currendDate: "praegune kuupäev", afterDate: "Kuupäev peab olema võrdne või pärast {label}.", beforeDate: "Kuupäev peab olema võrdne või enne {label}.", startMonth: "Palun valige algkuupäev.", sameMonth: "Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva.", }); Locale.define("fa", "Date", { months: ["ژانویه", "فوریه", "مارس", "آپریل", "مه", "ژوئن", "ژوئیه", "آگوست", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"], months_abbr: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], days: ["یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"], days_abbr: ["ي", "د", "س", "چ", "پ", "ج", "ش"], dateOrder: ["month", "date", "year"], shortDate: "%m/%d/%Y", shortTime: "%I:%M%p", AM: "ق.ظ", PM: "ب.ظ", ordinal: "ام", lessThanMinuteAgo: "کمتر از یک دقیقه پیش", minuteAgo: "حدود یک دقیقه پیش", minutesAgo: "{delta} دقیقه پیش", hourAgo: "حدود یک ساعت پیش", hoursAgo: "حدود {delta} ساعت پیش", dayAgo: "1 روز پیش", daysAgo: "{delta} روز پیش", weekAgo: "1 هفته پیش", weeksAgo: "{delta} هفته پیش", monthAgo: "1 ماه پیش", monthsAgo: "{delta} ماه پیش", yearAgo: "1 سال پیش", yearsAgo: "{delta} سال پیش", lessThanMinuteUntil: "کمتر از یک دقیقه از حالا", minuteUntil: "حدود یک دقیقه از حالا", minutesUntil: "{delta} دقیقه از حالا", hourUntil: "حدود یک ساعت از حالا", hoursUntil: "حدود {delta} ساعت از حالا", dayUntil: "1 روز از حالا", daysUntil: "{delta} روز از حالا", weekUntil: "1 هفته از حالا", weeksUntil: "{delta} هفته از حالا", monthUntil: "1 ماه از حالا", monthsUntil: "{delta} ماه از حالا", yearUntil: "1 سال از حالا", yearsUntil: "{delta} سال از حالا", }); Locale.define("fa", "FormValidator", { required: "این فیلد الزامی است.", minLength: "شما باید حداقل {minLength} حرف وارد کنید ({length} حرف وارد کرده اید).", maxLength: "لطفا حداکثر {maxLength} حرف وارد کنید (شما {length} حرف وارد کرده اید).", integer: "لطفا از عدد صحیح استفاده کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.", numeric: 'لطفا فقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").', digits: "لطفا فقط از اعداد و علامتها در این فیلد استفاده کنید (برای مثال شماره تلفن با خط تیره و نقطه قابل قبول است).", alpha: "لطفا فقط از حروف الفباء برای این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.", alphanum: "لطفا فقط از حروف الفباء و اعداد در این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.", dateSuchAs: "لطفا یک تاریخ معتبر مانند {date} وارد کنید.", dateInFormatMDY: 'لطفا یک تاریخ معتبر به شکل MM/DD/YYYY وارد کنید (مانند "12/31/1999").', email: 'لطفا یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".', url: "لطفا یک URL معتبر مانند http://www.example.com وارد کنید.", currencyDollar: "لطفا یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .", oneRequired: "لطفا حداقل یکی از فیلدها را پر کنید.", errorPrefix: "خطا: ", warningPrefix: "هشدار: ", noSpace: "استفاده از فاصله در این بخش مجاز نیست.", reqChkByNode: "موردی انتخاب نشده است.", requiredChk: "این فیلد الزامی است.", reqChkByName: "لطفا یک {label} را انتخاب کنید.", match: "این فیلد باید با فیلد {matchName} مطابقت داشته باشد.", startDate: "تاریخ شروع", endDate: "تاریخ پایان", currendDate: "تاریخ کنونی", afterDate: "تاریخ میبایست برابر یا بعد از {label} باشد", beforeDate: "تاریخ میبایست برابر یا قبل از {label} باشد", startMonth: "لطفا ماه شروع را انتخاب کنید", sameMonth: "این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.", creditcard: "شماره کارت اعتباری که وارد کرده اید معتبر نیست. لطفا شماره را بررسی کنید و مجددا تلاش کنید. {length} رقم وارد شده است.", }); Locale.define("fi-FI", "Date", { months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], months_abbr: ["tammik.", "helmik.", "maalisk.", "huhtik.", "toukok.", "kesäk.", "heinäk.", "elok.", "syysk.", "lokak.", "marrask.", "jouluk."], days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], days_abbr: ["su", "ma", "ti", "ke", "to", "pe", "la"], dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "vajaa minuutti sitten", minuteAgo: "noin minuutti sitten", minutesAgo: "{delta} minuuttia sitten", hourAgo: "noin tunti sitten", hoursAgo: "noin {delta} tuntia sitten", dayAgo: "päivä sitten", daysAgo: "{delta} päivää sitten", weekAgo: "viikko sitten", weeksAgo: "{delta} viikkoa sitten", monthAgo: "kuukausi sitten", monthsAgo: "{delta} kuukautta sitten", yearAgo: "vuosi sitten", yearsAgo: "{delta} vuotta sitten", lessThanMinuteUntil: "vajaan minuutin kuluttua", minuteUntil: "noin minuutin kuluttua", minutesUntil: "{delta} minuutin kuluttua", hourUntil: "noin tunnin kuluttua", hoursUntil: "noin {delta} tunnin kuluttua", dayUntil: "päivän kuluttua", daysUntil: "{delta} päivän kuluttua", weekUntil: "viikon kuluttua", weeksUntil: "{delta} viikon kuluttua", monthUntil: "kuukauden kuluttua", monthsUntil: "{delta} kuukauden kuluttua", yearUntil: "vuoden kuluttua", yearsUntil: "{delta} vuoden kuluttua", }); Locale.define("fi-FI", "FormValidator", { required: "Tämä kenttä on pakollinen.", minLength: "Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).", maxLength: "Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).", integer: "Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.", numeric: 'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").', digits: "Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).", alpha: "Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.", alphanum: "Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.", dateSuchAs: "Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}", dateInFormatMDY: 'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")', email: 'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").', url: "Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.", currencyDollar: "Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .", oneRequired: "Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.", errorPrefix: "Virhe: ", warningPrefix: "Varoitus: ", noSpace: "Tässä syötteessä ei voi olla välilyöntejä", reqChkByNode: "Ei valintoja.", requiredChk: "Tämä kenttä on pakollinen.", reqChkByName: "Ole hyvä ja valitse {label}.", match: "Tämän kentän tulee vastata kenttää {matchName}", startDate: "alkupäivämäärä", endDate: "loppupäivämäärä", currendDate: "nykyinen päivämäärä", afterDate: "Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.", beforeDate: "Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.", startMonth: "Ole hyvä ja valitse aloituskuukausi", sameMonth: "Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.", creditcard: "Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty.", }); Locale.define("fi-FI", "Number", { group: " " }).inherit("EU", "Number"); Locale.define("fr-FR", "Date", { months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], months_abbr: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"], days_abbr: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: function (a) { return a > 1 ? "" : "er"; }, lessThanMinuteAgo: "il y a moins d'une minute", minuteAgo: "il y a une minute", minutesAgo: "il y a {delta} minutes", hourAgo: "il y a une heure", hoursAgo: "il y a {delta} heures", dayAgo: "il y a un jour", daysAgo: "il y a {delta} jours", weekAgo: "il y a une semaine", weeksAgo: "il y a {delta} semaines", monthAgo: "il y a 1 mois", monthsAgo: "il y a {delta} mois", yearthAgo: "il y a 1 an", yearsAgo: "il y a {delta} ans", lessThanMinuteUntil: "dans moins d'une minute", minuteUntil: "dans une minute", minutesUntil: "dans {delta} minutes", hourUntil: "dans une heure", hoursUntil: "dans {delta} heures", dayUntil: "dans un jour", daysUntil: "dans {delta} jours", weekUntil: "dans 1 semaine", weeksUntil: "dans {delta} semaines", monthUntil: "dans 1 mois", monthsUntil: "dans {delta} mois", yearUntil: "dans 1 an", yearsUntil: "dans {delta} ans", }); Locale.define("fr-FR", "FormValidator", { required: "Ce champ est obligatoire.", length: "Veuillez saisir {length} caractère(s) (vous avez saisi {elLength} caractère(s)", minLength: "Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).", maxLength: "Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).", integer: 'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.', numeric: 'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").', digits: "Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).", alpha: "Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.", alphanum: "Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.", dateSuchAs: "Veuillez saisir une date correcte comme {date}", dateInFormatMDY: 'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").', email: 'Veuillez saisir une adresse de courrier électronique. Par example "fred@domaine.com".', url: "Veuillez saisir une URL, comme http://www.example.com.", currencyDollar: "Veuillez saisir une quantité correcte. Par example 100,00€.", oneRequired: "Veuillez sélectionner au moins une de ces options.", errorPrefix: "Erreur : ", warningPrefix: "Attention : ", noSpace: "Ce champ n'accepte pas les espaces.", reqChkByNode: "Aucun élément n'est sélectionné.", requiredChk: "Ce champ est obligatoire.", reqChkByName: "Veuillez sélectionner un(e) {label}.", match: "Ce champ doit correspondre avec le champ {matchName}.", startDate: "date de début", endDate: "date de fin", currendDate: "date actuelle", afterDate: "La date doit être identique ou postérieure à {label}.", beforeDate: "La date doit être identique ou antérieure à {label}.", startMonth: "Veuillez sélectionner un mois de début.", sameMonth: "Ces deux dates doivent être dans le même mois - vous devez en modifier une.", creditcard: "Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s).", }); Locale.define("fr-FR", "Number", { group: " " }).inherit("EU", "Number"); Locale.define("he-IL", "Date", { months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], months_abbr: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"], days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"], days_abbr: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת"], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 0, ordinal: "", lessThanMinuteAgo: "לפני פחות מדקה", minuteAgo: "לפני כדקה", minutesAgo: "לפני {delta} דקות", hourAgo: "לפני כשעה", hoursAgo: "לפני {delta} שעות", dayAgo: "לפני יום", daysAgo: "לפני {delta} ימים", weekAgo: "לפני שבוע", weeksAgo: "לפני {delta} שבועות", monthAgo: "לפני חודש", monthsAgo: "לפני {delta} חודשים", yearAgo: "לפני שנה", yearsAgo: "לפני {delta} שנים", lessThanMinuteUntil: "בעוד פחות מדקה", minuteUntil: "בעוד כדקה", minutesUntil: "בעוד {delta} דקות", hourUntil: "בעוד כשעה", hoursUntil: "בעוד {delta} שעות", dayUntil: "בעוד יום", daysUntil: "בעוד {delta} ימים", weekUntil: "בעוד שבוע", weeksUntil: "בעוד {delta} שבועות", monthUntil: "בעוד חודש", monthsUntil: "בעוד {delta} חודשים", yearUntil: "בעוד שנה", yearsUntil: "בעוד {delta} שנים", }); Locale.define("he-IL", "FormValidator", { required: "נא למלא שדה זה.", minLength: "נא להזין לפחות {minLength} תווים (הזנת {length} תווים).", maxLength: "נא להזין עד {maxLength} תווים (הזנת {length} תווים).", integer: "נא להזין מספר שלם לשדה זה. מספרים עשרוניים (כמו 1.25) אינם חוקיים.", numeric: 'נא להזין ערך מספרי בלבד בשדה זה (כמו "1", "1.1", "-1" או "-1.1").', digits: "נא להזין רק ספרות וסימני הפרדה בשדה זה (למשל, מספר טלפון עם מקפים או נקודות הוא חוקי).", alpha: "נא להזין רק אותיות באנגלית (a-z) בשדה זה. רווחים או תווים אחרים אינם חוקיים.", alphanum: "נא להזין רק אותריות באנגלית (a-z) או ספרות (0-9) בשדה זה. אווחרים או תווים אחרים אינם חוקיים.", dateSuchAs: "נא להזין תאריך חוקי, כמו {date}", dateInFormatMDY: 'נא להזין תאריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")', email: 'נא להזין כתובת אימייל חוקית. לדוגמה: "fred@domain.com".', url: "נא להזין כתובת אתר חוקית, כמו http://www.example.com.", currencyDollar: "נא להזין סכום דולרי חוקי. לדוגמה $100.00.", oneRequired: "נא לבחור לפחות בשדה אחד.", errorPrefix: "שגיאה: ", warningPrefix: "אזהרה: ", noSpace: "אין להזין רווחים בשדה זה.", reqChkByNode: "נא לבחור אחת מהאפשרויות.", requiredChk: "שדה זה נדרש.", reqChkByName: "נא לבחור {label}.", match: "שדה זה צריך להתאים לשדה {matchName}", startDate: "תאריך ההתחלה", endDate: "תאריך הסיום", currendDate: "התאריך הנוכחי", afterDate: "התאריך צריך להיות זהה או אחרי {label}.", beforeDate: "התאריך צריך להיות זהה או לפני {label}.", startMonth: "נא לבחור חודש התחלה", sameMonth: "שני תאריכים אלה צריכים להיות באותו חודש - נא לשנות אחד התאריכים.", creditcard: "מספר כרטיס האשראי שהוזן אינו חוקי. נא לבדוק שנית. הוזנו {length} ספרות.", }); Locale.define("he-IL", "Number", { decimal: ".", group: ",", currency: { suffix: " ₪" } }); Locale.define("hu-HU", "Date", { months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], months_abbr: ["jan.", "febr.", "márc.", "ápr.", "máj.", "jún.", "júl.", "aug.", "szept.", "okt.", "nov.", "dec."], days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"], days_abbr: ["V", "H", "K", "Sze", "Cs", "P", "Szo"], dateOrder: ["year", "month", "date"], shortDate: "%Y.%m.%d.", shortTime: "%I:%M", AM: "de.", PM: "du.", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "alig egy perce", minuteAgo: "egy perce", minutesAgo: "{delta} perce", hourAgo: "egy órája", hoursAgo: "{delta} órája", dayAgo: "1 napja", daysAgo: "{delta} napja", weekAgo: "1 hete", weeksAgo: "{delta} hete", monthAgo: "1 hónapja", monthsAgo: "{delta} hónapja", yearAgo: "1 éve", yearsAgo: "{delta} éve", lessThanMinuteUntil: "alig egy perc múlva", minuteUntil: "egy perc múlva", minutesUntil: "{delta} perc múlva", hourUntil: "egy óra múlva", hoursUntil: "{delta} óra múlva", dayUntil: "1 nap múlva", daysUntil: "{delta} nap múlva", weekUntil: "1 hét múlva", weeksUntil: "{delta} hét múlva", monthUntil: "1 hónap múlva", monthsUntil: "{delta} hónap múlva", yearUntil: "1 év múlva", yearsUntil: "{delta} év múlva", }); Locale.define("hu-HU", "FormValidator", { required: "A mező kitöltése kötelező.", minLength: "Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).", maxLength: "Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).", integer: "Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.", numeric: 'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").', digits: "Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötőjelek és/vagy perjelekkel).", alpha: "Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.", alphanum: "Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.", dateSuchAs: "Valós dátum megadása szükséges (pl. {date}).", dateInFormatMDY: 'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")', email: 'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").', url: "Valós URL megadása szükséges (pl. http://www.example.com).", currencyDollar: "Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).", oneRequired: "Az alábbi mezők legalább egyikének kitöltése kötelező.", errorPrefix: "Hiba: ", warningPrefix: "Figyelem: ", noSpace: "A mező nem tartalmazhat szóközöket.", reqChkByNode: "Nincs egyetlen kijelölt elem sem.", requiredChk: "A mező kitöltése kötelező.", reqChkByName: "Egy {label} kiválasztása szükséges.", match: "A mezőnek egyeznie kell a(z) {matchName} mezővel.", startDate: "a kezdet dátuma", endDate: "a vég dátuma", currendDate: "jelenlegi dátum", afterDate: "A dátum nem lehet kisebb, mint {label}.", beforeDate: "A dátum nem lehet nagyobb, mint {label}.", startMonth: "Kezdeti hónap megadása szükséges.", sameMonth: "A két dátumnak ugyanazon hónapban kell lennie.", creditcard: "A megadott bankkártyaszám nem valódi (megadva {length} számjegy).", }); Locale.define("it-IT", "Date", { months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], months_abbr: ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"], days_abbr: ["dom", "lun", "mar", "mer", "gio", "ven", "sab"], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H.%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "º", lessThanMinuteAgo: "meno di un minuto fa", minuteAgo: "circa un minuto fa", minutesAgo: "circa {delta} minuti fa", hourAgo: "circa un'ora fa", hoursAgo: "circa {delta} ore fa", dayAgo: "circa 1 giorno fa", daysAgo: "circa {delta} giorni fa", weekAgo: "una settimana fa", weeksAgo: "{delta} settimane fa", monthAgo: "un mese fa", monthsAgo: "{delta} mesi fa", yearAgo: "un anno fa", yearsAgo: "{delta} anni fa", lessThanMinuteUntil: "tra meno di un minuto", minuteUntil: "tra circa un minuto", minutesUntil: "tra circa {delta} minuti", hourUntil: "tra circa un'ora", hoursUntil: "tra circa {delta} ore", dayUntil: "tra circa un giorno", daysUntil: "tra circa {delta} giorni", weekUntil: "tra una settimana", weeksUntil: "tra {delta} settimane", monthUntil: "tra un mese", monthsUntil: "tra {delta} mesi", yearUntil: "tra un anno", yearsUntil: "tra {delta} anni", }); Locale.define("it-IT", "FormValidator", { required: "Il campo è obbligatorio.", minLength: "Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).", maxLength: "Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).", integer: "Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).", numeric: 'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").', digits: "Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.", alpha: "Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.", alphanum: "Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.", dateSuchAs: "Inserire una data valida del tipo {date}", dateInFormatMDY: 'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")', email: 'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".', url: 'Inserire un indirizzo valido. Per esempio "http://www.example.com".', currencyDollar: 'Inserire un importo valido. Per esempio "$100.00".', oneRequired: "Completare almeno uno dei campi richiesti.", errorPrefix: "Errore: ", warningPrefix: "Attenzione: ", noSpace: "Non sono consentiti spazi.", reqChkByNode: "Nessuna voce selezionata.", requiredChk: "Il campo è obbligatorio.", reqChkByName: "Selezionare un(a) {label}.", match: "Il valore deve corrispondere al campo {matchName}", startDate: "data d'inizio", endDate: "data di fine", currendDate: "data attuale", afterDate: "La data deve corrispondere o essere successiva al {label}.", beforeDate: "La data deve corrispondere o essere precedente al {label}.", startMonth: "Selezionare un mese d'inizio", sameMonth: "Le due date devono essere dello stesso mese - occorre modificarne una.", }); Locale.define("ja-JP", "Date", { months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], months_abbr: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], days: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"], days_abbr: ["日", "月", "火", "水", "木", "金", "土"], dateOrder: ["year", "month", "date"], shortDate: "%Y/%m/%d", shortTime: "%H:%M", AM: "午前", PM: "午後", firstDayOfWeek: 0, ordinal: "", lessThanMinuteAgo: "1分以内前", minuteAgo: "約1分前", minutesAgo: "約{delta}分前", hourAgo: "約1時間前", hoursAgo: "約{delta}時間前", dayAgo: "1日前", daysAgo: "{delta}日前", weekAgo: "1週間前", weeksAgo: "{delta}週間前", monthAgo: "1ヶ月前", monthsAgo: "{delta}ヶ月前", yearAgo: "1年前", yearsAgo: "{delta}年前", lessThanMinuteUntil: "今から約1分以内", minuteUntil: "今から約1分", minutesUntil: "今から約{delta}分", hourUntil: "今から約1時間", hoursUntil: "今から約{delta}時間", dayUntil: "今から1日間", daysUntil: "今から{delta}日間", weekUntil: "今から1週間", weeksUntil: "今から{delta}週間", monthUntil: "今から1ヶ月", monthsUntil: "今から{delta}ヶ月", yearUntil: "今から1年", yearsUntil: "今から{delta}年", }); Locale.define("ja-JP", "FormValidator", { required: "入力は必須です。", minLength: "入力文字数は{minLength}以上にしてください。({length}文字)", maxLength: "入力文字数は{maxLength}以下にしてください。({length}文字)", integer: "整数を入力してください。", numeric: '入力できるのは数値だけです。(例: "1", "1.1", "-1", "-1.1"....)', digits: "入力できるのは数値と句読記号です。 (例: -や+を含む電話番号など).", alpha: "入力できるのは半角英字だけです。それ以外の文字は入力できません。", alphanum: "入力できるのは半角英数字だけです。それ以外の文字は入力できません。", dateSuchAs: "有効な日付を入力してください。{date}", dateInFormatMDY: '日付の書式に誤りがあります。YYYY/MM/DD (i.e. "1999/12/31")', email: "メールアドレスに誤りがあります。", url: "URLアドレスに誤りがあります。", currencyDollar: "金額に誤りがあります。", oneRequired: "ひとつ以上入力してください。", errorPrefix: "エラー: ", warningPrefix: "警告: ", noSpace: "スペースは入力できません。", reqChkByNode: "選択されていません。", requiredChk: "この項目は必須です。", reqChkByName: "{label}を選択してください。", match: "{matchName}が入力されている場合必須です。", startDate: "開始日", endDate: "終了日", currendDate: "今日", afterDate: "{label}以降の日付にしてください。", beforeDate: "{label}以前の日付にしてください。", startMonth: "開始月を選択してください。", sameMonth: "日付が同一です。どちらかを変更してください。", }); Locale.define("ja-JP", "Number", { decimal: ".", group: ",", currency: { decimals: 0, prefix: "\\" } }); Locale.define("nl-NL", "Date", { months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], months_abbr: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], days_abbr: ["zo", "ma", "di", "wo", "do", "vr", "za"], dateOrder: ["date", "month", "year"], shortDate: "%d-%m-%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "e", lessThanMinuteAgo: "minder dan een minuut geleden", minuteAgo: "ongeveer een minuut geleden", minutesAgo: "{delta} minuten geleden", hourAgo: "ongeveer een uur geleden", hoursAgo: "ongeveer {delta} uur geleden", dayAgo: "een dag geleden", daysAgo: "{delta} dagen geleden", weekAgo: "een week geleden", weeksAgo: "{delta} weken geleden", monthAgo: "een maand geleden", monthsAgo: "{delta} maanden geleden", yearAgo: "een jaar geleden", yearsAgo: "{delta} jaar geleden", lessThanMinuteUntil: "over minder dan een minuut", minuteUntil: "over ongeveer een minuut", minutesUntil: "over {delta} minuten", hourUntil: "over ongeveer een uur", hoursUntil: "over {delta} uur", dayUntil: "over ongeveer een dag", daysUntil: "over {delta} dagen", weekUntil: "over een week", weeksUntil: "over {delta} weken", monthUntil: "over een maand", monthsUntil: "over {delta} maanden", yearUntil: "over een jaar", yearsUntil: "over {delta} jaar", }); Locale.define("nl-NL", "FormValidator", { required: "Dit veld is verplicht.", length: "Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).", minLength: "Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).", maxLength: "Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).", integer: "Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.", numeric: 'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").', digits: "Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).", alpha: "Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.", alphanum: "Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.", dateSuchAs: "Vul een geldige datum in, zoals {date}", dateInFormatMDY: 'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")', email: 'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".', url: "Vul een geldige URL in, zoals http://www.example.com.", currencyDollar: "Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .", oneRequired: "Vul iets in bij in ieder geval een van deze velden.", warningPrefix: "Waarschuwing: ", errorPrefix: "Fout: ", noSpace: "Spaties zijn niet toegestaan in dit veld.", reqChkByNode: "Er zijn geen items geselecteerd.", requiredChk: "Dit veld is verplicht.", reqChkByName: "Selecteer een {label}.", match: "Dit veld moet overeen komen met het {matchName} veld", startDate: "de begin datum", endDate: "de eind datum", currendDate: "de huidige datum", afterDate: "De datum moet hetzelfde of na {label} zijn.", beforeDate: "De datum moet hetzelfde of voor {label} zijn.", startMonth: "Selecteer een begin maand", sameMonth: "Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.", creditcard: "Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld.", }); Locale.define("nl-NL").inherit("EU", "Number"); Locale.define("no-NO", "Date", { dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, lessThanMinuteAgo: "kortere enn et minutt siden", minuteAgo: "omtrent et minutt siden", minutesAgo: "{delta} minutter siden", hourAgo: "omtrent en time siden", hoursAgo: "omtrent {delta} timer siden", dayAgo: "{delta} dag siden", daysAgo: "{delta} dager siden", }); Locale.define("no-NO", "FormValidator", { required: "Dette feltet er pÃ¥krevd.", minLength: "Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).", maxLength: "Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).", integer: "Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.", numeric: 'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").', digits: "Vennligst bruk kun nummer og skilletegn i dette feltet.", alpha: "Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.", alphanum: "Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.", dateSuchAs: "Vennligst skriv inn en gyldig dato, som {date}", dateInFormatMDY: 'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")', email: 'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".', url: "Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.", currencyDollar: "Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .", oneRequired: "Vennligst fyll ut noe i minst ett av disse feltene.", errorPrefix: "Feil: ", warningPrefix: "Advarsel: ", }); Locale.define("pl-PL", "Date", { months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], months_abbr: ["sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru"], days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"], days_abbr: ["niedz.", "pon.", "wt.", "śr.", "czw.", "pt.", "sob."], dateOrder: ["year", "month", "date"], shortDate: "%Y-%m-%d", shortTime: "%H:%M", AM: "nad ranem", PM: "po południu", firstDayOfWeek: 1, ordinal: function (a) { return a > 3 && a < 21 ? "ty" : ["ty", "szy", "gi", "ci", "ty"][Math.min(a % 10, 4)]; }, lessThanMinuteAgo: "mniej niż minute temu", minuteAgo: "około minutę temu", minutesAgo: "{delta} minut temu", hourAgo: "około godzinę temu", hoursAgo: "około {delta} godzin temu", dayAgo: "Wczoraj", daysAgo: "{delta} dni temu", lessThanMinuteUntil: "za niecałą minutę", minuteUntil: "za około minutę", minutesUntil: "za {delta} minut", hourUntil: "za około godzinę", hoursUntil: "za około {delta} godzin", dayUntil: "za 1 dzień", daysUntil: "za {delta} dni", }); Locale.define("pl-PL", "FormValidator", { required: "To pole jest wymagane.", minLength: "Wymagane jest przynajmniej {minLength} znaków (wpisanych zostało tylko {length}).", maxLength: "Dozwolone jest nie więcej niż {maxLength} znaków (wpisanych zostało {length})", integer: "To pole wymaga liczb całych. Liczby dziesiętne (np. 1.25) są niedozwolone.", numeric: 'Prosimy używać tylko numerycznych wartości w tym polu (np. "1", "1.1", "-1" lub "-1.1").', digits: "Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykładu, przy numerze telefonu myślniki i kropki są dozwolone).", alpha: "Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki są niedozwolone.", alphanum: "Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki są niedozwolone.", dateSuchAs: "Prosimy podać prawidłową datę w formacie: {date}", dateInFormatMDY: 'Prosimy podać poprawną date w formacie DD.MM.RRRR (i.e. "12.01.2009")', email: 'Prosimy podać prawidłowy adres e-mail, np. "jan@domena.pl".', url: "Prosimy podać prawidłowy adres URL, np. http://www.example.com.", currencyDollar: "Prosimy podać prawidłową sumę w PLN. Dla przykładu: 100.00 PLN.", oneRequired: "Prosimy wypełnić chociaż jedno z pól.", errorPrefix: "Błąd: ", warningPrefix: "Uwaga: ", noSpace: "W tym polu nie mogą znajdować się spacje.", reqChkByNode: "Brak zaznaczonych elementów.", requiredChk: "To pole jest wymagane.", reqChkByName: "Prosimy wybrać z {label}.", match: "To pole musi być takie samo jak {matchName}", startDate: "data początkowa", endDate: "data końcowa", currendDate: "aktualna data", afterDate: "Podana data poinna być taka sama lub po {label}.", beforeDate: "Podana data poinna być taka sama lub przed {label}.", startMonth: "Prosimy wybrać początkowy miesiąc.", sameMonth: "Te dwie daty muszą być w zakresie tego samego miesiąca - wymagana jest zmiana któregoś z pól.", }); Locale.define("pt-PT", "Date", { months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], months_abbr: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], days: ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"], days_abbr: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], dateOrder: ["date", "month", "year"], shortDate: "%d-%m-%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "º", lessThanMinuteAgo: "há menos de um minuto", minuteAgo: "há cerca de um minuto", minutesAgo: "há {delta} minutos", hourAgo: "há cerca de uma hora", hoursAgo: "há cerca de {delta} horas", dayAgo: "há um dia", daysAgo: "há {delta} dias", weekAgo: "há uma semana", weeksAgo: "há {delta} semanas", monthAgo: "há um mês", monthsAgo: "há {delta} meses", yearAgo: "há um ano", yearsAgo: "há {delta} anos", lessThanMinuteUntil: "em menos de um minuto", minuteUntil: "em um minuto", minutesUntil: "em {delta} minutos", hourUntil: "em uma hora", hoursUntil: "em {delta} horas", dayUntil: "em um dia", daysUntil: "em {delta} dias", weekUntil: "em uma semana", weeksUntil: "em {delta} semanas", monthUntil: "em um mês", monthsUntil: "em {delta} meses", yearUntil: "em um ano", yearsUntil: "em {delta} anos", }); Locale.define("pt-BR", "Date", { shortDate: "%d/%m/%Y" }).inherit("pt-PT", "Date"); Locale.define("pt-BR", "FormValidator", { required: "Este campo é obrigatório.", minLength: "Digite pelo menos {minLength} caracteres (tamanho atual: {length}).", maxLength: "Não digite mais de {maxLength} caracteres (tamanho atual: {length}).", integer: "Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).", numeric: 'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").', digits: "Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).", alpha: "Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.", alphanum: "Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.", dateSuchAs: "Digite uma data válida, como {date}", dateInFormatMDY: 'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")', email: 'Digite um endereço de email válido. Por exemplo "nome@dominio.com".', url: "Digite uma URL válida. Exemplo: http://www.example.com.", currencyDollar: "Digite um valor em dinheiro válido. Exemplo: R$100,00 .", oneRequired: "Digite algo para pelo menos um desses campos.", errorPrefix: "Erro: ", warningPrefix: "Aviso: ", noSpace: "Não é possível digitar espaços neste campo.", reqChkByNode: "Não foi selecionado nenhum item.", requiredChk: "Este campo é obrigatório.", reqChkByName: "Por favor digite um {label}.", match: "Este campo deve ser igual ao campo {matchName}.", startDate: "a data inicial", endDate: "a data final", currendDate: "a data atual", afterDate: "A data deve ser igual ou posterior a {label}.", beforeDate: "A data deve ser igual ou anterior a {label}.", startMonth: "Por favor selecione uma data inicial.", sameMonth: "Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.", creditcard: "O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados.", }); Locale.define("pt-PT", "FormValidator", { required: "Este campo é necessário.", minLength: "Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).", maxLength: "Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).", integer: "Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.", numeric: 'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").', digits: "Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).", alpha: "Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.", alphanum: "Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.", dateSuchAs: "Digite uma data válida, como {date}", dateInFormatMDY: 'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")', email: 'Digite um endereço de email válido. Por exemplo "fred@domain.com".', url: "Digite uma URL válida, como http://www.example.com.", currencyDollar: "Digite um valor válido $. Por exemplo $ 100,00. ", oneRequired: "Digite algo para pelo menos um desses insumos.", errorPrefix: "Erro: ", warningPrefix: "Aviso: ", }); (function () { var a = function (h, e, d, g, b) { var c = h % 10, f = h % 100; if (c == 1 && f != 11) { return e; } else { if ((c == 2 || c == 3 || c == 4) && !(f == 12 || f == 13 || f == 14)) { return d; } else { if (c == 0 || c == 5 || c == 6 || c == 7 || c == 8 || c == 9 || f == 11 || f == 12 || f == 13 || f == 14) { return g; } else { return b; } } } }; Locale.define("ru-RU", "Date", { months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"], months_abbr: ["янв", "февр", "март", "апр", "май", "июнь", "июль", "авг", "сент", "окт", "нояб", "дек"], days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"], days_abbr: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H:%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "меньше минуты назад", minuteAgo: "минуту назад", minutesAgo: function (b) { return "{delta} " + a(b, "минуту", "минуты", "минут") + " назад"; }, hourAgo: "час назад", hoursAgo: function (b) { return "{delta} " + a(b, "час", "часа", "часов") + " назад"; }, dayAgo: "вчера", daysAgo: function (b) { return "{delta} " + a(b, "день", "дня", "дней") + " назад"; }, weekAgo: "неделю назад", weeksAgo: function (b) { return "{delta} " + a(b, "неделя", "недели", "недель") + " назад"; }, monthAgo: "месяц назад", monthsAgo: function (b) { return "{delta} " + a(b, "месяц", "месяца", "месецев") + " назад"; }, yearAgo: "год назад", yearsAgo: function (b) { return "{delta} " + a(b, "год", "года", "лет") + " назад"; }, lessThanMinuteUntil: "меньше чем через минуту", minuteUntil: "через минуту", minutesUntil: function (b) { return "через {delta} " + a(b, "час", "часа", "часов") + ""; }, hourUntil: "через час", hoursUntil: function (b) { return "через {delta} " + a(b, "час", "часа", "часов") + ""; }, dayUntil: "завтра", daysUntil: function (b) { return "через {delta} " + a(b, "день", "дня", "дней") + ""; }, weekUntil: "через неделю", weeksUntil: function (b) { return "через {delta} " + a(b, "неделю", "недели", "недель") + ""; }, monthUntil: "через месяц", monthsUntil: function (b) { return "через {delta} " + a(b, "месяц", "месяца", "месецев") + ""; }, yearUntil: "через", yearsUntil: function (b) { return "через {delta} " + a(b, "год", "года", "лет") + ""; }, }); })(); Locale.define("ru-RU", "FormValidator", { required: "Это поле обязательно к заполнению.", minLength: "Пожалуйста, введите хотя бы {minLength} символов (Вы ввели {length}).", maxLength: "Пожалуйста, введите не больше {maxLength} символов (Вы ввели {length}).", integer: "Пожалуйста, введите в это поле число. Дробные числа (например 1.25) тут не разрешены.", numeric: 'Пожалуйста, введите в это поле число (например "1" или "1.1", или "-1", или "-1.1").', digits: "В этом поле Вы можете использовать только цифры и знаки пунктуации (например, телефонный номер со знаками дефиса или с точками).", alpha: "В этом поле можно использовать только латинские буквы (a-z). Пробелы и другие символы запрещены.", alphanum: "В этом поле можно использовать только латинские буквы (a-z) и цифры (0-9). Пробелы и другие символы запрещены.", dateSuchAs: "Пожалуйста, введите корректную дату {date}", dateInFormatMDY: 'Пожалуйста, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")', email: 'Пожалуйста, введите корректный емейл-адрес. Для примера "fred@domain.com".', url: "Пожалуйста, введите правильную ссылку вида http://www.example.com.", currencyDollar: "Пожалуйста, введите сумму в долларах. Например: $100.00 .", oneRequired: "Пожалуйста, выберите хоть что-нибудь в одном из этих полей.", errorPrefix: "Ошибка: ", warningPrefix: "Внимание: ", }); (function () { var a = function (f, d, c, e, b) { return f >= 1 && f <= 3 ? arguments[f] : b; }; Locale.define("si-SI", "Date", { months: ["januar", "februar", "marec", "april", "maj", "junij", "julij", "avgust", "september", "oktober", "november", "december"], months_abbr: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec"], days: ["nedelja", "ponedeljek", "torek", "sreda", "četrtek", "petek", "sobota"], days_abbr: ["ned", "pon", "tor", "sre", "čet", "pet", "sob"], dateOrder: ["date", "month", "year"], shortDate: "%d.%m.%Y", shortTime: "%H.%M", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: ".", lessThanMinuteAgo: "manj kot minuto nazaj", minuteAgo: "minuto nazaj", minutesAgo: function (b) { return "{delta} " + a(b, "minuto", "minuti", "minute", "minut") + " nazaj"; }, hourAgo: "uro nazaj", hoursAgo: function (b) { return "{delta} " + a(b, "uro", "uri", "ure", "ur") + " nazaj"; }, dayAgo: "dan nazaj", daysAgo: function (b) { return "{delta} " + a(b, "dan", "dneva", "dni", "dni") + " nazaj"; }, weekAgo: "teden nazaj", weeksAgo: function (b) { return "{delta} " + a(b, "teden", "tedna", "tedne", "tednov") + " nazaj"; }, monthAgo: "mesec nazaj", monthsAgo: function (b) { return "{delta} " + a(b, "mesec", "meseca", "mesece", "mesecov") + " nazaj"; }, yearthAgo: "leto nazaj", yearsAgo: function (b) { return "{delta} " + a(b, "leto", "leti", "leta", "let") + " nazaj"; }, lessThanMinuteUntil: "še manj kot minuto", minuteUntil: "še minuta", minutesUntil: function (b) { return "še {delta} " + a(b, "minuta", "minuti", "minute", "minut"); }, hourUntil: "še ura", hoursUntil: function (b) { return "še {delta} " + a(b, "ura", "uri", "ure", "ur"); }, dayUntil: "še dan", daysUntil: function (b) { return "še {delta} " + a(b, "dan", "dneva", "dnevi", "dni"); }, weekUntil: "še tedn", weeksUntil: function (b) { return "še {delta} " + a(b, "teden", "tedna", "tedni", "tednov"); }, monthUntil: "še mesec", monthsUntil: function (b) { return "še {delta} " + a(b, "mesec", "meseca", "meseci", "mesecov"); }, yearUntil: "še leto", yearsUntil: function (b) { return "še {delta} " + a(b, "leto", "leti", "leta", "let"); }, }); })(); Locale.define("si-SI", "FormValidator", { required: "To polje je obvezno", minLength: "Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).", maxLength: "Prosim, ne vnesite več kot {maxLength} znakov (vnesli ste {length} znakov).", integer: "Prosim, vnesite celo število. Decimalna števila (kot 1,25) niso dovoljena.", numeric: 'Prosim, vnesite samo numerične vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").', digits: "Prosim, uporabite številke in ločila le na tem polju (na primer, dovoljena je telefonska številka z pomišlaji ali pikami).", alpha: "Prosim, uporabite le črke v tem plju. Presledki in drugi znaki niso dovoljeni.", alphanum: "Prosim, uporabite samo črke ali številke v tem polju. Presledki in drugi znaki niso dovoljeni.", dateSuchAs: "Prosim, vnesite pravilen datum kot {date}", dateInFormatMDY: 'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")', email: 'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".', url: "Prosim, vnesite pravilen URL kot http://www.example.com.", currencyDollar: "Prosim, vnesit epravilno vrednost €. Primer 100,00€ .", oneRequired: "Prosimo, vnesite nekaj za vsaj eno izmed teh polj.", errorPrefix: "Napaka: ", warningPrefix: "Opozorilo: ", noSpace: "To vnosno polje ne dopušča presledkov.", reqChkByNode: "Nič niste izbrali.", requiredChk: "To polje je obvezno", reqChkByName: "Prosim, izberite {label}.", match: "To polje se mora ujemati z poljem {matchName}", startDate: "datum začetka", endDate: "datum konca", currendDate: "trenuten datum", afterDate: "Datum bi moral biti isti ali po {label}.", beforeDate: "Datum bi moral biti isti ali pred {label}.", startMonth: "Prosim, vnesite začetni datum", sameMonth: "Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.", creditcard: "Številka kreditne kartice ni pravilna. Preverite številko ali poskusite še enkrat. Vnešenih {length} znakov.", }); Locale.define("sv-SE", "Date", { months: ["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], months_abbr: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], days: ["söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"], days_abbr: ["sön", "mån", "tis", "ons", "tor", "fre", "lör"], dateOrder: ["year", "month", "date"], shortDate: "%Y-%m-%d", shortTime: "%H:%M", AM: "", PM: "", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "mindre än en minut sedan", minuteAgo: "ungefär en minut sedan", minutesAgo: "{delta} minuter sedan", hourAgo: "ungefär en timme sedan", hoursAgo: "ungefär {delta} timmar sedan", dayAgo: "1 dag sedan", daysAgo: "{delta} dagar sedan", lessThanMinuteUntil: "mindre än en minut sedan", minuteUntil: "ungefär en minut sedan", minutesUntil: "{delta} minuter sedan", hourUntil: "ungefär en timme sedan", hoursUntil: "ungefär {delta} timmar sedan", dayUntil: "1 dag sedan", daysUntil: "{delta} dagar sedan", }); Locale.define("sv-SE", "FormValidator", { required: "Fältet är obligatoriskt.", minLength: "Ange minst {minLength} tecken (du angav {length} tecken).", maxLength: "Ange högst {maxLength} tecken (du angav {length} tecken). ", integer: "Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.", numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").', digits: "Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).", alpha: "Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.", alphanum: "Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.", dateSuchAs: "Ange ett giltigt datum som t.ex. {date}", dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")', email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".', url: "Ange en giltig webbadress som http://www.example.com.", currencyDollar: "Ange en giltig belopp. Exempelvis 100,00.", oneRequired: "Vänligen ange minst ett av dessa alternativ.", errorPrefix: "Fel: ", warningPrefix: "Varning: ", noSpace: "Det får inte finnas några mellanslag i detta fält.", reqChkByNode: "Inga objekt är valda.", requiredChk: "Detta är ett obligatoriskt fält.", reqChkByName: "Välj en {label}.", match: "Detta fält måste matcha {matchName}", startDate: "startdatumet", endDate: "slutdatum", currendDate: "dagens datum", afterDate: "Datumet bör vara samma eller senare än {label}.", beforeDate: "Datumet bör vara samma eller tidigare än {label}.", startMonth: "Välj en start månad", sameMonth: "Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.", }); (function () { var a = function (j, e, c, i, b) { var h = (j / 10).toInt(), g = j % 10, f = (j / 100).toInt(); if (h == 1 && j > 10) { return i; } if (g == 1) { return e; } if (g > 0 && g < 5) { return c; } return i; }; Locale.define("uk-UA", "Date", { months: ["Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], months_abbr: ["Січ", "Лют", "Бер", "Квіт", "Трав", "Черв", "Лип", "Серп", "Вер", "Жовт", "Лист", "Груд"], days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"], days_abbr: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], dateOrder: ["date", "month", "year"], shortDate: "%d/%m/%Y", shortTime: "%H:%M", AM: "до полудня", PM: "по полудню", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "меньше хвилини тому", minuteAgo: "хвилину тому", minutesAgo: function (b) { return "{delta} " + a(b, "хвилину", "хвилини", "хвилин") + " тому"; }, hourAgo: "годину тому", hoursAgo: function (b) { return "{delta} " + a(b, "годину", "години", "годин") + " тому"; }, dayAgo: "вчора", daysAgo: function (b) { return "{delta} " + a(b, "день", "дня", "днів") + " тому"; }, weekAgo: "тиждень тому", weeksAgo: function (b) { return "{delta} " + a(b, "тиждень", "тижні", "тижнів") + " тому"; }, monthAgo: "місяць тому", monthsAgo: function (b) { return "{delta} " + a(b, "місяць", "місяці", "місяців") + " тому"; }, yearAgo: "рік тому", yearsAgo: function (b) { return "{delta} " + a(b, "рік", "роки", "років") + " тому"; }, lessThanMinuteUntil: "за мить", minuteUntil: "через хвилину", minutesUntil: function (b) { return "через {delta} " + a(b, "хвилину", "хвилини", "хвилин"); }, hourUntil: "через годину", hoursUntil: function (b) { return "через {delta} " + a(b, "годину", "години", "годин"); }, dayUntil: "завтра", daysUntil: function (b) { return "через {delta} " + a(b, "день", "дня", "днів"); }, weekUntil: "через тиждень", weeksUntil: function (b) { return "через {delta} " + a(b, "тиждень", "тижні", "тижнів"); }, monthUntil: "через місяць", monthesUntil: function (b) { return "через {delta} " + a(b, "місяць", "місяці", "місяців"); }, yearUntil: "через рік", yearsUntil: function (b) { return "через {delta} " + a(b, "рік", "роки", "років"); }, }); })(); Locale.define("uk-UA", "FormValidator", { required: "Це поле повинне бути заповненим.", minLength: "Введіть хоча б {minLength} символів (Ви ввели {length}).", maxLength: "Кількість символів не може бути більше {maxLength} (Ви ввели {length}).", integer: "Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.", numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").', digits: "В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).", alpha: "В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.", alphanum: "В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.", dateSuchAs: "Введіть коректну дату {date}.", dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").', email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").', url: "Введіть коректне інтернет-посилання (наприклад http://www.example.com).", currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").', oneRequired: "Заповніть одне з полів.", errorPrefix: "Помилка: ", warningPrefix: "Увага: ", noSpace: "Пробіли заборонені.", reqChkByNode: "Не відмічено жодного варіанту.", requiredChk: "Це поле повинне бути віміченим.", reqChkByName: "Будь ласка, відмітьте {label}.", match: "Це поле повинно відповідати {matchName}", startDate: "початкова дата", endDate: "кінцева дата", currendDate: "сьогоднішня дата", afterDate: "Ця дата повинна бути такою ж, або пізнішою за {label}.", beforeDate: "Ця дата повинна бути такою ж, або ранішою за {label}.", startMonth: "Будь ласка, виберіть початковий місяць", sameMonth: "Ці дати повинні відноситись одного і того ж місяця. Будь ласка, змініть одну з них.", creditcard: "Номер кредитної карти введений неправильно. Будь ласка, перевірте його. Введено {length} символів.", }); Locale.define("zh-CHS", "Date", { months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], months_abbr: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"], days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], days_abbr: ["日", "一", "二", "三", "四", "五", "六"], dateOrder: ["year", "month", "date"], shortDate: "%Y-%m-%d", shortTime: "%I:%M%p", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "不到1分钟前", minuteAgo: "大约1分钟前", minutesAgo: "{delta}分钟之前", hourAgo: "大约1小时前", hoursAgo: "大约{delta}小时前", dayAgo: "1天前", daysAgo: "{delta}天前", weekAgo: "1星期前", weeksAgo: "{delta}星期前", monthAgo: "1个月前", monthsAgo: "{delta}个月前", yearAgo: "1年前", yearsAgo: "{delta}年前", lessThanMinuteUntil: "从现在开始不到1分钟", minuteUntil: "从现在开始約1分钟", minutesUntil: "从现在开始约{delta}分钟", hourUntil: "从现在开始1小时", hoursUntil: "从现在开始约{delta}小时", dayUntil: "从现在开始1天", daysUntil: "从现在开始{delta}天", weekUntil: "从现在开始1星期", weeksUntil: "从现在开始{delta}星期", monthUntil: "从现在开始一个月", monthsUntil: "从现在开始{delta}个月", yearUntil: "从现在开始1年", yearsUntil: "从现在开始{delta}年", }); Locale.define("zh-CHT", "Date", { months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], months_abbr: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"], days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], days_abbr: ["日", "一", "二", "三", "四", "五", "六"], dateOrder: ["year", "month", "date"], shortDate: "%Y-%m-%d", shortTime: "%I:%M%p", AM: "AM", PM: "PM", firstDayOfWeek: 1, ordinal: "", lessThanMinuteAgo: "不到1分鐘前", minuteAgo: "大約1分鐘前", minutesAgo: "{delta}分鐘之前", hourAgo: "大約1小時前", hoursAgo: "大約{delta}小時前", dayAgo: "1天前", daysAgo: "{delta}天前", weekAgo: "1星期前", weeksAgo: "{delta}星期前", monthAgo: "1个月前", monthsAgo: "{delta}个月前", yearAgo: "1年前", yearsAgo: "{delta}年前", lessThanMinuteUntil: "從現在開始不到1分鐘", minuteUntil: "從現在開始約1分鐘", minutesUntil: "從現在開始約{delta}分鐘", hourUntil: "從現在開始1小時", hoursUntil: "從現在開始約{delta}小時", dayUntil: "從現在開始1天", daysUntil: "從現在開始{delta}天", weekUntil: "從現在開始1星期", weeksUntil: "從現在開始{delta}星期", monthUntil: "從現在開始一個月", monthsUntil: "從現在開始{delta}個月", yearUntil: "從現在開始1年", yearsUntil: "從現在開始{delta}年", }); Locale.define("zh-CHS", "FormValidator", { required: "此项必填。", minLength: "请至少输入 {minLength} 个字符 (已输入 {length} 个)。", maxLength: "最多只能输入 {maxLength} 个字符 (已输入 {length} 个)。", integer: '请输入一个整数,不能包含小数点。例如:"1", "200"。', numeric: '请输入一个数字,例如:"1", "1.1", "-1", "-1.1"。', digits: "请输入由数字和标点符号组成的内容。例如电话号码。", alpha: "请输入 A-Z 的 26 个字母,不能包含空格或任何其他字符。", alphanum: "请输入 A-Z 的 26 个字母或 0-9 的 10 个数字,不能包含空格或任何其他字符。", dateSuchAs: "请输入合法的日期格式,如:{date}。", dateInFormatMDY: '请输入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。', email: '请输入合法的电子信箱地址,例如:"fred@domain.com"。', url: "请输入合法的 Url 地址,例如:http://www.example.com。", currencyDollar: "请输入合法的货币符号,例如:¥100.0", oneRequired: "请至少选择一项。", errorPrefix: "错误:", warningPrefix: "警告:", noSpace: "不能包含空格。", reqChkByNode: "未选择任何内容。", requiredChk: "此项必填。", reqChkByName: "请选择 {label}.", match: "必须与{matchName}相匹配", startDate: "起始日期", endDate: "结束日期", currendDate: "当前日期", afterDate: "日期必须等于或晚于 {label}.", beforeDate: "日期必须早于或等于 {label}.", startMonth: "请选择起始月份", sameMonth: "您必须修改两个日期中的一个,以确保它们在同一月份。", creditcard: "您输入的信用卡号码不正确。当前已输入{length}个字符。", }); Locale.define("zh-CHT", "FormValidator", { required: "此項必填。 ", minLength: "請至少輸入{minLength} 個字符(已輸入{length} 個)。 ", maxLength: "最多只能輸入{maxLength} 個字符(已輸入{length} 個)。 ", integer: '請輸入一個整數,不能包含小數點。例如:"1", "200"。 ', numeric: '請輸入一個數字,例如:"1", "1.1", "-1", "-1.1"。 ', digits: "請輸入由數字和標點符號組成的內容。例如電話號碼。 ", alpha: "請輸入AZ 的26 個字母,不能包含空格或任何其他字符。 ", alphanum: "請輸入AZ 的26 個字母或0-9 的10 個數字,不能包含空格或任何其他字符。 ", dateSuchAs: "請輸入合法的日期格式,如:{date}。 ", dateInFormatMDY: '請輸入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。 ', email: '請輸入合法的電子信箱地址,例如:"fred@domain.com"。 ', url: "請輸入合法的Url 地址,例如:http://www.example.com。 ", currencyDollar: "請輸入合法的貨幣符號,例如:¥100.0", oneRequired: "請至少選擇一項。 ", errorPrefix: "錯誤:", warningPrefix: "警告:", noSpace: "不能包含空格。 ", reqChkByNode: "未選擇任何內容。 ", requiredChk: "此項必填。 ", reqChkByName: "請選擇 {label}.", match: "必須與{matchName}相匹配", startDate: "起始日期", endDate: "結束日期", currendDate: "當前日期", afterDate: "日期必須等於或晚於{label}.", beforeDate: "日期必須早於或等於{label}.", startMonth: "請選擇起始月份", sameMonth: "您必須修改兩個日期中的一個,以確保它們在同一月份。 ", creditcard: "您輸入的信用卡號碼不正確。當前已輸入{length}個字符。 ", }); Form.Validator.add("validate-currency-yuan", { errorMsg: function () { return Form.Validator.getMsg("currencyYuan"); }, test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || /^¥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(a.get("value")); }, });
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.37 |
proxy
|
phpinfo
|
Настройка