﻿MooTools.More = { version: "1.3.0.1", build: "6dce99bed2792dffcbbbb4ddc15a1fb9a41994b5" }; Events.Pseudos = function (f, c, d) { var b = "monitorEvents:"; var a = function (g) { return { store: g.store ? function (h, i) { g.store(b + h, i) } : function (h, i) { (g.$monitorEvents || (g.$monitorEvents = {}))[h] = i }, retrieve: g.retrieve ? function (h, i) { return g.retrieve(b + h, i) } : function (h, i) { if (!g.$monitorEvents) { return i } return g.$monitorEvents[h] || i } } }; var e = function (h) { if (h.indexOf(":") == -1) { return null } var g = Slick.parse(h).expressions[0][0], i = g.pseudos; return (f && f[i[0].key]) ? { event: g.tag, value: i[0].value, pseudo: i[0].key, original: h} : null }; return { addEvent: function (l, n, i) { var m = e(l); if (!m) { return c.call(this, l, n, i) } var j = a(this), q = j.retrieve(l, []), g = Array.from(f[m.pseudo]), k = g[1]; var p = this; var o = function () { g[0].call(p, m, n, arguments, k) }; q.include({ event: n, monitor: o }); j.store(l, q); var h = m.event; if (k && k[h]) { h = k[h].base } c.call(this, l, n, i); return c.call(this, h, o, i) }, removeEvent: function (m, l) { var k = e(m); if (!k) { return d.call(this, m, l) } var n = a(this), j = n.retrieve(m), i = Array.from(f[k.pseudo]), h = i[1]; if (!j) { return this } var g = k.event; if (h && h[g]) { g = h[g].base } d.call(this, m, l); j.each(function (o, p) { if (!l || o.event == l) { d.call(this, g, o.monitor) } delete j[p] }, this); n.store(m, j); return this } } }; (function () { var b = { once: function (d, e, c) { e.apply(this, c); this.removeEvent(d.original, e) } }; Events.definePseudo = function (c, d) { b[c] = d }; var a = Events.prototype; Events.implement(Events.Pseudos(b, a.addEvent, a.removeEvent)) })(); Class.refactor = function (b, a) { Object.each(a, function (e, d) { var c = b.prototype[d]; if (c && c.$origin) { c = c.$origin } if (c && typeof e == "function") { b.implement(d, function () { var f = this.previous; this.previous = c; var g = e.apply(this, arguments); this.previous = f; return g }) } else { b.implement(d, e) } }); return b }; Class.Mutators.Binds = function (a) { return a }; Class.Mutators.initialize = function (a) { return function () { Array.from(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 != null) { 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) } .bind(this)) } }; Chain.implement(a); if (this.Fx) { Fx.implement(a); ["Css", "Tween", "Elements"].each(function (b) { if (Fx[b]) { Fx[b].implement(a) } }) } if (this.Element && this.Fx) { Element.implement({ chains: function (b) { Array.from(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 } }) } })(); 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 a = 0, b = this.length; if (b) { while (b--) { a += this[b] } } return a }, unique: function () { return [].combine(this) }, shuffle: function () { for (var b = this.length; b && --b; ) { var a = this[b], c = Math.floor(Math.random() * (b + 1)); this[b] = this[c]; this[c] = a } return this }, reduce: function (c, d) { var e; for (var b = 0, a = this.length; b < a; b++) { if (b in this) { d = d === e ? this[b] : c.call(null, d, this[b], b, this) } } return d }, reduceRight: function (b, c) { var a = this.length, d; while (a--) { if (a in this) { c = c === d ? this[a] : b.call(null, c, this[a], a, this) } } return c } }); (function () { var a = function (b) { return b != null }; Object.extend({ getFromPath: function (e, d) { var f = d.split("."); for (var c = 0, b = f.length; c < b; c++) { if (e.hasOwnProperty(f[c])) { e = e[f[c]] } else { return null } } return e }, cleanValues: function (b, c) { c = c || a; for (key in b) { if (!c(b[key])) { delete b[key] } } return b }, erase: function (b, c) { if (b.hasOwnProperty(c)) { delete b[c] } return b }, run: function (c) { var b = Array.slice(arguments, 1); for (key in c) { if (c[key].apply) { c[key].apply(c, b) } } return c } }) })(); (function () { var b = null, a = {}, e = {}; var d = function (g) { if (instanceOf(g, f.Set)) { return g } else { return a[g] } }; var f = this.Locale = { define: function (g, k, i, j) { var h; if (instanceOf(g, f.Set)) { h = g.name; if (h) { a[h] = g } } else { h = g; if (!a[h]) { a[h] = new f.Set(h) } g = a[h] } if (k) { g.define(k, i, j) } if (k == "cascade") { return f.inherit(h, i) } if (!b) { b = g } return g }, use: function (g) { g = d(g); if (g) { b = g; this.fireEvent("change", g); this.fireEvent("langChange", g.name) } return this }, getCurrent: function () { return b }, get: function (h, g) { return (b) ? b.get(h, g) : "" }, inherit: function (g, h, i) { g = d(g); if (g) { g.inherit(h, i) } return this }, list: function () { return Object.keys(a) } }; Object.append(f, new Events); f.Set = new Class({ sets: {}, inherits: { locales: [], sets: {} }, initialize: function (g) { this.name = g || "" }, define: function (j, h, i) { var g = this.sets[j]; if (!g) { g = {} } if (h) { if (typeOf(h) == "object") { g = Object.merge(g, h) } else { g[h] = i } } this.sets[j] = g; return this }, get: function (s, k, r) { var q = Object.getFromPath(this.sets, s); if (q != null) { var n = typeOf(q); if (n == "function") { q = q.apply(null, Array.from(k)) } else { if (n == "object") { q = Object.clone(q) } } return q } var j = s.indexOf("."), p = j < 0 ? s : s.substr(0, j), m = (this.inherits.sets[p] || []).combine(this.inherits.locales).include("en-US"); if (!r) { r = [] } for (var h = 0, g = m.length; h < g; h++) { if (r.contains(m[h])) { continue } r.include(m[h]); var o = a[m[h]]; if (!o) { continue } q = o.get(s, k, r); if (q != null) { return q } } return "" }, inherit: function (h, i) { h = Array.from(h); if (i && !this.inherits.sets[i]) { this.inherits.sets[i] = [] } var g = h.length; while (g--) { (i ? this.inherits.sets[i] : this.inherits.locales).unshift(h[g]) } return this } }); var c = MooTools.lang = {}; Object.append(c, f, { setLanguage: f.use, getCurrentLanguage: function () { var g = f.getCurrent(); return (g) ? g.name : null }, set: function () { f.define.apply(this, arguments); return this }, get: function (i, h, g) { if (h) { i += "." + h } return f.get(i, g) } }) })(); 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", 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 i = this.Date; i.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 (p) { i.Methods[p.toLowerCase()] = p }); var d = function (r, q, p) { if (!p) { p = "0" } return new Array(q - String(r).length + 1).join(p) + r }; i.implement({ set: function (r, q) { r = r.toLowerCase(); var p = i.Methods; if (p[r]) { this["set" + p[r]](q) } return this } .overloadSetter(), get: function (q) { q = q.toLowerCase(); var p = i.Methods; if (p[q]) { return this["get" + p[q]]() } return null }, clone: function () { return new i(this.get("time")) }, increment: function (p, r) { p = p || "day"; r = r != null ? r : 1; switch (p) { case "year": return this.increment("month", r * 12); case "month": var q = this.get("date"); this.set("date", 1).set("mo", this.get("mo") + r); return this.set("date", q.min(this.get("lastdayofmonth"))); case "week": return this.increment("day", r * 7); case "day": return this.set("date", this.get("date") + r) } if (!i.units[p]) { throw new Error(p + " is not a supported interval") } return this.set("time", this.get("time") + r * i.units[p]()) }, decrement: function (p, q) { return this.increment(p, -1 * (q != null ? q : 1)) }, isLeapYear: function () { return i.isLeapYear(this.get("year")) }, clearTime: function () { return this.set({ hr: 0, min: 0, sec: 0, ms: 0 }) }, diff: function (q, p) { if (typeOf(q) == "string") { q = i.parse(q) } return ((q - this) / i.units[p || "day"](3, 3)).round() }, getLastDayOfMonth: function () { return i.daysInMonth(this.get("mo"), this.get("year")) }, getDayOfYear: function () { return (i.UTC(this.get("year"), this.get("mo"), this.get("date") + 1) - i.UTC(this.get("year"), 0, 1)) / i.units.day() }, getWeek: function () { return (this.get("dayofyear") / 7).ceil() }, getOrdinal: function (p) { return i.getMsg("ordinal", p || 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 p = this.get("timezoneOffset"); return ((p > 0) ? "-" : "+") + d((p.abs() / 60).floor(), 2) + d(p % 60, 2) }, setAMPM: function (p) { p = p.toUpperCase(); var q = this.get("hr"); if (q > 11 && p == "AM") { return this.decrement("hour", 12) } else { if (q < 12 && p == "PM") { return this.increment("hour", 12) } } return this }, getAMPM: function () { return (this.get("hr") < 12) ? "AM" : "PM" }, parse: function (p) { this.set("time", i.parse(p)); return this }, isValid: function (p) { return !isNaN((p || this).valueOf()) }, format: function (p) { if (!this.isValid()) { return "invalid date" } p = p || "%x %X"; p = k[p.toLowerCase()] || p; var q = this; return p.replace(/%([a-z%])/gi, function (s, r) { switch (r) { case "a": return i.getMsg("days_abbr")[q.get("day")]; case "A": return i.getMsg("days")[q.get("day")]; case "b": return i.getMsg("months_abbr")[q.get("month")]; case "B": return i.getMsg("months")[q.get("month")]; case "c": return q.format("%a %b %d %H:%m:%S %Y"); case "d": return d(q.get("date"), 2); case "e": return d(q.get("date"), 2, " "); case "H": return d(q.get("hr"), 2); case "I": return d((q.get("hr") % 12) || 12, 2); case "j": return d(q.get("dayofyear"), 3); case "k": return d(q.get("hr"), 2, " "); case "l": return d((q.get("hr") % 12) || 12, 2, " "); case "L": return d(q.get("ms"), 3); case "m": return d((q.get("mo") + 1), 2); case "M": return d(q.get("min"), 2); case "o": return q.get("ordinal"); case "p": return i.getMsg(q.get("ampm")); case "s": return Math.round(q / 1000); case "S": return d(q.get("seconds"), 2); case "U": return d(q.get("week"), 2); case "w": return q.get("day"); case "x": return q.format(i.getMsg("shortDate")); case "X": return q.format(i.getMsg("shortTime")); case "y": return q.get("year").toString().substr(2); case "Y": return q.get("year"); case "T": return q.get("GMTOffset"); case "z": return q.get("GMTOffset"); case "Z": return q.get("Timezone") } return r }) }, toISOString: function () { return this.format("iso8601") } }); i.alias("toJSON", "toISOString"); i.alias("compare", "diff"); i.alias("strftime", "format"); var k = { db: "%Y-%m-%d %H:%M:%S", compact: "%Y%m%dT%H%M%S", iso8601: "%Y-%m-%dT%H:%M:%S%T", rfc822: "%a, %d %b %Y %H:%M:%S %Z", "short": "%d %b %H:%M", "long": "%B %d, %Y %H:%M" }; var g = []; var e = i.parse; var n = function (s, u, r) { var q = -1; var t = i.getMsg(s + "s"); switch (typeOf(u)) { case "object": q = t[u.get(s)]; break; case "number": q = t[u]; if (!q) { throw new Error("Invalid " + s + " index: " + u) } break; case "string": var p = t.filter(function (v) { return this.test(v) }, new RegExp("^" + u, "i")); if (!p.length) { throw new Error("Invalid " + s + " string") } if (p.length > 1) { throw new Error("Ambiguous " + s) } q = p[0] } return (r) ? t.indexOf(q) : q }; i.extend({ getMsg: function (q, p) { return Locale.get("Date." + q, p) }, 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 (q, p) { var r = new i; return i.daysInMonth(q != null ? q : r.get("mo"), p != null ? p : r.get("year")) * 86400000 }, year: function (p) { p = p || new i().get("year"); return i.isLeapYear(p) ? 31622400000 : 31536000000 } }, daysInMonth: function (q, p) { return [31, i.isLeapYear(p) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][q] }, isLeapYear: function (p) { return ((p % 4 === 0) && (p % 100 !== 0)) || (p % 400 === 0) }, parse: function (r) { var q = typeOf(r); if (q == "number") { return new i(r) } if (q != "string") { return r } r = r.clean(); if (!r.length) { return null } var p; g.some(function (t) { var s = t.re.exec(r); return (s) ? (p = t.handler(s)) : false }); return p || new i(e(r)) }, parseDay: function (p, q) { return n("day", p, q) }, parseMonth: function (q, p) { return n("month", q, p) }, parseUTC: function (q) { var p = new i(q); var r = i.UTC(p.get("year"), p.get("mo"), p.get("date"), p.get("hr"), p.get("min"), p.get("sec"), p.get("ms")); return new i(r) }, orderIndex: function (p) { return i.getMsg("dateOrder").indexOf(p) + 1 }, defineFormat: function (p, q) { k[p] = q }, defineFormats: function (p) { for (var q in p) { i.defineFormat(q, p[q]) } }, parsePatterns: g, defineParser: function (p) { g.push((p.re && p.handler) ? p : l(p)) }, defineParsers: function () { Array.flatten(arguments).each(i.defineParser) }, define2DigitYearStart: function (p) { h = p % 100; m = p - h } }); var m = 1900; var h = 70; var j = function (p) { return new RegExp("(?:" + i.getMsg(p).map(function (q) { return q.substr(0, 3) }).join("|") + ")[a-z]*") }; var a = function (p) { switch (p) { case "x": return ((i.orderIndex("month") == 1) ? "%m[-./]%d" : "%d[-./]%m") + "([-./]%y)?"; case "X": return "%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?" } return null }; var o = { 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}/, T: /Z|[+-]\d{2}(?::?\d{2})?/ }; o.m = o.I; o.S = o.M; var c; var b = function (p) { c = p; o.a = o.A = j("days"); o.b = o.B = j("months"); g.each(function (r, q) { if (r.format) { g[q] = l(r.format) } }) }; var l = function (r) { if (!c) { return { format: r} } var p = []; var q = (r.source || r).replace(/%([a-z])/gi, function (t, s) { return a(s) || t }).replace(/\((?!\?)/g, "(?:").replace(/ (?!\?|\*)/g, ",? ").replace(/%([a-z%])/gi, function (t, s) { var u = o[s]; if (!u) { return s } p.push(s); return "(" + u.source + ")" }).replace(/\[a-z\]/gi, "[a-z\\u00c0-\\uffff;&]"); return { format: r, re: new RegExp("^" + q + "$", "i"), handler: function (v) { v = v.slice(1).associate(p); var s = new i().clearTime(), u = v.y || v.Y; if (u != null) { f.call(s, "y", u) } if ("d" in v) { f.call(s, "d", 1) } if ("m" in v || "b" in v || "B" in v) { f.call(s, "m", 1) } for (var t in v) { f.call(s, t, v[t]) } return s } } }; var f = function (p, q) { if (!q) { return this } switch (p) { case "a": case "A": return this.set("day", i.parseDay(q, true)); case "b": case "B": return this.set("mo", i.parseMonth(q, true)); case "d": return this.set("date", q); case "H": case "I": return this.set("hr", q); case "m": return this.set("mo", q - 1); case "M": return this.set("min", q); case "p": return this.set("ampm", q.replace(/\./g, "")); case "S": return this.set("sec", q); case "s": return this.set("ms", ("0." + q) * 1000); case "w": return this.set("day", q); case "Y": return this.set("year", q); case "y": q = +q; if (q < 100) { q += m + (q < h ? 100 : 0) } return this.set("year", q); case "T": if (q == "Z") { q = "+00" } var r = q.match(/([+-])(\d{2}):?(\d{2})?/); r = (r[1] + "1") * (r[2] * 60 + (+r[3] || 0)) + this.getTimezoneOffset(); return this.set("time", this - r * 60000) } return this }; i.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 %T %Y"); Locale.addEvent("change", function (p) { if (Locale.get("Date")) { b(p) } }).fireEvent("change", Locale.getCurrent()) })(); Date.implement({ timeDiffInWords: function (a) { return Date.distanceOfTimeInWords(this, a || new Date) }, timeDiff: function (g, b) { if (g == null) { g = new Date } var f = ((g - this) / 1000).toInt(); if (!f) { return "0s" } var a = { s: 60, m: 60, h: 24, d: 365, y: 0 }; var e, d = []; for (var c in a) { if (!f) { break } if ((e = a[c])) { d.unshift((f % e) + c); f = (f / e).toInt() } else { d.unshift(f + c) } } return d.join(b || ":") } }); Date.alias("timeAgoInWords", "timeDiffInWords"); Date.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 }) } }); Date.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) } }); Locale.define("en-US", "Number", { decimal: ".", group: ",", currency: { prefix: "$ "} }); Number.implement({ format: function (q) { var n = this; if (!q) { 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 = Locale.get("Number.negative") || {}; if (e.prefix == null && e.suffix == null) { e.prefix = "-" } Object.each(e, function (r, i) { q[i] = (i == "prefix" || i == "suffix") ? (a(i) + r) : r }); n = -n } var l = a("prefix"), p = a("suffix"); if (c > 0 && c <= 20) { n = n.toFixed(c) } if (k >= 1 && k <= 21) { n = n.toPrecision(k) } n += ""; if (a("scientific") === false && n.indexOf("e") > -1) { var j = n.split("e"), m, 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 () { var a = Locale.get("Number.currency") || {}; if (a.scientific == null) { a.scientific = false } if (a.decimals == null) { a.decimals = 2 } return this.format(a) }, formatPercentage: function () { var a = Locale.get("Number.percentage") || {}; if (a.suffix == null) { a.suffix = "%" } if (a.decimals == null) { a.decimals = 2 } 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, "&raquo;": /[\uFFFD]/g }; var a = function (f, g) { var e = f; for (key in g) { e = e.replace(g[key], key) } return e }; var d = function (e, f) { e = e || ""; var g = f ? "<" + e + "(?!\\w)[^>]*>([\\s\\S]*?)</" + e + "(?!\\w)>" : "</?" + e + "([^>]+)?>"; reg = new RegExp(g, "gi"); return reg }; 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) } }) })(); 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("="), g = i.substr(e + 1), f = e < 0 ? [""] : i.substr(0, e).match(/([^\]\[]+|(\B)(?=\]))/g), h = b; 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.from(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 b = { once: function (d, e, c) { e.apply(this, c); this.removeEvent(d.original, e) } }; Event.definePseudo = function (d, e, c) { b[d] = [e, c] }; var a = Element.prototype; [Element, Window, Document].invoke("implement", Events.Pseudos(b, a.addEvent, a.removeEvent)) })(); (function () { var a = "$moo:keys-pressed", b = "$moo:keys-keyup"; Event.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) } }); Object.append(Event.Keys, { shift: 16, control: 17, alt: 18, capslock: 20, pageup: 33, pagedown: 34, end: 35, home: 36, numlock: 144, scrolllock: 145, ";": 186, "=": 187, ",": 188, "-": Browser.firefox ? 109 : 189, ".": 190, "/": 191, "`": 192, "[": 219, "\\": 220, "]": 221, "'": 222, "+": 107 }) })(); Event.definePseudo("relay", function (d, e, b, c) { var f = b[0]; var a = c ? c.condition : null; for (var h = f.target; h && h != this; h = h.parentNode) { var g = document.id(h); if (Slick.match(h, d.value) && (!a || a.call(g, f))) { if (g) { e.call(g, f, g) } return } } }, { mouseenter: { base: "mouseover", condition: Element.Events.mouseenter.condition }, mouseleave: { base: "mouseout", condition: Element.Events.mouseleave.condition} }); (function () { var a = function (d, c) { var e = []; Object.each(c, function (f) { Object.each(f, function (g) { d.each(function (h) { e.push(h + "-" + g + (h == "border" ? "-width" : "")) }) }) }); return e }; var b = function (e, d) { var c = 0; Object.each(d, function (g, f) { if (f.test(e)) { c = c + g.toInt() } }); return c }; Element.implement({ measure: function (h) { var d = function (j) { return !!(!j || j.offsetHeight || j.offsetWidth) }; if (d(this)) { return h.apply(this) } var g = this.getParent(), i = [], e = []; while (!d(g) && g != document.body) { e.push(g.expose()); g = g.getParent() } var f = this.expose(); var c = h.apply(this); f(); e.each(function (j) { j() }); return c }, expose: function () { if (this.getStyle("display") != "none") { return function () { } } var c = this.style.cssText; this.setStyles({ display: "block", position: "absolute", visibility: "hidden" }); return function () { this.style.cssText = c } .bind(this) }, getDimensions: function (c) { c = Object.merge({ computeSize: false }, c); var h = { x: 0, y: 0 }; var g = function (i, e) { return (e.computeSize) ? i.getComputedSize(e) : i.getSize() }; var d = this.getParent("body"); if (d && this.getStyle("display") == "none") { h = this.measure(function () { return g(this, c) }) } else { if (d) { try { h = g(this, c) } catch (f) { } } } return Object.append(h, (h.x || h.x === 0) ? { width: h.x, height: h.y} : { x: h.width, y: h.height }) }, getComputedSize: function (c) { if (c && c.plains) { c.planes = c.plains } c = Object.merge({ styles: ["padding", "border"], planes: { height: ["top", "bottom"], width: ["left", "right"] }, mode: "both" }, c); var e = {}, d = { width: 0, height: 0 }; if (c.mode == "vertical") { delete d.width; delete c.planes.width } else { if (c.mode == "horizontal") { delete d.height; delete c.planes.height } } a(c.styles, c.planes).each(function (f) { e[f] = this.getStyle(f).toInt() }, this); Object.each(c.planes, function (g, f) { var h = f.capitalize(); e[f] = this.getStyle(f).toInt(); d["total" + h] = e[f]; g.each(function (j) { var i = b(j, e); d["computed" + j.capitalize()] = i; d["total" + h] += i }) }, this); return Object.append(d, e) } }) })(); (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(); 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 { var l = this.getOffsetParent(), 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 }; var 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 } var l = this.getParent(), d = (l.getComputedStyle("position") != "static" ? l : l.getOffsetParent()); j = this.getPosition(d); this.store("pin:_pinned", false); var 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 () { var a = Element.prototype.position; Element.implement({ position: function (g) { if (g && (g.x != null || g.y != null)) { return a ? a.apply(this, arguments) : this } Object.each(g || {}, function (u, t) { if (u == null) { delete g[t] } }); g = Object.merge({ relativeTo: document.body, position: { x: "center", y: "center" }, offset: { x: 0, y: 0} }, g); var r = { x: 0, y: 0 }, e = false; var c = this.measure(function () { return document.id(this.getOffsetParent()) }); if (c && c != this.getDocument().body) { r = c.measure(function () { return this.getPosition() }); e = c != document.id(g.relativeTo); g.offset.x = g.offset.x - r.x; g.offset.y = g.offset.y - r.y } var s = function (t) { if (typeOf(t) != "string") { return t } t = t.toLowerCase(); var u = {}; if (t.test("left")) { u.x = "left" } else { if (t.test("right")) { u.x = "right" } else { u.x = "center" } } if (t.test("upper") || t.test("top")) { u.y = "top" } else { if (t.test("bottom")) { u.y = "bottom" } else { u.y = "center" } } return u }; g.edge = s(g.edge); g.position = s(g.position); if (!g.edge) { if (g.position.x == "center" && g.position.y == "center") { g.edge = { x: "center", y: "center"} } else { g.edge = { x: "left", y: "top"} } } this.setStyle("position", "absolute"); var f = document.id(g.relativeTo) || document.body, d = f == document.body ? window.getScroll() : f.getPosition(), l = d.y, h = d.x; var n = this.getDimensions({ computeSize: true, styles: ["padding", "border", "margin"] }); var j = {}, o = g.offset.y, q = g.offset.x, k = window.getSize(); switch (g.position.x) { case "left": j.x = h + q; break; case "right": j.x = h + q + f.offsetWidth; break; default: j.x = h + ((f == document.body ? k.x : f.offsetWidth) / 2) + q; break } switch (g.position.y) { case "top": j.y = l + o; break; case "bottom": j.y = l + o + f.offsetHeight; break; default: j.y = l + ((f == document.body ? k.y : f.offsetHeight) / 2) + o; break } if (g.edge) { var b = {}; switch (g.edge.x) { case "left": b.x = 0; break; case "right": b.x = -n.x - n.computedRight - n.computedLeft; break; default: b.x = -(n.totalWidth / 2); break } switch (g.edge.y) { case "top": b.y = 0; break; case "bottom": b.y = -n.y - n.computedTop - n.computedBottom; break; default: b.y = -(n.totalHeight / 2); break } j.x += b.x; j.y += b.y } j = { left: ((j.x >= 0 || e || g.allowNegative) ? j.x : 0).toInt(), top: ((j.y >= 0 || e || g.allowNegative) ? j.y : 0).toInt() }; var i = { left: "x", top: "y" }; ["minimum", "maximum"].each(function (t) { ["left", "top"].each(function (u) { var v = g[t] ? g[t][i[u]] : null; if (v != null && ((t == "minimum") ? j[u] < v : j[u] > v)) { j[u] = v } }) }); if (f.getStyle("position") == "fixed" || g.relFixedPosition) { var m = window.getScroll(); j.top += m.y; j.left += m.x } if (g.ignoreScroll) { var p = f.getScroll(); j.top -= p.y; j.left -= p.x } if (g.ignoreMargins) { j.left += (g.edge.x == "right" ? n["margin-right"] : g.edge.x == "center" ? -n["margin-left"] + ((n["margin-right"] + n["margin-left"]) / 2) : -n["margin-left"]); j.top += (g.edge.y == "bottom" ? n["margin-bottom"] : g.edge.y == "center" ? -n["margin-top"] + ((n["margin-bottom"] + n["margin-top"]) / 2) : -n["margin-top"]) } j.left = Math.ceil(j.left); j.top = Math.ceil(j.top); if (g.returnPos) { return j } else { this.setStyles(j) } return this } }) })(); 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 (document.selection && document.selection.empty) { document.selection.empty() } else { if (window.getSelection) { var a = window.getSelection(); if (a && a.removeAllRanges) { a.removeAllRanges() } } } } }); 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.ie && Browser.version == 6) || (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 () { this.fireEvent("click"); 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) { 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.update = document.id(c); this.setOptions(a); this.makeRequest(); if (this.options.resetForm) { this.request.addEvent("success", function () { Function.attempt(function () { this.element.reset() } .bind(this)); if (window.OverText) { OverText.update() } } .bind(this)) } this.attach() }, toElement: function () { return this.element }, makeRequest: function () { this.request = new Request.HTML(Object.merge({ update: this.update, emulation: false, spinnerTarget: this.element, method: this.element.get("method") || "post" }, this.options.requestOptions)).addEvents({ success: function (b, d, c, a) { ["complete", "success"].each(function (e) { this.fireEvent(e, [this.update, b, d, c, a]) }, this) } .bind(this), failure: function () { this.fireEvent("complete", arguments).fireEvent("failure", arguments) } .bind(this), exception: function () { this.fireEvent("failure", arguments) } .bind(this) }) }, attach: function (a) { a = a != null ? a : true; method = a ? "addEvent" : "removeEvent"; this.element[method]("click:relay(button, input[type=submit])", this.saveClickedButton.bind(this)); var b = this.element.retrieve("validator"); if (b) { b[method]("onFormValidate", this.onFormValidate) } else { this.element[method]("submit", this.onSubmit) } }, detach: function () { this.attach(false); return this }, enable: function () { this.attach(); return this }, disable: function () { this.detach(); return this }, onFormValidate: function (b, a, d) { if (!d) { return } var c = this.element.retrieve("validator"); if (b || (c && !c.options.stopOnFailure)) { if (d && d.stop) { d.stop() } this.send() } }, onSubmit: function (b) { var a = this.element.retrieve("validator"); if (a) { this.element.removeEvent("submit", this.onSubmit); a.addEvent("onFormValidate", this.onFormValidate); this.element.validate(); return } if (b) { b.stop() } this.send() }, saveClickedButton: function (a, b) { if (!this.options.sendButtonClicked) { return } if (!b.get("name")) { return } this.options.extraData[b.get("name")] = b.get("value") || true; this.clickedCleaner = function () { delete this.options.extraData[b.get("name")]; this.clickedCleaner = function () { } } .bind(this) }, clickedCleaner: function () { }, send: function () { var b = this.element.toQueryString().trim(); var 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.element.get("action") }); this.clickedCleaner(); return this } }); Element.Properties.formRequest = { set: function () { var a = Array.link(arguments, { options: Type.isObject, update: Type.isElement, updateId: Type.isString }); var c = a.update || a.updateId; var b = this.retrieve("form.request"); if (c) { if (b) { b.update = document.id(c) } this.store("form.request:update", c) } if (a.options) { if (b) { b.setOptions(a.options) } this.store("form.request:options", a.options) } return this }, get: function () { var a = Array.link(arguments, { options: Type.isObject, update: Type.isElement, updateId: Type.isString }); var b = a.update || a.updateId; if (a.options || b || !this.retrieve("form.request")) { if (a.options || !this.retrieve("form.request:options")) { this.set("form.request", a.options) } if (b) { this.set("form.request", b) } this.store("form.request", new Form.Request(this, this.retrieve("form.request:update"), this.retrieve("form.request:options"))) } return this.retrieve("form.request") } }; Element.implement({ formUpdate: function (b, a) { this.get("formRequest", b, a).send(); return this } }) })(); 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 c = this.element.getComputedSize({ styles: this.options.styles, mode: this.options.mode }); if (this.options.transitionOpacity) { c.opacity = this.options.opacity } var b = {}; Object.each(c, function (e, d) { b[d] = [e, 0] }); this.element.setStyles({ display: Function.from(this.options.display).call(this), overflow: "hidden" }); var a = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null; if (a) { a.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 (a) { a.setStyle("visibility", "visible") } } this.fireEvent("hide", this.element); this.callChain() } .bind(this)); this.start(b) } 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 c; this.element.measure(function () { c = this.element.getComputedSize({ styles: this.options.styles, mode: this.options.mode }) } .bind(this)); if (this.options.heightOverride != null) { c.height = this.options.heightOverride.toInt() } if (this.options.widthOverride != null) { c.width = this.options.widthOverride.toInt() } if (this.options.transitionOpacity) { this.element.setStyle("opacity", 0); c.opacity = this.options.opacity } var b = { height: 0, display: Function.from(this.options.display).call(this) }; Object.each(c, function (e, d) { b[d] = 0 }); b.overflow = "hidden"; this.element.setStyles(b); var a = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null; if (a) { a.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 (a) { a.setStyle("visibility", "visible") } this.callChain(); this.fireEvent("show", this.element) } .bind(this)); this.start(c) } 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); this.element.style.cssText = this.cssText; this.hiding = false; this.showing = false; return this } }); Element.Properties.reveal = { set: function (a) { this.get("reveal").cancel().setOptions(a); return this }, get: function () { var a = this.retrieve("reveal"); if (!a) { a = new Fx.Reveal(this); this.store("reveal", a) } return a } }; Element.Properties.dissolve = Element.Properties.reveal; Element.implement({ reveal: function (a) { this.get("reveal").setOptions(a).reveal(); return this }, dissolve: function (a) { this.get("reveal").setOptions(a).dissolve(); return this }, nix: function (a) { var b = Array.link(arguments, { destroy: Type.isBoolean, options: Type.isObject }); this.get("reveal").setOptions(a).dissolve().chain(function () { this[b.destroy ? "destroy" : "dispose"]() } .bind(this)); return this }, wink: function () { var b = Array.link(arguments, { duration: Type.isNumber, options: Type.isObject }); var a = this.get("reveal").setOptions(b.options); a.reveal().chain(function () { (function () { a.dissolve() }).delay(b.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.update, this.options.inject); if (this.options.requestOptions.evalScripts) { Browser.exec(a) } this.fireEvent("beforeEffect", c); var e = function () { this.fireEvent("success", [c, this.update, 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) }) } }); Locale.define("en-US", "FormValidator", { required: "This field is required.", 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.google.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 = new Class({ Implements: [Options], options: { errorMsg: "Validation failed.", test: function (a) { return true } }, initialize: function (b, a) { this.setOptions(a); this.className = b }, test: function (b, a) { if (document.id(b)) { return this.options.test(document.id(b), a || this.getProps(b)) } else { return false } }, getError: function (c, a) { var b = this.options.errorMsg; if (typeOf(b) == "function") { b = b(document.id(c), a || this.getProps(c)) } return b }, getProps: function (a) { if (!document.id(a)) { return {} } return a.get("validatorProps") } }); 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("$moo:validatorProps")) { try { this.store("$moo:validatorProps", JSON.decode(this.getProperty("$moo:validatorProps"))) } catch (c) { return {} } } else { var b = this.get("class").split(" ").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) && a) { a.preventDefault() } else { 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 (i, a) { if (this.paused) { return true } i = document.id(i); var d = !i.hasClass("validation-failed"); var f, h; if (this.options.serial && !a) { f = this.element.getElement(".validation-failed"); h = this.element.getElement(".warning") } if (i && (!f || a || i.hasClass("validation-failed") || (f && !this.options.serial))) { var c = i.className.split(" ").some(function (j) { return this.getValidator(j) }, this); var g = []; i.className.split(" ").each(function (j) { if (j && !this.test(j, i)) { g.include(j) } }, this); d = g.length === 0; if (c && !i.hasClass("warnOnly")) { if (d) { i.addClass("validation-passed").removeClass("validation-failed"); this.fireEvent("elementPass", i) } else { i.addClass("validation-failed").removeClass("validation-passed"); this.fireEvent("elementFail", [i, g]) } } if (!h) { var e = i.className.split(" ").some(function (j) { if (j.test("^warn-") || i.hasClass("warnOnly")) { return this.getValidator(j.replace(/^warn-/, "")) } else { return null } }, this); i.removeClass("warning"); var b = i.className.split(" ").map(function (j) { if (j.test("^warn-") || i.hasClass("warnOnly")) { return this.test(j.replace(/^warn-/, ""), i, true) } else { return null } }, this) } } return d }, 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); e = e != null ? e : false; if (d.hasClass("warnOnly")) { e = true } var c = d.hasClass("ignoreValidation") || (a ? a.test(d) : true); if (a) { this.fireEvent("elementValidate", [c, d, b, e]) } if (e) { return true } return c }, resetField: function (a) { a = document.id(a); if (a) { a.className.split(" ").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.from(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) } }], ["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 (a, b) { if (Form.Validator.getValidator("IsEmpty").test(a)) { return true } var g; if (Date.parse) { var f = b.dateFormat || "%x"; g = Date.parse(a.get("value")); var e = g.format(f); if (e != "invalid date") { a.set("value", e) } return !isNaN(g) } else { var c = /^(\d{2})\/(\d{2})\/(\d{4})$/; if (!c.test(a.get("value"))) { return false } g = new Date(a.get("value").replace(c, "$1/$2/$3")); return (parseInt(RegExp.$1, 10) == (1 + g.getMonth())) && (parseInt(RegExp.$2, 10) == g.getDate()) && (parseInt(RegExp.$3, 10) == g.getFullYear()) } } }], ["validate-email", { errorMsg: Form.Validator.getMsg.pass("email"), test: function (a) { return Form.Validator.getValidator("IsEmpty").test(a) || (/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/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) { var b = this.retrieve("validator"); if (b) { b.setOptions(a) } return this.store("$moo:validator:options", a) }, get: function (a) { if (a || !this.retrieve("validator")) { if (a || !this.retrieve("$moo:validator:options")) { this.set("validator", a) } this.store("validator", new Form.Validator(this, this.retrieve("$moo:validator:options"))) } return this.retrieve("validator") } }; Element.implement({ validate: function (a) { if (a) { this.set("validator", a) } return this.get("validator", a).validate() } }); var FormValidator = Form.Validator; 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.className.split(" ").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.className.split(" ").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", positionOptions: { position: "upperLeft", edge: "upperLeft", offset: { x: 4, y: 2} }, poll: false, pollInterval: 250, wrap: false }, property: "OverText", initialize: function (b, a) { this.element = document.id(b); if (this.occlude()) { return this.occluded } this.setOptions(a); this.attach(this.element); OverText.instances.push(this); if (this.options.poll) { this.poll() } return this }, toElement: function () { return this.element }, attach: function () { var a = this.options.textOverride || this.element.get("alt") || this.element.get("title"); if (!a) { return } this.text = new Element(this.options.element, { "class": "overTxtLabel", styles: { lineHeight: "normal", position: "absolute", cursor: "text" }, html: a, events: { click: this.hide.pass(this.options.element == "label", this)} }).inject(this.element, "after"); if (this.options.element == "label") { if (!this.element.get("id")) { this.element.set("id", "input_" + new Date().getTime()) } this.text.set("for", this.element.get("id")) } if (this.options.wrap) { this.textHolder = new Element("div", { styles: { lineHeight: "normal", position: "relative" }, "class": "overTxtWrapper" }).adopt(this.text).inject(this.element, "before") } return this.enable() }, destroy: function () { this.element.eliminate("OverTextDiv").eliminate("OverText"); 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.assert(true); this.reposition(); return this }, wrap: function () { if (this.options.element == "label") { if (!this.element.get("id")) { this.element.set("id", "input_" + new Date().getTime()) } 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 } var b = function () { if (!this.pollingPaused) { this.assert(true) } } .bind(this); if (a) { clearInterval(this.poller) } else { this.poller = b.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.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 }, assert: function (a) { this[this.test() ? "show" : "hide"](a) }, test: function () { var a = this.element.get("value"); return !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.map(function (c, b) { if (c.element && c.text) { return a.apply(OverText, [c, b]) } return null }) }, 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() }) } }); if (window.Fx && Fx.Reveal) { Fx.Reveal.implement({ hideInputs: Browser.ie ? "select, input, textarea, object, embed, .overTxtLabel" : false }) } 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, returnHeightToAuto: true }, initialize: function () { var d = function (e) { return e != null }; var c = Array.link(arguments, { container: Type.isElement, options: Type.isObject, togglers: d, elements: d }); this.parent(c.elements, c.options); this.togglers = $$(c.togglers); this.previous = -1; this.internalChain = new Chain(); if (this.options.alwaysHide) { this.options.wait = true } if (this.options.show || this.options.show === 0) { this.options.display = false; this.previous = this.options.show } if (this.options.start) { this.options.display = false; this.options.show = false } this.effects = {}; if (this.options.opacity) { this.effects.opacity = "fullOpacity" } if (this.options.width) { this.effects.width = this.options.fixedWidth ? "fullWidth" : "offsetWidth" } if (this.options.height) { this.effects.height = this.options.fixedHeight ? "fullHeight" : "scrollHeight" } for (var b = 0, a = this.togglers.length; b < a; b++) { this.addSection(this.togglers[b], this.elements[b]) } this.elements.each(function (f, e) { if (this.options.show === e) { this.fireEvent("active", [this.togglers[e], f]) } else { for (var g in this.effects) { f.setStyle(g, 0) } } }, this); if (this.options.display || this.options.display === 0 || this.options.initialDisplayFx === false) { this.display(this.options.display, this.options.initialDisplayFx) } if (this.options.fixedHeight !== false) { this.options.returnHeightToAuto = false } this.addEvent("complete", this.internalChain.callChain.bind(this.internalChain)) }, addSection: function (e, c) { e = document.id(e); c = document.id(c); this.togglers.include(e); this.elements.include(c); var f = this.togglers.contains(e); var a = this.togglers.indexOf(e); var b = this.display.pass(a, this); e.store("accordion:display", b).addEvent(this.options.trigger, b); if (this.options.height) { c.setStyles({ "padding-top": 0, "border-top": "none", "padding-bottom": 0, "border-bottom": "none" }) } if (this.options.width) { c.setStyles({ "padding-left": 0, "border-left": "none", "padding-right": 0, "border-right": "none" }) } c.fullOpacity = 1; if (this.options.fixedWidth) { c.fullWidth = this.options.fixedWidth } if (this.options.fixedHeight) { c.fullHeight = this.options.fixedHeight } c.setStyle("overflow", "hidden"); if (!f) { for (var d in this.effects) { c.setStyle(d, 0) } } return this }, removeSection: function (e, b) { var a = this.togglers.indexOf(e); var c = this.elements[a]; var d = function () { this.togglers.erase(e); this.elements.erase(c); this.detach(e) } .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 (a, b) { if (!this.check(a, b)) { return this } b = b != null ? b : true; a = (typeOf(a) == "element") ? this.elements.indexOf(a) : a; if (a == this.previous && !this.options.alwaysHide) { return this } if (this.options.returnHeightToAuto) { var d = this.elements[this.previous]; if (d && !this.selfHidden) { for (var c in this.effects) { d.setStyle(c, d[this.effects[c]]) } } } if ((this.timer && this.options.wait) || (a === this.previous && !this.options.alwaysHide)) { return this } this.previous = a; var e = {}; this.elements.each(function (h, g) { e[g] = {}; var f; if (g != a) { f = true } else { if (this.options.alwaysHide && ((h.offsetHeight > 0 && this.options.height) || h.offsetWidth > 0 && this.options.width)) { f = true; this.selfHidden = true } } this.fireEvent(f ? "background" : "active", [this.togglers[g], h]); for (var j in this.effects) { e[g][j] = f ? 0 : h[this.effects[j]] } }, this); this.internalChain.clearChain(); this.internalChain.chain(function () { if (this.options.returnHeightToAuto && !this.selfHidden) { var f = this.elements[a]; if (f) { f.setStyle("height", "auto") } } } .bind(this)); return b ? this.start(e) : this.set(e) } }); var Accordion = new Class({ Extends: Fx.Accordion, initialize: function () { this.parent.apply(this, arguments); var a = Array.link(arguments, { container: Type.isElement }); this.container = a.container }, addSection: function (c, b, e) { c = document.id(c); b = document.id(b); var d = this.togglers.contains(c); var a = this.togglers.length; if (a && (!d || e)) { e = e != null ? e : a - 1; c.inject(this.togglers[e], "before"); b.inject(c, "after") } else { if (this.container && !d) { c.inject(this.container); b.inject(this.container) } } return this.parent.apply(this, arguments) } }); 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] + this.options.offset.x, b[1] + this.options.offset.y) }, compute: function (d, c, b) { return [0, 1].map(function (e) { return Fx.compute(d[e], c[e], b) }) }, start: function (c, h) { if (!this.check(c, h)) { return this } var e = this.element, f = e.getScrollSize(), b = e.getScroll(), d = e.getSize(); values = { x: c, y: h }; for (var g in values) { if (!values[g] && values[g] !== 0) { values[g] = b[g] } if (typeOf(values[g]) != "number") { values[g] = f[g] - d[g] } values[g] += this.options.offset[g] } return this.parent([b.x, b.y], [values.x, values.y]) }, toTop: function () { return this.start(false, 0) }, toLeft: function () { return this.start(0, false) }, toRight: function () { return this.start("right", false) }, toBottom: function () { return this.start(false, "bottom") }, toElement: function (d) { var c = document.id(d).getPosition(this.element), b = a(this.element) ? { x: 0, y: 0} : this.element.getScroll(); return this.start(c.x + b.x, c.y + b.y) }, scrollIntoView: function (d, g, e) { g = g ? Array.from(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 }, scrollToCenter: function (e, f, h) { f = f ? Array.from(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) { this.addEvent("complete", function () { this.open = (this.wrapper["offset" + this.layout.capitalize()] != 0); if (this.open && this.options.resetHeight) { this.wrapper.setStyle("height", "") } }, true); this.element = this.subject = document.id(b); this.parent(a); var d = this.element.retrieve("wrapper"); var c = this.element.getStyles("margin", "position", "overflow"); if (this.options.hideOverflow) { c = Object.append(c, { overflow: "hidden" }) } if (this.options.wrapper) { d = document.id(this.options.wrapper).setStyles(c) } this.wrapper = d || new Element("div", { styles: c }).wraps(this.element); this.element.store("wrapper", this.wrapper).setStyle("margin", 0); this.now = []; this.open = 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(); var c = this.wrapper.getStyle(this.layout).toInt(); var a = [[d, c], [0, this.offset]]; var g = [[d, c], [-this.offset, 0]]; var 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 } }); var SmoothScroll = Fx.SmoothScroll = new Class({ Extends: Fx.Scroll, 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) }, 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).chain(function () { this.fireEvent("scrolledTo", [b, c]) } .bind(this)) } .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 = i = a = 0; e.each(function (l, j) { var k = {}; if (d) { k.top = i - f[l].top - b; i += f[l].height } else { k.left = a - f[l].left; a += f[l].width } b = b + f[l].margin; c[l] = k }, 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 }) }, 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 k = this.options; if (a.rightClick) { return } if (k.preventDefault) { a.preventDefault() } if (k.stopPropagation) { a.stopPropagation() } this.mouse.start = a.page; this.fireEvent("beforeStart", this.element); var c = k.limit; this.limit = { x: [], y: [] }; var j = this.element.getStyles("left", "right", "top", "bottom"); this._invert = { x: k.modifiers.x == "left" && j.left == "auto" && !isNaN(j.right.toInt()) && (k.modifiers.x = "right"), y: k.modifiers.y == "top" && j.top == "auto" && !isNaN(j.bottom.toInt()) && (k.modifiers.y = "bottom") }; var e, g; for (e in k.modifiers) { if (!k.modifiers[e]) { continue } var b = this.element.getStyle(k.modifiers[e]); if (b && !b.match(/px$/)) { if (!g) { g = this.element.getCoordinates(this.element.getOffsetParent()) } b = g[k.modifiers[e]] } if (k.style) { this.value.now[e] = (b || 0).toInt() } else { this.value.now[e] = this.element[k.modifiers[e]] } if (k.invert) { this.value.now[e] *= -1 } if (this._invert[e]) { 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 (this._invert[c]) { 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 e, c = b.getOffsetParent(); var 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]} }, checkDroppables: function () { var a = this.droppables.filter(function (d, c) { d = this.positions ? this.positions[c] : d.getCoordinates(); 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) { if (this.options.snap) { a = this.toPosition(this.step) } this.knob.setStyle(this.property, a) }, initialStep: 0, snap: false, offset: 0, range: false, wheel: false, steps: 100, mode: "horizontal" }, initialize: function (f, a, e) { this.setOptions(e); this.element = document.id(f); this.knob = document.id(a); this.previousChange = this.previousEnd = this.step = -1; var g, b = {}, d = { x: false, y: false }; switch (this.options.mode) { case "vertical": this.axis = "y"; this.property = "top"; g = "offsetHeight"; break; case "horizontal": this.axis = "x"; this.property = "left"; g = "offsetWidth" } this.full = this.element.measure(function () { this.half = this.knob[g] / 2; return this.element[g] - this.knob[g] + (this.options.offset * 2) } .bind(this)); this.setRange(this.options.range); this.knob.setStyle("position", "relative").setStyle(this.property, -this.options.offset); d[this.axis] = this.property; b[this.axis] = [-this.options.offset, this.full - this.options.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 (this.options.snap) { c.grid = Math.ceil(this.stepWidth); c.limit[this.axis][1] = this.full } this.drag = new Drag(this.knob, c); this.attach(); if (this.options.initialStep != null) { this.set(this.options.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); this.element.removeEvent("mousewheel", this.scrolledElement); this.drag.detach(); 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); this.checkStep(); this.fireEvent("tick", this.toPosition(this.step)); this.end(); return this }, 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); 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; var 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(); this.fireEvent("tick", a); this.end() }, scrolledElement: function (a) { var b = (this.options.mode == "horizontal") ? (a.wheel < 0) : (a.wheel > 0); this.set(b ? this.step - this.stepSize : this.step + this.stepSize); a.stop() }, draggedKnob: function () { var b = this.range < 0 ? -1 : 1; var 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 () { if (this.previousChange != this.step) { this.previousChange = this.step; this.fireEvent("change", this.step) } }, end: function () { if (this.previousEnd !== this.step) { this.previousEnd = this.step; this.fireEvent("complete", this.step + "") } }, 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: { snap: 4, opacity: 1, clone: false, revert: false, handle: false, constrain: false, preventDefault: false }, 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.push(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") }); 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"].contains(b.target.get("tag"))) { return } this.idle = false; this.element = a; this.opacity = a.get("opacity"); this.list = a.getParent(); this.clone = this.getClone(b, a); this.drag = new Drag.Move(this.clone, { preventDefault: this.options.preventDefault, snap: this.options.snap, container: this.options.constrain && this.element.getParent(), droppables: this.getDroppables(), onSnap: function () { b.stop(); this.clone.setStyle("visibility", "visible"); this.element.set("opacity", this.options.opacity || 0); this.fireEvent("start", [this.element, this.clone]) } .bind(this), onEnter: this.insert.bind(this), onCancel: this.reset.bind(this), onComplete: this.end.bind(this) }); this.clone.inject(this.element, "before"); this.drag.start(b) }, end: function () { this.drag.detach(); this.element.set("opacity", this.opacity); if (this.effect) { var a = this.element.getStyles("width", "height"); var b = this.clone.computePosition(this.element.getPosition(this.clone.getOffsetParent())); this.effect.element = this.clone; this.effect.start({ top: b.top, left: b.left, width: a.width, height: a.height, opacity: 0.25 }).chain(this.reset.bind(this)) } else { this.reset() } }, reset: function () { this.idle = true; this.clone.destroy(); 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) } var a = this.getScript(f).inject(c.injectScript); this.fireEvent("request", [a.get("src"), a]); Request.JSONP.request_map["request_" + b] = function () { this.success(arguments, b) } .bind(this); if (c.timeout) { (function () { if (this.running) { this.fireEvent("timeout", [a.get("src"), a]).fireEvent("failure").cancel() } }).delay(c.timeout, this) } return this }, getScript: function (a) { return this.script = new Element("script", { type: "text/javascript", src: a }) }, success: function (b, a) { if (!this.running) { return false } this.clear().fireEvent("complete", b).fireEvent("success", b).callChain() }, cancel: function () { return this.running ? this.clear().fireEvent("cancel") : this }, isRunning: function () { return !!this.running }, clear: function () { if (this.script) { this.script.destroy() } this.running = false; 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) { if (a) { var 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) { b = Object.append({ document: document }, b); if (b.onLoad) { b.onload = b.onLoad; delete b.onLoad } var a = new Element("script", { src: d, type: "text/javascript" }); var c = b.onload || function () { }, e = b.document; delete b.onload; delete b.document; return a.addEvents({ load: c, readystatechange: function () { if (["loaded", "complete"].contains(this.readyState)) { c.call(this) } } }).set(b).inject(e.head) }, css: function (b, a) { a = a || {}; var c = a.onload || a.onLoad; if (c) { a.events = a.events || {}; a.events.load = c; delete a.onload; delete a.onLoad } return new Element("link", Object.merge({ rel: "stylesheet", media: "screen", type: "text/css", href: b }, a)).inject(document.head) }, image: function (c, b) { b = Object.merge({ onload: function () { }, onabort: function () { }, onerror: function () { } }, b); var d = new Image(); var a = document.id(d) || new Element("img"); ["load", "abort", "error"].each(function (e) { var g = "on" + e; var f = e.capitalize(); if (b["on" + f]) { b[g] = b["on" + f]; delete b["on" + f] } var h = b[g]; 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) { b = Object.merge({ onComplete: function () { }, onProgress: function () { }, onError: function () { }, properties: {} }, b); c = Array.from(c); var a = 0; return new Elements(c.map(function (e, d) { return Asset.image(e, Object.append(b.properties, { onload: function () { a++; b.onProgress.call(this, a, d, e); if (a == c.length) { b.onComplete() } }, onerror: function () { a++; b.onError.call(this, a, d, e); if (a == c.length) { b.onComplete() } } })) })) } }; (function () { var d = this.Color = new Type("Color", function (f, g) { if (arguments.length >= 3) { g = "rgb"; f = Array.slice(arguments, 0, 3) } else { if (typeof f == "string") { if (f.match(/rgb/)) { f = f.rgbToHex().hexToRgb(true) } else { if (f.match(/hsb/)) { f = f.hsbToRgb() } else { f = f.hexToRgb(true) } } } } g = g || "rgb"; switch (g) { case "hsb": var e = f; f = f.hsbToRgb(); f.hsb = e; break; case "hex": f = f.hexToRgb(true); break } f.rgb = f.slice(0, 3); f.hsb = f.hsb || f.rgbToHsb(); f.hex = f.rgbToHex(); return Object.append(f, this) }); d.implement({ mix: function () { var e = Array.slice(arguments); var g = (typeOf(e.getLast()) == "number") ? e.pop() : 50; var f = this.slice(); e.each(function (h) { h = new d(h); for (var j = 0; j < 3; j++) { f[j] = Math.round((f[j] / 100 * (100 - g)) + (h[j] / 100 * g)) } }); return new d(f, "rgb") }, invert: function () { return new d(this.map(function (e) { return 255 - e })) }, setHue: function (e) { return new d([e, this.hsb[1], this.hsb[2]], "hsb") }, setSaturation: function (e) { return new d([this.hsb[0], e, this.hsb[2]], "hsb") }, setBrightness: function (e) { return new d([this.hsb[0], this.hsb[1], e], "hsb") } }); var b = function (h, f, e) { return new d([h, f, e], "rgb") }; var a = function (g, f, e) { return new d([g, f, e], "hsb") }; var c = function (e) { return new d(e, "hex") }; Array.implement({ rgbToHsb: function () { var f = this[0], g = this[1], n = this[2], k = 0; var m = Math.max(f, g, n), i = Math.min(f, g, n); var o = m - i; var l = m / 255, j = (m != 0) ? o / m : 0; if (j != 0) { var h = (m - f) / o; var e = (m - g) / o; var p = (m - n) / o; if (f == m) { k = p - e } else { if (g == m) { k = 2 + h - p } else { k = 4 + e - h } } k /= 6; if (k < 0) { k++ } } return [Math.round(k * 360), Math.round(j * 100), Math.round(l * 100)] }, hsbToRgb: function () { var h = Math.round(this[2] / 100 * 255); if (this[1] == 0) { return [h, h, h] } else { var e = this[0] % 360; var j = e % 60; var k = Math.round((this[2] * (100 - this[1])) / 10000 * 255); var i = Math.round((this[2] * (6000 - this[1] * j)) / 600000 * 255); var g = Math.round((this[2] * (6000 - this[1] * (60 - j))) / 600000 * 255); switch (Math.floor(e / 60)) { case 0: return [h, g, k]; case 1: return [i, h, k]; case 2: return [k, h, g]; case 3: return [k, i, h]; case 4: return [g, k, h]; case 5: return [h, k, i] } } return false } }); String.implement({ rgbToHsb: function () { var e = this.match(/\d{1,3}/g); return (e) ? e.rgbToHsb() : null }, hsbToRgb: function () { var e = this.match(/\d{1,3}/g); return (e) ? e.hsbToRgb() : null } }) })(); (function () { this.Group = new Class({ initialize: function () { this.instances = Array.flatten(arguments); this.events = {}; this.checker = {} }, addEvent: function (b, a) { this.checker[b] = this.checker[b] || {}; this.events[b] = this.events[b] || []; if (this.events[b].contains(a)) { return false } else { this.events[b].push(a) } this.instances.each(function (c, d) { c.addEvent(b, this.check.pass([b, c, d], this)) }, this); return this }, check: function (c, a, b) { this.checker[c][b] = true; var d = this.instances.every(function (f, e) { return this.checker[c][e] || false }, this); if (!d) { return } this.checker[c] = {}; this.events[c].each(function (e) { e.call(this, this.instances, a) }, this) } }) })(); 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 }) } }); 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 }); this.setOptions(a.options); 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 = document.id(this.thead.rows[0]) } 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); ["adopt", "inject", "wraps", "grab", "replaces", "dispose"].each(function (a) { this[a] = this.element[a].bind(this.element) }, this) }, toElement: function () { return this.element }, empty: function () { this.body.empty(); return this }, set: function (d, a) { var c = (d == "headers") ? "tHead" : "tFoot"; this[c.toLowerCase()] = (document.id(this.element[c]) || new Element(c.toLowerCase()).inject(this.element, "top")).empty(); var b = this.push(a, {}, this[c.toLowerCase()], d == "headers" ? "th" : "td"); if (d == "headers") { this.head = document.id(this.thead.rows[0]) } else { this.foot = document.id(this.thead.rows[0]) } return b }, setHeaders: function (a) { this.set("headers", a); return this }, setFooters: function (a) { this.set("footers", a); return this }, push: function (e, b, d, a) { if (typeOf(e) == "element" && e.get("tag") == "tr") { e.inject(d || this.body); return { tr: e, tds: e.getChildren("td")} } var c = e.map(function (h) { var i = new Element(a || "td", h ? h.properties : {}), g = (h ? h.content : "") || h, f = document.id(g); if (typeOf(g) != "string" && f) { i.adopt(f) } else { i.set("html", g) } return i }); return { tr: new Element("tr", b).inject(d || this.body).adopt(c), tds: c} } }); HtmlTable = Class.refactor(HtmlTable, { options: { classZebra: "table-tr-odd", zebra: true }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded } if (this.options.zebra) { this.updateZebras() } }, updateZebras: function () { Array.each(this.body.rows, this.zebra, this) }, 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 }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded } this.sorted = { index: null, dir: 1 }; 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.element.removeEvents("click:relay(th)"); this.element[a !== false ? "addEvent" : "removeEvent"]("click:relay(th)", this.bound.headClick) }, setHeaders: function () { this.previous.apply(this, arguments); if (this.sortEnabled) { this.detectParsers() } }, detectParsers: function (c) { if (!this.head) { return } var a = this.options.parsers, b = this.body.rows; this.parsers = $$(this.head.cells).map(function (d, e) { if (!c && (d.hasClass(this.options.classNoSort) || d.retrieve("htmltable-parser"))) { return d.retrieve("htmltable-parser") } var f = new Element("div"); Array.each(d.childNodes, function (j) { f.adopt(j) }); f.inject(d); var h = new Element("span", { html: "&#160;", "class": this.options.classSortSpan }).inject(f, "top"); this.sortSpans.push(h); var i = a[e], g; switch (typeOf(i)) { case "function": i = { convert: i }; g = true; break; case "string": i = i; g = true; break } if (!g) { Object.some(HtmlTable.Parsers, function (o) { var m = o.match; if (!m) { return false } for (var n = 0, l = b.length; n < l; n++) { var k = document.id(b[n].cells[e]); var p = k ? k.get("html").clean() : ""; if (p && m.test(p)) { i = o; return true } } }) } if (!i) { i = this.options.defaultParser } d.store("htmltable-parser", i); return i }, this) }, headClick: function (c, b) { if (!this.head || b.hasClass(this.options.classNoSort)) { return } var a = Array.indexOf(this.head.cells, b); this.sort(a); return false }, sort: function (f, h, m) { if (!this.head) { return } var l = this.options.classCellSort; var o = this.options.classGroup, t = this.options.classGroupHead; if (!m) { if (f != null) { if (this.sorted.index == f) { this.sorted.reverse = !(this.sorted.reverse) } else { if (this.sorted.index != null) { this.sorted.reverse = false; this.head.cells[this.sorted.index].removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev) } else { this.sorted.reverse = true } this.sorted.index = f } } else { f = this.sorted.index } if (h != null) { this.sorted.reverse = h } var d = document.id(this.head.cells[f]); if (d) { d.addClass(this.options.classHeadSort); if (this.sorted.reverse) { d.addClass(this.options.classHeadSortRev) } else { d.removeClass(this.options.classHeadSortRev) } } this.body.getElements("td").removeClass(this.options.classCellSort) } var c = this.parsers[f]; if (typeOf(c) == "string") { c = HtmlTable.Parsers[c] } if (!c) { return } if (!Browser.ie) { var b = this.body.getParent(); this.body.dispose() } var s = Array.map(this.body.rows, function (v, j) { var u = c.convert.call(document.id(v.cells[f])); return { position: j, value: u, toString: function () { return u.toString() } } }, this); s.reverse(true); s.sort(function (j, i) { if (j.value === i.value) { return 0 } return j.value > i.value ? 1 : -1 }); if (!this.sorted.reverse) { s.reverse(true) } var p = s.length, k = this.body; var n, r, a, g; while (p) { var q = s[--p]; r = q.position; var e = k.rows[r]; if (e.disabled) { continue } if (!m) { if (g === q.value) { e.removeClass(t).addClass(o) } else { g = q.value; e.removeClass(o).addClass(t) } if (this.options.zebra) { this.zebra(e, p) } e.cells[f].addClass(l) } k.appendChild(e); for (n = 0; n < p; n++) { if (s[n].position > r) { s[n].position-- } } } s = null; if (b) { b.grab(k) } return this.fireEvent("sort", [k, f]) }, 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.detectParsers(); 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.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() } }, title: { match: null, convert: function () { return this.title } } }; HtmlTable.Parsers = new Hash(HtmlTable.Parsers); HtmlTable.defineParsers = function (a) { HtmlTable.Parsers = Object.append(HtmlTable.Parsers, a) }; (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() }, setup: function () { this.addEvents(this.options.events); if (a.manager && !this.manager) { a.manager.manage(this) } if (this.options.active) { this.activate() } }, 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) } }, 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) } }, manage: function (f) { if (f.manager && f.manager != a.manager && this != a.manager) { f.manager.drop(f) } this.instances.push(f); f.manager = this; if (!this.activeKB) { this.activate(f) } }, _disable: function (f) { if (this.activeKB == f) { this.activeKB = null } }, drop: function (f) { this._disable(f); this.instances.erase(f); a.manager.manage(f); if (this.activeKB == f && this.previous && this.instances.contains(this.previous)) { this.activate(this.previous) } }, instances: [], trace: function () { a.trace(this) }, each: function (f) { a.each(this, f) } }); 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.from(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 }, initialize: function () { this.previous.apply(this, arguments); if (this.occluded) { return this.occluded } this._selectedRows = new Elements(); this._bound = { mouseleave: this._mouseleave.bind(this), clickRow: this._clickRow.bind(this) }; if (this.options.selectable) { this.enableSelect() } }, enableSelect: function () { this._selectEnabled = true; this._attachSelects(); this.element.addClass(this.options.classSelectable) }, disableSelect: function () { this._selectEnabled = false; this._attachSelects(false); this.element.removeClass(this.options.classSelectable) }, push: function () { var a = this.previous.apply(this, arguments); this._updateSelects(); return a }, isSelected: function (a) { return this._selectedRows.contains(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._focused = b; document.clearSelection(); return this }, deselectRow: function (b, a) { if (!this.isSelected(b) || (!a && !this.body.getChildren().contains(b))) { return } this._selectedRows = new Elements(Array.from(this._selectedRows).erase(b)); b.removeClass(this.options.classRowSelected); this.fireEvent("rowUnfocus", [b, this._selectedRows]); 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++) { this[g](e[c], true) } return this }, deselectRange: function (b, a) { this.selectRange(b, a, true) }, _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) || (!b && !this._selectEnabled)) { return } if (!b) { b = { mouseenter: this._enterRow.pass([a], this), mouseleave: this._leaveRow.pass([a], this) }; a.store("binders", b).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); 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 (c) { if (!this._focused) { return 0 } var b = Array.clone(this.body.rows), a = b.indexOf(this._focused) + c; if (a < 0) { a = null } if (a >= b.length) { a = null } return a }, _attachSelects: function (d) { d = d != null ? d : true; var g = d ? "addEvents" : "removeEvents"; this.element[g]({ mouseleave: this._bound.mouseleave }); this.body[g]({ "click:relay(tr)": this._bound.clickRow, "contextmenu:relay(tr)": this._bound.clickRow }); if (this.options.useKeyboard || this.keyboard) { if (!this.keyboard) { var f, e; var c = function (i) { var h = function (j) { clearTimeout(f); j.preventDefault(); var k = this.body.rows[this._getRowByOffset(i)]; 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 = new Keyboard({ events: { "keydown:shift+up": c(-1), "keydown:shift+down": c(1), "keyup:shift+up": b, "keyup:shift+down": b, "keyup:up": b, "keyup:down": b }, active: true }); 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({ mouseenter: this.bound.attach, mouseleave: this.bound.detach }); return this }, stop: function () { this.listener.removeEvents({ mouseenter: 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 }, 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" }) }, 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 }, 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) { this.container.empty(); ["title", "text"].each(function (e) { var d = b.retrieve("tip:" + e); if (d) { this.fill(new Element("div", { "class": "tip-" + e }).inject(this.container), d) } }, this); clearTimeout(this.timer); this.timer = (function () { 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) }, 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 (c, b) { if (instanceOf(c, Locale.Set)) { return c } if (!b && typeOf(c) == "string") { b = "json" } if (a[b]) { c = a[b](c) } locale = new Locale.Set; locale.sets = c.sets || {}; if (c.inherits) { locale.inherits.locales = Array.from(c.inherits.locales); locale.inherits.sets = c.inherits.sets || {} } return locale } })(); 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.google.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", 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.google.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.", 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.google.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", 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.google.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", 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. &quot;1&quot;, &quot;1.1&quot;, &quot;-1&quot; oder &quot;-1.1&quot;).", 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&uuml;ltiges Datum ein. Wie zum Beispiel {date}", dateInFormatMDY: "Geben Sie bitte ein g&uuml;ltiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. &quot;31.12.1999&quot;)", email: "Geben Sie bitte eine g&uuml;ltige E-Mail Adresse ein. Wie zum Beispiel &quot;maria@bernasconi.ch&quot;.", url: "Geben Sie bitte eine g&uuml;ltige URL ein. Wie zum Beispiel http://www.google.ch.", currencyDollar: "Geben Sie bitte einen g&uuml;ltigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .", oneRequired: "Machen Sie f&uuml;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&auml;hlt.", requiredChk: "Dieses Feld ist obligatorisch.", reqChkByName: "Bitte w&auml;hlen Sie ein {label}.", match: "Dieses Eingabefeld muss mit dem Feld {matchName} &uuml;bereinstimmen.", startDate: "Das Anfangsdatum", endDate: "Das Enddatum", currendDate: "Das aktuelle Datum", afterDate: "Das Datum sollte zur gleichen Zeit oder sp&auml;ter sein {label}.", beforeDate: "Das Datum sollte zur gleichen Zeit oder fr&uuml;her sein {label}.", startMonth: "W&auml;hlen Sie bitte einen Anfangsmonat", sameMonth: "Diese zwei Datumsangaben m&uuml;ssen im selben Monat sein - Sie m&uuml;ssen eine von beiden ver&auml;ndern.", creditcard: "Die eingegebene Kreditkartennummer ist ung&uuml;ltig. Bitte &uuml;berpr&uuml;fen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben." }); Locale.define("de-DE", "FormValidator", { required: "Dieses Eingabefeld muss ausgef&uuml;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. &quot;1.25&quot;) sind nicht erlaubt.", numeric: "Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. &quot;1&quot;, &quot;1.1&quot;, &quot;-1&quot; oder &quot;-1.1&quot;) 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&uuml;ltiges Datum ein (z.B. &quot;{date}&quot;).", dateInFormatMDY: "Geben Sie bitte ein g&uuml;ltiges Datum im Format TT.MM.JJJJ ein (z.B. &quot;31.12.1999&quot;).", email: "Geben Sie bitte eine g&uuml;ltige E-Mail-Adresse ein (z.B. &quot;max@mustermann.de&quot;).", url: "Geben Sie bitte eine g&uuml;ltige URL ein (z.B. &quot;http://www.google.de&quot;).", currencyDollar: "Geben Sie bitte einen g&uuml;ltigen Betrag in EURO ein (z.B. 100.00&#8364;).", oneRequired: "Bitte f&uuml;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&auml;hlt.", requiredChk: "Dieses Feld muss ausgef&uuml;llt werden.", reqChkByName: "Bitte w&auml;hlen Sie ein {label}.", match: "Dieses Eingabefeld muss mit dem {matchName} Eingabefeld &uuml;bereinstimmen.", startDate: "Das Anfangsdatum", endDate: "Das Enddatum", currendDate: "Das aktuelle Datum", afterDate: "Das Datum sollte zur gleichen Zeit oder sp&auml;ter sein als {label}.", beforeDate: "Das Datum sollte zur gleichen Zeit oder fr&uuml;her sein als {label}.", startMonth: "W&auml;hlen Sie bitte einen Anfangsmonat", sameMonth: "Diese zwei Datumsangaben m&uuml;ssen im selben Monat sein - Sie m&uuml;ssen eines von beiden ver&auml;ndern.", creditcard: "Die eingegebene Kreditkartennummer ist ung&uuml;ltig. Bitte &uuml;berpr&uuml;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", 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.google.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&aacute;s de {maxLength} caracteres (has introducido {length} caracteres).", integer: "Por favor introduce un n&uacute;mero entero en este campo. N&uacute;meros con decimales (p.e. 1,25) no se permiten.", numeric: 'Por favor introduce solo valores num&eacute;ricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").', digits: "Por favor usa solo n&uacute;meros y puntuaci&oacute;n en este campo (por ejemplo, un n&uacute;mero de tel&eacute;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&uacute;meros (0-9) en este campo. No se admiten espacios ni otros caracteres.", dateSuchAs: "Por favor introduce una fecha v&aacute;lida como {date}", dateInFormatMDY: 'Por favor introduce una fecha v&aacute;lida como DD/MM/YYYY (p.e. "31/12/1999")', email: 'Por favor, introduce una direcci&oacute;n de email v&aacute;lida. Por ejemplo, "fred@domain.com".', url: "Por favor introduce una URL v&aacute;lida como http://www.google.com.", currencyDollar: "Por favor introduce una cantidad v&aacute;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", 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.google.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.google.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", 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.google.fi.", 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", 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.", minLength: "Veuillez saisir un minimum de {minLength} caract&egrave;re(s) (vous avez saisi {length} caract&egrave;re(s)).", maxLength: "Veuillez saisir un maximum de {maxLength} caract&egrave;re(s) (vous avez saisi {length} caract&egrave;re(s)).", integer: 'Veuillez saisir un nombre entier dans ce champ. Les nombres d&eacute;cimaux (ex : "1,25") ne sont pas autoris&eacute;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&eacute;ro de t&eacute;l&eacute;phone avec des traits d'union est autoris&eacute;).", alpha: "Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caract&egrave;res ne sont pas autoris&eacute;s.", alphanum: "Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caract&egrave;res ne sont pas autoris&eacute;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 &eacute;lectronique. Par example "fred@domaine.com".', url: "Veuillez saisir une URL, comme http://www.google.com.", currencyDollar: "Veuillez saisir une quantit&eacute; correcte. Par example 100,00&euro;.", oneRequired: "Veuillez s&eacute;lectionner au moins une de ces options.", errorPrefix: "Erreur : ", warningPrefix: "Attention : ", noSpace: "Ce champ n'accepte pas les espaces.", reqChkByNode: "Aucun &eacute;l&eacute;ment n'est s&eacute;lectionn&eacute;.", requiredChk: "Ce champ est obligatoire.", reqChkByName: "Veuillez s&eacute;lectionner un(e) {label}.", match: "Ce champ doit correspondre avec le champ {matchName}.", startDate: "date de d&eacute;but", endDate: "date de fin", currendDate: "date actuelle", afterDate: "La date doit &ecirc;tre identique ou post&eacute;rieure &agrave; {label}.", beforeDate: "La date doit &ecirc;tre identique ou ant&eacute;rieure &agrave; {label}.", startMonth: "Veuillez s&eacute;lectionner un mois de d&eacute;but.", sameMonth: "Ces deux dates doivent &ecirc;tre dans le m&ecirc;me mois - vous devez en modifier une.", creditcard: "Le num&eacute;ro de carte de cr&eacute;dit est invalide. Merci de v&eacute;rifier le num&eacute;ro et de r&eacute;essayer. Vous avez entr&eacute; {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", 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.google.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.", 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.google.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", 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", 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" }); Locale.define("it-IT", "FormValidator", { required: "Il campo &egrave; 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 &egrave; 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.dominio.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 &egrave; 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: "åˆå¾Œ", 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", 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.", 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.google.nl.", 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", 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.google.no.", 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", 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.google.pl.", 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", 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.google.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.google.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", 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-unicode").inherit("ru-RU", "Date") })(); 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.google.com.", currencyDollar: "ÐŸÐ¾Ð¶Ð°Ð»ÑƒÐ¹ÑÑ‚Ð°, Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ ÑÑƒÐ¼Ð¼Ñƒ Ð² Ð´Ð¾Ð»Ð»Ð°Ñ€Ð°Ñ…. ÐÐ°Ð¿Ñ€Ð¸Ð¼ÐµÑ€: $100.00 .", oneRequired: "ÐŸÐ¾Ð¶Ð°Ð»ÑƒÐ¹ÑÑ‚Ð°, Ð²Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ…Ð¾Ñ‚ÑŒ Ñ‡Ñ‚Ð¾-Ð½Ð¸Ð±ÑƒÐ´ÑŒ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð¸Ð· ÑÑ‚Ð¸Ñ… Ð¿Ð¾Ð»ÐµÐ¹.", errorPrefix: "ÐžÑˆÐ¸Ð±ÐºÐ°: ", warningPrefix: "Ð’Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ: " }); Locale.define("ru-RU-unicode").inherit("ru-RU", "FormValidator"); (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", 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.google.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: "", 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.google.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: "Ð¿Ð¾ Ð¿Ð¾Ð»ÑƒÐ´Ð½ÑŽ", 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.google.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", 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: ["ä¸€æœˆ", "äºŒæœˆ", "ä¸‰æœˆ", "å››æœˆ", "äº”æœˆ", "å…­æœˆ", "ä¸ƒæœˆ", "å…«æœˆ", "ä¹æœˆ", "åæœˆ", "åä¸€æœˆ", "åäºŒæœˆ"], days: ["æ˜ŸæœŸæ—¥", "æ˜ŸæœŸä¸€", "æ˜ŸæœŸäºŒ", "æ˜ŸæœŸä¸‰", "æ˜ŸæœŸå››", "æ˜ŸæœŸäº”", "æ˜ŸæœŸå…­"], dateOrder: ["year", "month", "date"], shortDate: "%Y-%m-%d", shortTime: "%I:%M%p", AM: "AM", PM: "PM", 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.google.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.google.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")) } });
