1// MooTools: the javascript framework. 2// Load this file's selection again by visiting: http://mootools.net/more/065f2f092ece4e3b32bb5214464cf926 3// Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/ElementCust.Forms More/Elements.From More/ElementCust.Event.Pseudos More/ElementCust.Event.Pseudos.Keys More/ElementCust.Measure More/ElementCust.Pin More/ElementCust.Position More/ElementCust.Shortcuts More/Form.Request More/Form.Request.Append More/Form.Validator More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Assets More/Color More/Group More/Hash.Cookie More/IframeShim More/Table More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Scroller More/Tips More/Spinner More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-US.Number More/Locale.ar.Date More/Locale.ar.Form.Validator More/Locale.ca-CA.Date More/Locale.ca-CA.Form.Validator More/Locale.cs-CZ.Date More/Locale.cs-CZ.Form.Validator More/Locale.da-DK.Date More/Locale.da-DK.Form.Validator More/Locale.de-CH.Date More/Locale.de-CH.Form.Validator More/Locale.de-DE.Date More/Locale.de-DE.Form.Validator More/Locale.de-DE.Number More/Locale.en-GB.Date More/Locale.es-AR.Date More/Locale.es-AR.Form.Validator More/Locale.es-ES.Date More/Locale.es-ES.Form.Validator More/Locale.et-EE.Date More/Locale.et-EE.Form.Validator More/Locale.EU.Number More/Locale.fa.Date More/Locale.fa.Form.Validator More/Locale.fi-FI.Date More/Locale.fi-FI.Form.Validator More/Locale.fi-FI.Number More/Locale.fr-FR.Date More/Locale.fr-FR.Form.Validator More/Locale.fr-FR.Number More/Locale.he-IL.Date More/Locale.he-IL.Form.Validator More/Locale.he-IL.Number More/Locale.hu-HU.Date More/Locale.hu-HU.Form.Validator More/Locale.it-IT.Date More/Locale.it-IT.Form.Validator More/Locale.ja-JP.Date More/Locale.ja-JP.Form.Validator More/Locale.ja-JP.Number More/Locale.nl-NL.Date More/Locale.nl-NL.Form.Validator More/Locale.nl-NL.Number More/Locale.no-NO.Date More/Locale.no-NO.Form.Validator More/Locale.pl-PL.Date More/Locale.pl-PL.Form.Validator More/Locale.pt-BR.Date More/Locale.pt-BR.Form.Validator More/Locale.pt-PT.Date More/Locale.pt-PT.Form.Validator More/Locale.ru-RU-unicode.Date More/Locale.ru-RU-unicode.Form.Validator More/Locale.si-SI.Date More/Locale.si-SI.Form.Validator More/Locale.sv-SE.Date More/Locale.sv-SE.Form.Validator More/Locale.uk-UA.Date More/Locale.uk-UA.Form.Validator More/Locale.zh-CH.Date More/Locale.zh-CH.Form.Validator 4/* 5--- 6copyrights: 7 - [MooTools](http://mootools.net) 8 9licenses: 10 - [MIT License](http://mootools.net/license.txt) 11... 12*/ 13MooTools.More = { 14 version: "1.4.0.1", 15 build: "a4244edf2aa97ac8a196fc96082dd35af1abab87", 16}; 17// (function () { 18// Events.Pseudos = function (h, e, f) { 19// var d = "_monitorEvents:"; 20// var c = function (i) { 21// return { 22// store: i.store 23// ? function (j, k) { 24// i.store(d + j, k); 25// } 26// : function (j, k) { 27// (i._monitorEvents || (i._monitorEvents = {}))[j] = k; 28// }, 29// retrieve: i.retrieve 30// ? function (j, k) { 31// return i.retrieve(d + j, k); 32// } 33// : function (j, k) { 34// if (!i._monitorEvents) { 35// return k; 36// } 37// return i._monitorEvents[j] || k; 38// }, 39// }; 40// }; 41// var g = function (k) { 42// if (k.indexOf(":") == -1 || !h) { 43// return null; 44// } 45// var j = Slick.parse(k).expressions[0][0], 46// p = j.pseudos, 47// i = p.length, 48// o = []; 49// while (i--) { 50// var n = p[i].key, 51// m = h[n]; 52// if (m != null) { 53// o.push({ 54// event: j.tag, 55// value: p[i].value, 56// pseudo: n, 57// original: k, 58// listener: m, 59// }); 60// } 61// } 62// return o.length ? o : null; 63// }; 64// return { 65// addEvent: function (m, p, j) { 66// var n = g(m); 67// console.log(e); 68// console.log(m); 69// console.log(p); 70// console.log(j); 71// console.log('jk'); 72// if (!n) { 73// return e.call(this, m, p, j); 74// } 75// var k = c(this), 76// r = k.retrieve(m, []), 77// i = n[0].event, 78// l = Array.slice(arguments, 2), 79// o = p,
80// q = this; 81// n.each(function (s) { 82// var t = s.listener, 83// u = o; 84// if (t == false) { 85// i += ":" + s.pseudo + "(" + s.value + ")"; 86// } else { 87// o = function () { 88// t.call(q, s, u, arguments, o); 89// }; 90// } 91// }); 92// r.include({ type: i, event: p, monitor: o }); 93// k.store(m, r); 94// if (m != i) { 95// e.apply(this, [m, p].concat(l)); 96// } 97// return e.apply(this, [i, o].concat(l)); 98// }, 99// removeEvent: function (m, l) { 100// var k = g(m); 101// if (!k) { 102// return f.call(this, m, l); 103// } 104// var n = c(this), 105// j = n.retrieve(m); 106// if (!j) { 107// return this; 108// } 109// var i = Array.slice(arguments, 2); 110// f.apply(this, [m, l].concat(i)); 111// j.each(function (o, p) { 112// if (!l || o.event == l) { 113// f.apply(this, [o.type, o.monitor].concat(i)); 114// } 115// delete j[p]; 116// }, this); 117// n.store(m, j); 118// return this; 119// }, 120// }; 121// }; 122// var b = { 123// once: function (e, f, d, c) { 124// f.apply(this, d); 125// this.removeEvent(e.event, c).removeEvent(e.original, f); 126// }, 127// throttle: function (d, e, c) { 128// if (!e._throttled) { 129// e.apply(this, c); 130// e._throttled = setTimeout(function () { 131// e._throttled = false; 132// }, d.value || 250); 133// } 134// }, 135// pause: function (d, e, c) { 136// clearTimeout(e._pause); 137// e._pause = e.delay(d.value || 250, this, c); 138// }, 139// }; 140// Events.definePseudo = function (c, d) { 141// b[c] = d; 142// return this; 143// }; 144// Events.lookupPseudo = function (c) { 145// return b[c]; 146// }; 147// var a = Events.prototype; 148// Events.implement(Events.Pseudos(b, a.addEvent, a.removeEvent)); 149// ["Request", "Fx"].each(function (c) { 150// if (this[c]) { 151// this[c].implement(Events.prototype); 152// } 153// }); 154// })(); 155Class.refactor = function (b, a) { 156 Object.each(a, function (e, d) { 157 var c = b.prototype[d]; 158 c = (c && c.$origin) || c || function () {}; 159 b.implement( 160 d, 161 typeof e == "function" 162 ? function () { 163 var f = this.previous; 164 this.previous = c; 165 var g = e.apply(this, arguments); 166 this.previous = f; 167 return g; 168 } 169 : e 170 ); 171 }); 172 return b; 173}; 174Class.Mutators.Binds = function (a) { 175 if (!this.prototype.initialize) { 176 this.implement("initialize", function () {}); 177 } 178 return Array.from(a).concat(this.prototype.Binds || []); 179}; 180Class.Mutators.initialize = function (a) { 181 return function () { 182 Array.from(this.Binds).each(function (b) { 183 var c = this[b]; 184 if (c) { 185 this[b] = c.bind(this); 186 } 187 }, this); 188 return a.apply(this, arguments); 189 }; 190}; 191Class.Occlude = new Class({ 192 occlude: function (c, b) { 193 b = document.id(b || this.ElementCust); 194 var a = b.retrieve(c || this.property); 195 if (a && !this.occluded) { 196 return (this.occluded = a); 197 } 198 this.occluded = false; 199 b.store(c || this.property, this); 200 return this.occluded; 201 }, 202}); 203(function () { 204 var a = { 205 wait: function (b) { 206 return this.chain( 207 function () { 208 this.callChain.delay(b == null ? 500 : b, this); 209 return this; 210 }.bind(this) 211 ); 212 }, 213 }; 214 Chain.implement(a); 215 if (this.Fx) { 216 Fx.implement(a); 217 } 218 if (this.ElementCust && ElementCust.implement && this.Fx) { 219 ElementCust.implement({ 220 chains: function (b) { 221 Array.from(b || ["tween", "morph", "reveal"]).each(function (c) { 222 c = this.get(c); 223 if (!c) { 224 return; 225 } 226 c.setOptions({ link: "chain" }); 227 }, this); 228 return this; 229 }, 230 pauseFx: function (c, b) { 231 this.chains(b) 232 .get(b || "tween") 233 .wait(c); 234 return this; 235 }, 236 }); 237 } 238})(); 239(function (a) { 240 Array.implement({ 241 min: function () { 242 return Math.min.apply(null, this); 243 }, 244 max: function () { 245 return Math.max.apply(null, this); 246 }, 247 average: function () { 248 return this.length ? this.sum() / this.length : 0; 249 }, 250 sum: function () { 251 var b = 0, 252 c = this.length; 253 if (c) { 254 while (c--) { 255 b += this[c]; 256 } 257 } 258 return b; 259 }, 260 unique: function () { 261 return [].combine(this); 262 }, 263 shuffle: function () { 264 for (var c = this.length; c && --c; ) { 265 var b = this[c], 266 d = Math.floor(Math.random() * (c + 1)); 267 this[c] = this[d]; 268 this[d] = b; 269 } 270 return this; 271 }, 272 reduce: function (d, e) { 273 for (var c = 0, b = this.length; c < b; c++) { 274 if (c in this) {
275 e = e === a ? this[c] : d.call(null, e, this[c], c, this); 276 } 277 } 278 return e; 279 }, 280 reduceRight: function (c, d) { 281 var b = this.length; 282 while (b--) { 283 if (b in this) { 284 d = d === a ? this[b] : c.call(null, d, this[b], b, this); 285 } 286 } 287 return d; 288 }, 289 }); 290})(); 291(function () { 292 var b = function (c) { 293 return c != null; 294 }; 295 var a = Object.prototype.hasOwnProperty; 296 Object.extend({ 297 getFromPath: function (e, f) { 298 if (typeof f == "string") { 299 f = f.split("."); 300 } 301 for (var d = 0, c = f.length; d < c; d++) { 302 if (a.call(e, f[d])) { 303 e = e[f[d]]; 304 } else { 305 return null; 306 } 307 } 308 return e; 309 }, 310 cleanValues: function (c, e) { 311 e = e || b; 312 for (var d in c) { 313 if (!e(c[d])) { 314 delete c[d]; 315 } 316 } 317 return c; 318 }, 319 erase: function (c, d) { 320 if (a.call(c, d)) { 321 delete c[d]; 322 } 323 return c; 324 }, 325 run: function (d) { 326 var c = Array.slice(arguments, 1); 327 for (var e in d) { 328 if (d[e].apply) { 329 d[e].apply(d, c); 330 } 331 } 332 return d; 333 }, 334 }); 335})(); 336(function () { 337 var b = null, 338 a = {}, 339 d = {}; 340 var c = function (f) { 341 if (instanceOf(f, e.Set)) { 342 return f; 343 } else { 344 return a[f]; 345 } 346 }; 347 var e = (this.Locale = { 348 define: function (f, j, h, i) { 349 var g; 350 if (instanceOf(f, e.Set)) { 351 g = f.name; 352 if (g) { 353 a[g] = f; 354 } 355 } else { 356 g = f; 357 if (!a[g]) { 358 a[g] = new e.Set(g); 359 } 360 f = a[g]; 361 } 362 if (j) { 363 f.define(j, h, i); 364 } 365 if (!b) { 366 b = f; 367 } 368 return f; 369 }, 370 use: function (f) { 371 f = c(f); 372 if (f) { 373 b = f; 374 this.fireEvent("change", f); 375 } 376 return this; 377 }, 378 getCurrent: function () { 379 return b; 380 }, 381 get: function (g, f) { 382 return b ? b.get(g, f) : ""; 383 }, 384 inherit: function (f, g, h) { 385 f = c(f); 386 if (f) { 387 f.inherit(g, h); 388 } 389 return this; 390 }, 391 list: function () { 392 return Object.keys(a); 393 }, 394 }); 395 Object.append(e, new Events()); 396 e.Set = new Class({ 397 sets: {}, 398 inherits: { locales: [], sets: {} }, 399 initialize: function (f) { 400 this.name = f || ""; 401 }, 402 define: function (i, g, h) { 403 var f = this.sets[i]; 404 if (!f) { 405 f = {}; 406 } 407 if (g) { 408 if (typeOf(g) == "object") { 409 f = Object.merge(f, g); 410 } else { 411 f[g] = h; 412 } 413 } 414 this.sets[i] = f; 415 return this; 416 }, 417 get: function (r, j, q) { 418 var p = Object.getFromPath(this.sets, r); 419 if (p != null) { 420 var m = typeOf(p); 421 if (m == "function") { 422 p = p.apply(null, Array.from(j)); 423 } else { 424 if (m == "object") { 425 p = Object.clone(p); 426 } 427 } 428 return p; 429 } 430 var h = r.indexOf("."), 431 o = h < 0 ? r : r.substr(0, h), 432 k = (this.inherits.sets[o] || []) 433 .combine(this.inherits.locales) 434 .include("en-US"); 435 if (!q) { 436 q = []; 437 } 438 for (var g = 0, f = k.length; g < f; g++) { 439 if (q.contains(k[g])) { 440 continue; 441 } 442 q.include(k[g]); 443 var n = a[k[g]]; 444 if (!n) { 445 continue; 446 } 447 p = n.get(r, j, q); 448 if (p != null) { 449 return p; 450 } 451 } 452 return ""; 453 }, 454 inherit: function (g, h) { 455 g = Array.from(g); 456 if (h && !this.inherits.sets[h]) { 457 this.inherits.sets[h] = []; 458 } 459 var f = g.length; 460 while (f--) { 461 (h ? this.inherits.sets[h] : this.inherits.locales).unshift(g[f]); 462 } 463 return this; 464 }, 465 }); 466})(); 467Locale.define("en-US", "Date", { 468 months: [ 469 "January", 470 "February", 471 "March", 472 "April", 473 "May", 474 "June", 475 "July", 476 "August", 477 "September", 478 "October", 479 "November", 480 "December", 481 ], 482 months_abbr: [ 483 "Jan", 484 "Feb", 485 "Mar", 486 "Apr", 487 "May", 488 "Jun", 489 "Jul", 490 "Aug", 491 "Sep", 492 "Oct", 493 "Nov", 494 "Dec", 495 ], 496 days: [ 497 "Sunday", 498 "Monday", 499 "Tuesday", 500 "Wednesday", 501 "Thursday", 502 "Friday", 503 "Saturday", 504 ], 505 days_abbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 506 dateOrder: ["month", "date", "year"], 507 shortDate: "%m/%d/%Y", 508 shortTime: "%I:%M%p", 509 AM: "AM", 510 PM: "PM", 511 firstDayOfWeek: 0, 512 ordinal: function (a) { 513 return a > 3 && a < 21 514 ? "th" 515 : ["th", "st", "nd", "rd", "th"][Math.min(a % 10, 4)]; 516 }, 517 lessThanMinuteAgo: "less than a minute ago", 518 minuteAgo: "about a minute ago", 519 minutesAgo: "{delta} minutes ago", 520 hourAgo: "about an hour ago", 521 hoursAgo: "about {delta} hours ago", 522 dayAgo: "1 day ago", 523 daysAgo: "{delta} days ago", 524 weekAgo: "1 week ago", 525 weeksAgo: "{delta} weeks ago", 526 monthAgo: "1 month ago", 527 monthsAgo: "{delta} months ago", 528 yearAgo: "1 year ago", 529 yearsAgo: "{delta} years ago", 530 lessThanMinuteUntil: "less than a minute from now", 531 minuteUntil: "about a minute from now", 532 minutesUntil: "{delta} minutes from now", 533 hourUntil: "about an hour from now", 534 hoursUntil: "about {delta} hours from now", 535 dayUntil: "1 day from now", 536 daysUntil: "{delta} days from now", 537 weekUntil: "1 week from now", 538 weeksUntil: "{delta} weeks from now", 539 monthUntil: "1 month from now", 540 monthsUntil: "{delta} months from now", 541 yearUntil: "1 year from now", 542 yearsUntil: "{delta} years from now", 543}); 544(function () { 545 var a = this.Date; 546 var f = (a.Methods = { 547 ms: "Milliseconds", 548 year: "FullYear", 549 min: "Minutes", 550 mo: "Month", 551 sec: "Seconds", 552 hr: "Hours", 553 }); 554 [ 555 "Date", 556 "Day", 557 "FullYear", 558 "Hours", 559 "Milliseconds", 560 "Minutes", 561 "Month", 562 "Seconds", 563 "Time", 564 "TimezoneOffset", 565 "Week", 566 "Timezone", 567 "GMTOffset", 568 "DayOfYear", 569 "LastMonth", 570 "LastDayOfMonth", 571 "UTCDate", 572 "UTCDay", 573 "UTCFullYear", 574 "AMPM", 575 "Ordinal", 576 "UTCHours", 577 "UTCMilliseconds", 578 "UTCMinutes", 579 "UTCMonth", 580 "UTCSeconds", 581 "UTCMilliseconds", 582 ].each(function (s) { 583 a.Methods[s.toLowerCase()] = s; 584 }); 585 var p = function (u, t, s) { 586 if (t == 1) { 587 return u; 588 } 589 return u < Math.pow(10, t - 1) ? (s || "0") + p(u, t - 1, s) : u; 590 }; 591 a.implement({ 592 set: function (u, s) { 593 u = u.toLowerCase(); 594 var t = f[u] && "set" + f[u]; 595 if (t && this[t]) { 596 this[t](s); 597 } 598 return this; 599 }.overloadSetter(), 600 get: function (t) { 601 t = t.toLowerCase(); 602 var s = f[t] && "get" + f[t]; 603 if (s && this[s]) { 604 return this[s](); 605 } 606 return null; 607 }.overloadGetter(), 608 clone: function () { 609 return new a(this.get("time")); 610 }, 611 increment: function (s, u) { 612 s = s || "day"; 613 u = u != null ? u : 1; 614 switch (s) { 615 case "year": 616 return this.increment("month", u * 12); 617 case "month": 618 var t = this.get("date"); 619 this.set("date", 1).set("mo", this.get("mo") + u); 620 return this.set("date", t.min(this.get("lastdayofmonth"))); 621 case "week": 622 return this.increment("day", u * 7); 623 case "day": 624 return this.set("date", this.get("date") + u); 625 } 626 if (!a.units[s]) { 627 throw new Error(s + " is not a supported interval"); 628 } 629 return this.set("time", this.get("time") + u * a.units[s]()); 630 }, 631 decrement: function (s, t) { 632 return this.increment(s, -1 * (t != null ? t : 1)); 633 }, 634 isLeapYear: function () { 635 return a.isLeapYear(this.get("year")); 636 }, 637 clearTime: function () { 638 return this.set({ hr: 0, min: 0, sec: 0, ms: 0 }); 639 }, 640 diff: function (t, s) { 641 if (typeOf(t) == "string") { 642 t = a.parse(t); 643 }
644 return ((t - this) / a.units[s || "day"](3, 3)).round(); 645 }, 646 getLastDayOfMonth: function () { 647 return a.daysInMonth(this.get("mo"), this.get("year")); 648 }, 649 getDayOfYear: function () { 650 return ( 651 (a.UTC(this.get("year"), this.get("mo"), this.get("date") + 1) - 652 a.UTC(this.get("year"), 0, 1)) / 653 a.units.day() 654 ); 655 }, 656 setDay: function (t, s) { 657 if (s == null) { 658 s = a.getMsg("firstDayOfWeek"); 659 if (s === "") { 660 s = 1; 661 } 662 } 663 t = (7 + a.parseDay(t, true) - s) % 7; 664 var u = (7 + this.get("day") - s) % 7; 665 return this.increment("day", t - u); 666 }, 667 getWeek: function (v) { 668 if (v == null) { 669 v = a.getMsg("firstDayOfWeek"); 670 if (v === "") { 671 v = 1; 672 } 673 } 674 var x = this, 675 u = (7 + x.get("day") - v) % 7, 676 t = 0, 677 w; 678 if (v == 1) { 679 var y = x.get("month"), 680 s = x.get("date") - u; 681 if (y == 11 && s > 28) { 682 return 1; 683 } 684 if (y == 0 && s < -2) { 685 x = new a(x).decrement("day", u); 686 u = 0; 687 } 688 w = new a(x.get("year"), 0, 1).get("day") || 7; 689 if (w > 4) { 690 t = -7; 691 } 692 } else { 693 w = new a(x.get("year"), 0, 1).get("day"); 694 } 695 t += x.get("dayofyear"); 696 t += 6 - u; 697 t += (7 + w - v) % 7; 698 return t / 7; 699 }, 700 getOrdinal: function (s) { 701 return a.getMsg("ordinal", s || this.get("date")); 702 }, 703 getTimezone: function () { 704 return this.toString() 705 .replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/, "$1") 706 .replace( 707 /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, 708 "$1$2$3" 709 ); 710 }, 711 getGMTOffset: function () { 712 var s = this.get("timezoneOffset"); 713 return (s > 0 ? "-" : "+") + p((s.abs() / 60).floor(), 2) + p(s % 60, 2); 714 }, 715 setAMPM: function (s) { 716 s = s.toUpperCase(); 717 var t = this.get("hr"); 718 if (t > 11 && s == "AM") { 719 return this.decrement("hour", 12); 720 } else { 721 if (t < 12 && s == "PM") { 722 return this.increment("hour", 12); 723 } 724 } 725 return this; 726 }, 727 getAMPM: function () { 728 return this.get("hr") < 12 ? "AM" : "PM"; 729 }, 730 parse: function (s) { 731 this.set("time", a.parse(s)); 732 return this; 733 }, 734 isValid: function (s) { 735 if (!s) { 736 s = this; 737 } 738 return typeOf(s) == "date" && !isNaN(s.valueOf()); 739 }, 740 format: function (s) { 741 if (!this.isValid()) { 742 return "invalid date"; 743 } 744 if (!s) { 745 s = "%x %X"; 746 } 747 if (typeof s == "string") { 748 s = g[s.toLowerCase()] || s; 749 } 750 if (typeof s == "function") { 751 return s(this); 752 } 753 var t = this; 754 return s.replace(/%([a-z%])/gi, function (v, u) { 755 switch (u) { 756 case "a": 757 return a.getMsg("days_abbr")[t.get("day")]; 758 case "A": 759 return a.getMsg("days")[t.get("day")]; 760 case "b": 761 return a.getMsg("months_abbr")[t.get("month")]; 762 case "B": 763 return a.getMsg("months")[t.get("month")]; 764 case "c": 765 return t.format("%a %b %d %H:%M:%S %Y"); 766 case "d": 767 return p(t.get("date"), 2); 768 case "e": 769 return p(t.get("date"), 2, " "); 770 case "H": 771 return p(t.get("hr"), 2); 772 case "I": 773 return p(t.get("hr") % 12 || 12, 2); 774 case "j": 775 return p(t.get("dayofyear"), 3); 776 case "k": 777 return p(t.get("hr"), 2, " "); 778 case "l": 779 return p(t.get("hr") % 12 || 12, 2, " "); 780 case "L": 781 return p(t.get("ms"), 3); 782 case "m": 783 return p(t.get("mo") + 1, 2); 784 case "M": 785 return p(t.get("min"), 2); 786 case "o": 787 return t.get("ordinal"); 788 case "p": 789 return a.getMsg(t.get("ampm")); 790 case "s": 791 return Math.round(t / 1000); 792 case "S": 793 return p(t.get("seconds"), 2); 794 case "T": 795 return t.format("%H:%M:%S"); 796 case "U": 797 return p(t.get("week"), 2); 798 case "w": 799 return t.get("day"); 800 case "x": 801 return t.format(a.getMsg("shortDate")); 802 case "X": 803 return t.format(a.getMsg("shortTime")); 804 case "y": 805 return t.get("year").toString().substr(2); 806 case "Y": 807 return t.get("year"); 808 case "z": 809 return t.get("GMTOffset"); 810 case "Z": 811 return t.get("Timezone"); 812 } 813 return u; 814 }); 815 }, 816 toISOString: function () { 817 return this.format("iso8601"); 818 }, 819 }).alias({ toJSON: "toISOString", compare: "diff", strftime: "format" }); 820 var k = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 821 h = [ 822 "Jan", 823 "Feb", 824 "Mar", 825 "Apr", 826 "May", 827 "Jun", 828 "Jul", 829 "Aug", 830 "Sep", 831 "Oct", 832 "Nov", 833 "Dec", 834 ]; 835 var g = { 836 db: "%Y-%m-%d %H:%M:%S", 837 compact: "%Y%m%dT%H%M%S", 838 short: "%d %b %H:%M", 839 long: "%B %d, %Y %H:%M", 840 rfc822: function (s) { 841 return ( 842 k[s.get("day")] + 843 s.format(", %d ") + 844 h[s.get("month")] + 845 s.format(" %Y %H:%M:%S %Z") 846 ); 847 }, 848 rfc2822: function (s) { 849 return ( 850 k[s.get("day")] + 851 s.format(", %d ") + 852 h[s.get("month")] + 853 s.format(" %Y %H:%M:%S %z") 854 ); 855 }, 856 iso8601: function (s) { 857 return ( 858 s.getUTCFullYear() + 859 "-" + 860 p(s.getUTCMonth() + 1, 2) + 861 "-" + 862 p(s.getUTCDate(), 2) + 863 "T" + 864 p(s.getUTCHours(), 2) + 865 ":" + 866 p(s.getUTCMinutes(), 2) + 867 ":" + 868 p(s.getUTCSeconds(), 2) + 869 "." + 870 p(s.getUTCMilliseconds(), 3) + 871 "Z" 872 ); 873 }, 874 }; 875 var c = [], 876 n = a.parse; 877 var r = function (v, x, u) { 878 var t = -1, 879 w = a.getMsg(v + "s"); 880 switch (typeOf(x)) { 881 case "object": 882 t = w[x.get(v)]; 883 break; 884 case "number": 885 t = w[x]; 886 if (!t) { 887 throw new Error("Invalid " + v + " index: " + x); 888 } 889 break; 890 case "string": 891 var s = w.filter(function (y) { 892 return this.test(y); 893 }, new RegExp("^" + x, "i")); 894 if (!s.length) { 895 throw new Error("Invalid " + v + " string"); 896 } 897 if (s.length > 1) { 898 throw new Error("Ambiguous " + v); 899 } 900 t = s[0]; 901 } 902 return u ? w.indexOf(t) : t; 903 }; 904 var i = 1900, 905 o = 70; 906 a.extend({ 907 getMsg: function (t, s) { 908 return Locale.get("Date." + t, s); 909 }, 910 units: { 911 ms: Function.from(1), 912 second: Function.from(1000), 913 minute: Function.from(60000), 914 hour: Function.from(3600000), 915 day: Function.from(86400000), 916 week: Function.from(608400000), 917 month: function (t, s) { 918 var u = new a(); 919 return ( 920 a.daysInMonth( 921 t != null ? t : u.get("mo"),
922 s != null ? s : u.get("year") 923 ) * 86400000 924 ); 925 }, 926 year: function (s) { 927 s = s || new a().get("year"); 928 return a.isLeapYear(s) ? 31622400000 : 31536000000; 929 }, 930 }, 931 daysInMonth: function (t, s) { 932 return [ 933 31, 934 a.isLeapYear(s) ? 29 : 28, 935 31, 936 30, 937 31, 938 30, 939 31, 940 31, 941 30, 942 31, 943 30, 944 31, 945 ][t]; 946 }, 947 isLeapYear: function (s) { 948 return (s % 4 === 0 && s % 100 !== 0) || s % 400 === 0; 949 }, 950 parse: function (v) { 951 var u = typeOf(v); 952 if (u == "number") { 953 return new a(v); 954 } 955 if (u != "string") { 956 return v; 957 } 958 v = v.clean(); 959 if (!v.length) { 960 return null; 961 } 962 var s; 963 c.some(function (w) { 964 var t = w.re.exec(v); 965 return t ? (s = w.handler(t)) : false; 966 }); 967 if (!(s && s.isValid())) { 968 s = new a(n(v)); 969 if (!(s && s.isValid())) { 970 s = new a(v.toInt()); 971 } 972 } 973 return s; 974 }, 975 parseDay: function (s, t) { 976 return r("day", s, t); 977 }, 978 parseMonth: function (t, s) { 979 return r("month", t, s); 980 }, 981 parseUTC: function (t) { 982 var s = new a(t); 983 var u = a.UTC( 984 s.get("year"), 985 s.get("mo"), 986 s.get("date"), 987 s.get("hr"), 988 s.get("min"), 989 s.get("sec"), 990 s.get("ms") 991 ); 992 return new a(u); 993 }, 994 orderIndex: function (s) { 995 return a.getMsg("dateOrder").indexOf(s) + 1; 996 }, 997 defineFormat: function (s, t) { 998 g[s] = t; 999 return this; 1000 }, 1001 defineParser: function (s) { 1002 c.push(s.re && s.handler ? s : l(s)); 1003 return this; 1004 }, 1005 defineParsers: function () { 1006 Array.flatten(arguments).each(a.defineParser); 1007 return this; 1008 }, 1009 define2DigitYearStart: function (s) { 1010 o = s % 100; 1011 i = s - o; 1012 return this; 1013 }, 1014 }).extend({ defineFormats: a.defineFormat.overloadSetter() }); 1015 var d = function (s) { 1016 return new RegExp( 1017 "(?:" + 1018 a 1019 .getMsg(s) 1020 .map(function (t) { 1021 return t.substr(0, 3); 1022 }) 1023 .join("|") + 1024 ")[a-z]*" 1025 ); 1026 }; 1027 var m = function (s) { 1028 switch (s) { 1029 case "T": 1030 return "%H:%M:%S"; 1031 case "x": 1032 return ( 1033 (a.orderIndex("month") == 1 ? "%m[-./]%d" : "%d[-./]%m") + 1034 "([-./]%y)?" 1035 ); 1036 case "X": 1037 return "%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?"; 1038 } 1039 return null; 1040 }; 1041 var j = { 1042 d: /[0-2]?[0-9]|3[01]/, 1043 H: /[01]?[0-9]|2[0-3]/, 1044 I: /0?[1-9]|1[0-2]/, 1045 M: /[0-5]?\d/, 1046 s: /\d+/, 1047 o: /[a-z]*/, 1048 p: /[ap]\.?m\.?/, 1049 y: /\d{2}|\d{4}/, 1050 Y: /\d{4}/, 1051 z: /Z|[+-]\d{2}(?::?\d{2})?/, 1052 }; 1053 j.m = j.I; 1054 j.S = j.M; 1055 var e; 1056 var b = function (s) { 1057 e = s; 1058 j.a = j.A = d("days"); 1059 j.b = j.B = d("months"); 1060 c.each(function (u, t) { 1061 if (u.format) { 1062 c[t] = l(u.format); 1063 } 1064 }); 1065 }; 1066 var l = function (u) { 1067 if (!e) { 1068 return { format: u }; 1069 } 1070 var s = []; 1071 var t = (u.source || u) 1072 .replace(/%([a-z])/gi, function (w, v) { 1073 return m(v) || w; 1074 }) 1075 .replace(/\((?!\?)/g, "(?:") 1076 .replace(/ (?!\?|\*)/g, ",? ") 1077 .replace(/%([a-z%])/gi, function (w, v) { 1078 var x = j[v]; 1079 if (!x) { 1080 return v; 1081 } 1082 s.push(v); 1083 return "(" + x.source + ")"; 1084 }) 1085 .replace(/\[a-z\]/gi, "[a-z\\u00c0-\\uffff;&]"); 1086 return { 1087 format: u, 1088 re: new RegExp("^" + t + "$", "i"), 1089 handler: function (y) { 1090 y = y.slice(1).associate(s); 1091 var v = new a().clearTime(), 1092 x = y.y || y.Y; 1093 if (x != null) { 1094 q.call(v, "y", x); 1095 } 1096 if ("d" in y) { 1097 q.call(v, "d", 1); 1098 } 1099 if ("m" in y || y.b || y.B) { 1100 q.call(v, "m", 1); 1101 } 1102 for (var w in y) { 1103 q.call(v, w, y[w]); 1104 } 1105 return v; 1106 }, 1107 }; 1108 }; 1109 var q = function (s, t) { 1110 if (!t) { 1111 return this; 1112 } 1113 switch (s) { 1114 case "a": 1115 case "A": 1116 return this.set("day", a.parseDay(t, true)); 1117 case "b": 1118 case "B": 1119 return this.set("mo", a.parseMonth(t, true)); 1120 case "d": 1121 return this.set("date", t); 1122 case "H": 1123 case "I": 1124 return this.set("hr", t); 1125 case "m": 1126 return this.set("mo", t - 1); 1127 case "M": 1128 return this.set("min", t); 1129 case "p": 1130 return this.set("ampm", t.replace(/\./g, "")); 1131 case "S": 1132 return this.set("sec", t); 1133 case "s": 1134 return this.set("ms", ("0." + t) * 1000); 1135 case "w": 1136 return this.set("day", t); 1137 case "Y": 1138 return this.set("year", t); 1139 case "y": 1140 t = +t; 1141 if (t < 100) { 1142 t += i + (t < o ? 100 : 0); 1143 } 1144 return this.set("year", t); 1145 case "z": 1146 if (t == "Z") { 1147 t = "+00"; 1148 } 1149 var u = t.match(/([+-])(\d{2}):?(\d{2})?/); 1150 u = 1151 (u[1] + "1") * (u[2] * 60 + (+u[3] || 0)) + this.getTimezoneOffset(); 1152 return this.set("time", this - u * 60000); 1153 } 1154 return this; 1155 }; 1156 a.defineParsers( 1157 "%Y([-./]%m([-./]%d((T| )%X)?)?)?", 1158 "%Y%m%d(T%H(%M%S?)?)?", 1159 "%x( %X)?", 1160 "%d%o( %b( %Y)?)?( %X)?", 1161 "%b( %d%o)?( %Y)?( %X)?", 1162 "%Y %b( %d%o( %X)?)?", 1163 "%o %b %d %X %z %Y", 1164 "%T", 1165 "%H:%M( ?%p)?" 1166 ); 1167 Locale.addEvent("change", function (s) { 1168 if (Locale.get("Date")) { 1169 b(s); 1170 } 1171 }).fireEvent("change", Locale.getCurrent()); 1172})(); 1173Date.implement({ 1174 timeDiffInWords: function (a) { 1175 return Date.distanceOfTimeInWords(this, a || new Date()); 1176 }, 1177 timeDiff: function (f, c) { 1178 if (f == null) { 1179 f = new Date(); 1180 } 1181 var h = ((f - this) / 1000).floor().abs(); 1182 var e = [], 1183 a = [60, 60, 24, 365, 0], 1184 d = ["s", "m", "h", "d", "y"], 1185 g, 1186 b; 1187 for (var i = 0; i < a.length; i++) { 1188 if (i && !h) { 1189 break; 1190 } 1191 g = h; 1192 if ((b = a[i])) { 1193 g = h % b; 1194 h = (h / b).floor(); 1195 } 1196 e.unshift(g + (d[i] || "")); 1197 } 1198 return e.join(c || ":"); 1199 }, 1200}) 1201 .extend({ 1202 distanceOfTimeInWords: function (b, a) { 1203 return Date.getTimePhrase(((a - b) / 1000).toInt()); 1204 }, 1205 getTimePhrase: function (f) { 1206 var d = f < 0 ? "Until" : "Ago"; 1207 if (f < 0) { 1208 f *= -1; 1209 } 1210 var b = { 1211 minute: 60, 1212 hour: 60, 1213 day: 24, 1214 week: 7, 1215 month: 52 / 12, 1216 year: 12, 1217 eon: Infinity, 1218 }; 1219 var e = "lessThanMinute"; 1220 for (var c in b) { 1221 var a = b[c]; 1222 if (f < 1.5 * a) { 1223 if (f > 0.75 * a) { 1224 e = c; 1225 } 1226 break; 1227 } 1228 f /= a; 1229 e = c + "s"; 1230 } 1231 f = f.round(); 1232 return Date.getMsg(e + d, f).substitute({ delta: f }); 1233 }, 1234 }) 1235 .defineParsers( 1236 { 1237 re: /^(?:tod|tom|yes)/i, 1238 handler: function (a) { 1239 var b = new Date().clearTime(); 1240 switch (a[0]) { 1241 case "tom": 1242 return b.increment(); 1243 case "yes":
1244 return b.decrement(); 1245 default: 1246 return b; 1247 } 1248 }, 1249 }, 1250 { 1251 re: /^(next|last) ([a-z]+)$/i, 1252 handler: function (e) { 1253 var f = new Date().clearTime(); 1254 var b = f.getDay(); 1255 var c = Date.parseDay(e[2], true); 1256 var a = c - b; 1257 if (c <= b) { 1258 a += 7; 1259 } 1260 if (e[1] == "last") { 1261 a -= 7; 1262 } 1263 return f.set("date", f.getDate() + a); 1264 }, 1265 } 1266 ) 1267 .alias("timeAgoInWords", "timeDiffInWords"); 1268Locale.define("en-US", "Number", { 1269 decimal: ".", 1270 group: ",", 1271 currency: { prefix: "$ " }, 1272}); 1273Number.implement({ 1274 format: function (q) { 1275 var n = this; 1276 q = q ? Object.clone(q) : {}; 1277 var a = function (i) { 1278 if (q[i] != null) { 1279 return q[i]; 1280 } 1281 return Locale.get("Number." + i); 1282 }; 1283 var f = n < 0, 1284 h = a("decimal"), 1285 k = a("precision"), 1286 o = a("group"), 1287 c = a("decimals"); 1288 if (f) { 1289 var e = a("negative") || {}; 1290 if (e.prefix == null && e.suffix == null) { 1291 e.prefix = "-"; 1292 } 1293 ["prefix", "suffix"].each(function (i) { 1294 if (e[i]) { 1295 q[i] = a(i) + e[i]; 1296 } 1297 }); 1298 n = -n; 1299 } 1300 var l = a("prefix"), 1301 p = a("suffix"); 1302 if (c !== "" && c >= 0 && c <= 20) { 1303 n = n.toFixed(c); 1304 } 1305 if (k >= 1 && k <= 21) { 1306 n = (+n).toPrecision(k); 1307 } 1308 n += ""; 1309 var m; 1310 if (a("scientific") === false && n.indexOf("e") > -1) { 1311 var j = n.split("e"), 1312 b = +j[1]; 1313 n = j[0].replace(".", ""); 1314 if (b < 0) { 1315 b = -b - 1; 1316 m = j[0].indexOf("."); 1317 if (m > -1) { 1318 b -= m - 1; 1319 } 1320 while (b--) { 1321 n = "0" + n; 1322 } 1323 n = "0." + n; 1324 } else { 1325 m = j[0].lastIndexOf("."); 1326 if (m > -1) { 1327 b -= j[0].length - m - 1; 1328 } 1329 while (b--) { 1330 n += "0"; 1331 } 1332 } 1333 } 1334 if (h != ".") { 1335 n = n.replace(".", h); 1336 } 1337 if (o) { 1338 m = n.lastIndexOf(h); 1339 m = m > -1 ? m : n.length; 1340 var d = n.substring(m), 1341 g = m; 1342 while (g--) { 1343 if ((m - g - 1) % 3 == 0 && g != m - 1) { 1344 d = o + d; 1345 } 1346 d = n.charAt(g) + d; 1347 } 1348 n = d; 1349 } 1350 if (l) { 1351 n = l + n; 1352 } 1353 if (p) { 1354 n += p; 1355 } 1356 return n; 1357 }, 1358 formatCurrency: function (b) { 1359 var a = Locale.get("Number.currency") || {}; 1360 if (a.scientific == null) { 1361 a.scientific = false; 1362 } 1363 a.decimals = b != null ? b : a.decimals == null ? 2 : a.decimals; 1364 return this.format(a); 1365 }, 1366 formatPercentage: function (b) { 1367 var a = Locale.get("Number.percentage") || {}; 1368 if (a.suffix == null) { 1369 a.suffix = "%"; 1370 } 1371 a.decimals = b != null ? b : a.decimals == null ? 2 : a.decimals; 1372 return this.format(a); 1373 }, 1374}); 1375(function () { 1376 var c = { 1377 a: /[à áâãäåÄÄ ]/g, 1378 A: /[ÃÃÃÃÃà ÄÄ]/g, 1379 c: /[ÄÄç]/g, 1380 C: /[ÄÄÃ]/g, 1381 d: /[ÄÄ]/g, 1382 D: /[ÄÃ]/g, 1383 e: /[èéêëÄÄ]/g, 1384 E: /[ÃÃÃÃÄÄ]/g, 1385 g: /[Ä]/g, 1386 G: /[Ä]/g, 1387 i: /[ìÃîï]/g, 1388 I: /[ÃÃÃÃ]/g, 1389 l: /[ĺľÅ]/g, 1390 L: /[ĹĽÅ]/g, 1391 n: /[ñÅÅ]/g, 1392 N: /[ÃÅÅ]/g, 1393 o: /[òóôõöøÅ]/g, 1394 O: /[ÃÃÃÃÃÃ]/g, 1395 r: /[ÅÅ]/g, 1396 R: /[ÅÅ]/g, 1397 s: /[ššÅ]/g, 1398 S: /[Å ÅÅ]/g, 1399 t: /[ťţ]/g, 1400 T: /[ŤŢ]/g, 1401 ue: /[ü]/g, 1402 UE: /[Ã]/g, 1403 u: /[ùúûůµ]/g, 1404 U: /[ÃÃÃÅ®]/g, 1405 y: /[ÿý]/g, 1406 Y: /[ŸÃ]/g, 1407 z: /[žźż]/g, 1408 Z: /[ŽŹŻ]/g, 1409 th: /[þ]/g, 1410 TH: /[Ã]/g, 1411 dh: /[ð]/g, 1412 DH: /[Ã]/g, 1413 ss: /[Ã]/g, 1414 oe: /[Å]/g, 1415 OE: /[Å]/g, 1416 ae: /[æ]/g, 1417 AE: /[Ã]/g, 1418 }, 1419 b = { 1420 " ": /[\xa0\u2002\u2003\u2009]/g, 1421 "*": /[\xb7]/g, 1422 "'": /[\u2018\u2019]/g, 1423 '"': /[\u201c\u201d]/g, 1424 "...": /[\u2026]/g, 1425 "-": /[\u2013]/g, 1426 "»": /[\uFFFD]/g, 1427 }; 1428 var a = function (f, h) { 1429 var e = f, 1430 g; 1431 for (g in h) { 1432 e = e.replace(h[g], g); 1433 } 1434 return e; 1435 }; 1436 var d = function (e, g) { 1437 e = e || ""; 1438 var h = g 1439 ? "<" + e + "(?!\\w)[^>]*>([\\s\\S]*?)</" + e + "(?!\\w)>" 1440 : "</?" + e + "([^>]+)?>", 1441 f = new RegExp(h, "gi"); 1442 return f; 1443 }; 1444 String.implement({ 1445 standardize: function () { 1446 return a(this, c); 1447 }, 1448 repeat: function (e) { 1449 return new Array(e + 1).join(this); 1450 }, 1451 pad: function (e, h, g) { 1452 if (this.length >= e) { 1453 return this; 1454 } 1455 var f = (h == null ? " " : "" + h) 1456 .repeat(e - this.length) 1457 .substr(0, e - this.length); 1458 if (!g || g == "right") { 1459 return this + f; 1460 } 1461 if (g == "left") { 1462 return f + this; 1463 } 1464 return ( 1465 f.substr(0, (f.length / 2).floor()) + 1466 this + 1467 f.substr(0, (f.length / 2).ceil()) 1468 ); 1469 }, 1470 getTags: function (e, f) { 1471 return this.match(d(e, f)) || []; 1472 }, 1473 stripTags: function (e, f) { 1474 return this.replace(d(e, f), ""); 1475 }, 1476 tidy: function () { 1477 return a(this, b); 1478 }, 1479 truncate: function (e, f, i) { 1480 var h = this; 1481 if (f == null && arguments.length == 1) { 1482 f = "â¦"; 1483 } 1484 if (h.length > e) { 1485 h = h.substring(0, e); 1486 if (i) { 1487 var g = h.lastIndexOf(i); 1488 if (g != -1) { 1489 h = h.substr(0, g); 1490 } 1491 } 1492 if (f) { 1493 h += f; 1494 } 1495 } 1496 return h; 1497 }, 1498 }); 1499})(); 1500String.implement({ 1501 parseQueryString: function (d, a) { 1502 if (d == null) { 1503 d = true; 1504 } 1505 if (a == null) { 1506 a = true; 1507 } 1508 var c = this.split(/[&;]/), 1509 b = {}; 1510 if (!c.length) { 1511 return b; 1512 } 1513 c.each(function (i) { 1514 var e = i.indexOf("=") + 1, 1515 g = e ? i.substr(e) : "", 1516 f = e ? i.substr(0, e - 1).match(/([^\]\[]+|(\B)(?=\]))/g) : [i], 1517 h = b; 1518 if (!f) { 1519 return; 1520 } 1521 if (a) { 1522 g = decodeURIComponent(g); 1523 } 1524 f.each(function (k, j) { 1525 if (d) { 1526 k = decodeURIComponent(k); 1527 } 1528 var l = h[k]; 1529 if (j < f.length - 1) {
1530 h = h[k] = l || {}; 1531 } else { 1532 if (typeOf(l) == "array") { 1533 l.push(g); 1534 } else { 1535 h[k] = l != null ? [l, g] : g; 1536 } 1537 } 1538 }); 1539 }); 1540 return b; 1541 }, 1542 cleanQueryString: function (a) { 1543 return this.split("&") 1544 .filter(function (e) { 1545 var b = e.indexOf("="), 1546 c = b < 0 ? "" : e.substr(0, b), 1547 d = e.substr(b + 1); 1548 return a ? a.call(null, c, d) : d || d === 0; 1549 }) 1550 .join("&"); 1551 }, 1552}); 1553(function () { 1554 var b = function () { 1555 return this.get("value"); 1556 }; 1557 var a = (this.URI = new Class({ 1558 Implements: Options, 1559 options: {}, 1560 regex: 1561 /^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/, 1562 parts: [ 1563 "scheme", 1564 "user", 1565 "password", 1566 "host", 1567 "port", 1568 "directory", 1569 "file", 1570 "query", 1571 "fragment", 1572 ], 1573 schemes: { http: 80, https: 443, ftp: 21, rtsp: 554, mms: 1755, file: 0 }, 1574 initialize: function (d, c) { 1575 this.setOptions(c); 1576 var e = this.options.base || a.base; 1577 if (!d) { 1578 d = e; 1579 } 1580 if (d && d.parsed) { 1581 this.parsed = Object.clone(d.parsed); 1582 } else { 1583 this.set("value", d.href || d.toString(), e ? new a(e) : false); 1584 } 1585 }, 1586 parse: function (e, d) { 1587 var c = e.match(this.regex); 1588 if (!c) { 1589 return false; 1590 } 1591 c.shift(); 1592 return this.merge(c.associate(this.parts), d); 1593 }, 1594 merge: function (d, c) { 1595 if ((!d || !d.scheme) && (!c || !c.scheme)) { 1596 return false; 1597 } 1598 if (c) { 1599 this.parts.every(function (e) { 1600 if (d[e]) { 1601 return false; 1602 } 1603 d[e] = c[e] || ""; 1604 return true; 1605 }); 1606 } 1607 d.port = d.port || this.schemes[d.scheme.toLowerCase()]; 1608 d.directory = d.directory 1609 ? this.parseDirectory(d.directory, c ? c.directory : "") 1610 : "/"; 1611 return d; 1612 }, 1613 parseDirectory: function (d, e) { 1614 d = (d.substr(0, 1) == "/" ? "" : e || "/") + d; 1615 if (!d.test(a.regs.directoryDot)) { 1616 return d; 1617 } 1618 var c = []; 1619 d.replace(a.regs.endSlash, "") 1620 .split("/") 1621 .each(function (f) { 1622 if (f == ".." && c.length > 0) { 1623 c.pop(); 1624 } else { 1625 if (f != ".") { 1626 c.push(f); 1627 } 1628 } 1629 }); 1630 return c.join("/") + "/"; 1631 }, 1632 combine: function (c) { 1633 return ( 1634 c.value || 1635 c.scheme + 1636 "://" + 1637 (c.user ? c.user + (c.password ? ":" + c.password : "") + "@" : "") + 1638 (c.host || "") + 1639 (c.port && c.port != this.schemes[c.scheme] ? ":" + c.port : "") + 1640 (c.directory || "/") + 1641 (c.file || "") + 1642 (c.query ? "?" + c.query : "") + 1643 (c.fragment ? "#" + c.fragment : "") 1644 ); 1645 }, 1646 set: function (d, f, e) { 1647 if (d == "value") { 1648 var c = f.match(a.regs.scheme); 1649 if (c) { 1650 c = c[1]; 1651 } 1652 if (c && this.schemes[c.toLowerCase()] == null) { 1653 this.parsed = { scheme: c, value: f }; 1654 } else { 1655 this.parsed = 1656 this.parse(f, (e || this).parsed) || 1657 (c ? { scheme: c, value: f } : { value: f }); 1658 } 1659 } else { 1660 if (d == "data") { 1661 this.setData(f); 1662 } else { 1663 this.parsed[d] = f; 1664 } 1665 } 1666 return this; 1667 }, 1668 get: function (c, d) { 1669 switch (c) { 1670 case "value": 1671 return this.combine(this.parsed, d ? d.parsed : false); 1672 case "data": 1673 return this.getData(); 1674 } 1675 return this.parsed[c] || ""; 1676 }, 1677 go: function () { 1678 document.location.href = this.toString(); 1679 }, 1680 toURI: function () { 1681 return this; 1682 }, 1683 getData: function (e, d) { 1684 var c = this.get(d || "query"); 1685 if (!(c || c === 0)) { 1686 return e ? null : {}; 1687 } 1688 var f = c.parseQueryString(); 1689 return e ? f[e] : f; 1690 }, 1691 setData: function (c, f, d) { 1692 if (typeof c == "string") { 1693 var e = this.getData(); 1694 e[arguments[0]] = arguments[1]; 1695 c = e; 1696 } else { 1697 if (f) { 1698 c = Object.merge(this.getData(), c); 1699 } 1700 } 1701 return this.set(d || "query", Object.toQueryString(c)); 1702 }, 1703 clearData: function (c) { 1704 return this.set(c || "query", ""); 1705 }, 1706 toString: b,
1707 valueOf: b, 1708 })); 1709 a.regs = { endSlash: /\/$/, scheme: /^(\w+):/, directoryDot: /\.\/|\.$/ }; 1710 a.base = new a( 1711 Array.from(document.getElements("base[href]", true)).getLast(), 1712 { base: document.location } 1713 ); 1714 String.implement({ 1715 toURI: function (c) { 1716 return new a(this, c); 1717 }, 1718 }); 1719})(); 1720URI = Class.refactor(URI, { 1721 combine: function (f, e) { 1722 if (!e || f.scheme != e.scheme || f.host != e.host || f.port != e.port) { 1723 return this.previous.apply(this, arguments); 1724 } 1725 var a = 1726 f.file + 1727 (f.query ? "?" + f.query : "") + 1728 (f.fragment ? "#" + f.fragment : ""); 1729 if (!e.directory) { 1730 return (f.directory || (f.file ? "" : "./")) + a; 1731 } 1732 var d = e.directory.split("/"), 1733 c = f.directory.split("/"), 1734 g = "", 1735 h; 1736 var b = 0; 1737 for (h = 0; h < d.length && h < c.length && d[h] == c[h]; h++) {} 1738 for (b = 0; b < d.length - h - 1; b++) { 1739 g += "../"; 1740 } 1741 for (b = h; b < c.length - 1; b++) { 1742 g += c[b] + "/"; 1743 } 1744 return (g || (f.file ? "" : "./")) + a; 1745 }, 1746 toAbsolute: function (a) { 1747 a = new URI(a); 1748 if (a) { 1749 a.set("directory", "").set("file", ""); 1750 } 1751 return this.toRelative(a); 1752 }, 1753 toRelative: function (a) { 1754 return this.get("value", new URI(a)); 1755 }, 1756}); 1757(function () { 1758 if (this.Hash) { 1759 return; 1760 } 1761 var a = (this.Hash = new Type("Hash", function (b) { 1762 if (typeOf(b) == "hash") { 1763 b = Object.clone(b.getClean()); 1764 } 1765 for (var c in b) { 1766 this[c] = b[c]; 1767 } 1768 return this; 1769 })); 1770 this.$H = function (b) { 1771 return new a(b); 1772 }; 1773 a.implement({ 1774 forEach: function (b, c) { 1775 Object.forEach(this, b, c); 1776 }, 1777 getClean: function () { 1778 var c = {}; 1779 for (var b in this) { 1780 if (this.hasOwnProperty(b)) { 1781 c[b] = this[b]; 1782 } 1783 } 1784 return c; 1785 }, 1786 getLength: function () { 1787 var c = 0; 1788 for (var b in this) { 1789 if (this.hasOwnProperty(b)) { 1790 c++; 1791 } 1792 } 1793 return c; 1794 }, 1795 }); 1796 a.alias("each", "forEach"); 1797 a.implement({ 1798 has: Object.prototype.hasOwnProperty, 1799 keyOf: function (b) { 1800 return Object.keyOf(this, b); 1801 }, 1802 hasValue: function (b) { 1803 return Object.contains(this, b); 1804 }, 1805 extend: function (b) { 1806 a.each( 1807 b || {}, 1808 function (d, c) { 1809 a.set(this, c, d); 1810 }, 1811 this 1812 ); 1813 return this; 1814 }, 1815 combine: function (b) { 1816 a.each( 1817 b || {}, 1818 function (d, c) { 1819 a.include(this, c, d); 1820 }, 1821 this 1822 ); 1823 return this; 1824 }, 1825 erase: function (b) { 1826 if (this.hasOwnProperty(b)) { 1827 delete this[b]; 1828 } 1829 return this; 1830 }, 1831 get: function (b) { 1832 return this.hasOwnProperty(b) ? this[b] : null; 1833 }, 1834 set: function (b, c) { 1835 if (!this[b] || this.hasOwnProperty(b)) { 1836 this[b] = c; 1837 } 1838 return this; 1839 }, 1840 empty: function () { 1841 a.each( 1842 this, 1843 function (c, b) { 1844 delete this[b]; 1845 }, 1846 this 1847 ); 1848 return this; 1849 }, 1850 include: function (b, c) { 1851 if (this[b] == undefined) { 1852 this[b] = c; 1853 } 1854 return this; 1855 }, 1856 map: function (b, c) { 1857 return new a(Object.map(this, b, c)); 1858 }, 1859 filter: function (b, c) { 1860 return new a(Object.filter(this, b, c)); 1861 }, 1862 every: function (b, c) { 1863 return Object.every(this, b, c); 1864 }, 1865 some: function (b, c) { 1866 return Object.some(this, b, c); 1867 }, 1868 getKeys: function () { 1869 return Object.keys(this); 1870 }, 1871 getValues: function () { 1872 return Object.values(this); 1873 }, 1874 toQueryString: function (b) { 1875 return Object.toQueryString(this, b); 1876 }, 1877 }); 1878 a.alias({ indexOf: "keyOf", contains: "hasValue" }); 1879})(); 1880Hash.implement({ 1881 getFromPath: function (a) { 1882 return Object.getFromPath(this, a); 1883 }, 1884 cleanValues: function (a) { 1885 return new Hash(Object.cleanValues(this, a)); 1886 }, 1887 run: function () { 1888 Object.run(arguments); 1889 }, 1890}); 1891ElementCust.implement({ 1892 tidy: function () { 1893 this.set("value", this.get("value").tidy()); 1894 }, 1895 getTextInRange: function (b, a) { 1896 return this.get("value").substring(b, a); 1897 }, 1898 getSelectedText: function () { 1899 if (this.setSelectionRange) { 1900 return this.getTextInRange(
1901 this.getSelectionStart(), 1902 this.getSelectionEnd() 1903 ); 1904 } 1905 return document.selection.createRange().text; 1906 }, 1907 getSelectedRange: function () { 1908 if (this.selectionStart != null) { 1909 return { start: this.selectionStart, end: this.selectionEnd }; 1910 } 1911 var e = { start: 0, end: 0 }; 1912 var a = this.getDocument().selection.createRange(); 1913 if (!a || a.parentElement() != this) { 1914 return e; 1915 } 1916 var c = a.duplicate(); 1917 if (this.type == "text") { 1918 e.start = 0 - c.moveStart("character", -100000); 1919 e.end = e.start + a.text.length; 1920 } else { 1921 var b = this.get("value"); 1922 var d = b.length; 1923 c.moveToElementText(this); 1924 c.setEndPoint("StartToEnd", a); 1925 if (c.text.length) { 1926 d -= b.match(/[\n\r]*$/)[0].length; 1927 } 1928 e.end = d - c.text.length; 1929 c.setEndPoint("StartToStart", a); 1930 e.start = d - c.text.length; 1931 } 1932 return e; 1933 }, 1934 getSelectionStart: function () { 1935 return this.getSelectedRange().start; 1936 }, 1937 getSelectionEnd: function () { 1938 return this.getSelectedRange().end; 1939 }, 1940 setCaretPosition: function (a) { 1941 if (a == "end") { 1942 a = this.get("value").length; 1943 } 1944 this.selectRange(a, a); 1945 return this; 1946 }, 1947 getCaretPosition: function () { 1948 return this.getSelectedRange().start; 1949 }, 1950 selectRange: function (e, a) { 1951 if (this.setSelectionRange) { 1952 this.focus(); 1953 this.setSelectionRange(e, a); 1954 } else { 1955 var c = this.get("value"); 1956 var d = c.substr(e, a - e).replace(/\r/g, "").length; 1957 e = c.substr(0, e).replace(/\r/g, "").length; 1958 var b = this.createTextRange(); 1959 b.collapse(true); 1960 b.moveEnd("character", e + d); 1961 b.moveStart("character", e); 1962 b.select(); 1963 } 1964 return this; 1965 }, 1966 insertAtCursor: function (b, a) { 1967 var d = this.getSelectedRange(); 1968 var c = this.get("value"); 1969 this.set( 1970 "value", 1971 c.substring(0, d.start) + b + c.substring(d.end, c.length) 1972 ); 1973 if (a !== false) { 1974 this.selectRange(d.start, d.start + b.length); 1975 } else { 1976 this.setCaretPosition(d.start + b.length); 1977 } 1978 return this; 1979 }, 1980 insertAroundCursor: function (b, a) { 1981 b = Object.append({ before: "", defaultMiddle: "", after: "" }, b); 1982 var c = this.getSelectedText() || b.defaultMiddle; 1983 var g = this.getSelectedRange(); 1984 var f = this.get("value"); 1985 if (g.start == g.end) { 1986 this.set( 1987 "value", 1988 f.substring(0, g.start) + 1989 b.before + 1990 c + 1991 b.after + 1992 f.substring(g.end, f.length) 1993 ); 1994 this.selectRange( 1995 g.start + b.before.length, 1996 g.end + b.before.length + c.length 1997 ); 1998 } else { 1999 var d = f.substring(g.start, g.end); 2000 this.set( 2001 "value", 2002 f.substring(0, g.start) + 2003 b.before + 2004 d + 2005 b.after + 2006 f.substring(g.end, f.length) 2007 ); 2008 var e = g.start + b.before.length; 2009 if (a !== false) { 2010 this.selectRange(e, e + d.length); 2011 } else { 2012 this.setCaretPosition(e + f.length); 2013 } 2014 } 2015 return this; 2016 }, 2017}); 2018Elements.from = function (e, d) { 2019 if (d || d == null) { 2020 e = e.stripScripts(); 2021 } 2022 var b, 2023 c = e.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i); 2024 if (c) { 2025 b = new ElementCust("table"); 2026 var a = c[1].toLowerCase(); 2027 if (["td", "th", "tr"].contains(a)) { 2028 b = new ElementCust("tbody").inject(b); 2029 if (a != "tr") { 2030 b = new ElementCust("tr").inject(b); 2031 } 2032 } 2033 } 2034 return (b || new ElementCust("div")).set("html", e).getChildren(); 2035}; 2036// (function () { 2037// var d = { relay: false }, 2038// c = ["once", "throttle", "pause"], 2039// b = c.length; 2040// while (b--) { 2041// d[c[b]] = Events.lookupPseudo(c[b]); 2042// } 2043// DOMEvent.definePseudo = function (e, f) { 2044// d[e] = f; 2045// return this; 2046// }; 2047// var a = ElementCust.prototype; 2048// [ElementCust, Window, Document].invoke( 2049// "implement", 2050// Events.Pseudos(d, a.addEvent, a.removeEvent) 2051// ); 2052// })(); 2053// (function () { 2054// var a = "$moo:keys-pressed", 2055// b = "$moo:keys-keyup"; 2056// DOMEvent.definePseudo("keys", function (d, e, c) { 2057// var g = c[0], 2058// f = [], 2059// h = this.retrieve(a, []); 2060// f.append( 2061// d.value 2062// .replace("++", function () { 2063// f.push("+"); 2064// return ""; 2065// }) 2066// .split("+") 2067// ); 2068 // h.include(g.key); 2069// if ( 2070// f.every(function (j) { 2071// return h.contains(j); 2072// }) 2073// ) { 2074// e.apply(this, c); 2075// } 2076// this.store(a, h); 2077// if (!this.retrieve(b)) { 2078// var i = function (j) { 2079// (function () { 2080// h = this.retrieve(a, []).erase(j.key); 2081// this.store(a, h); 2082// }).delay(0, this); 2083// }; 2084// this.store(b, i).addEvent("keyup", i); 2085// } 2086// }); 2087// DOMEvent.defineKeys({ 2088// 16: "shift", 2089// 17: "control", 2090// 18: "alt", 2091// 20: "capslock", 2092// 33: "pageup", 2093// 34: "pagedown", 2094// 35: "end", 2095// 36: "home", 2096// 144: "numlock", 2097// 145: "scrolllock", 2098// 186: ";", 2099// 187: "=", 2100// 188: ",", 2101// 190: ".", 2102// 191: "/", 2103// 192: "`", 2104// 219: "[", 2105// 220: "\\", 2106// 221: "]", 2107// 222: "'", 2108// 107: "+", 2109// }).defineKey(Browser.firefox ? 109 : 189, "-"); 2110// })(); 2111(function () { 2112 var b = function (e, d) { 2113 var f = [];
2114 Object.each(d, function (g) { 2115 Object.each(g, function (h) { 2116 e.each(function (i) { 2117 f.push(i + "-" + h + (i == "border" ? "-width" : "")); 2118 }); 2119 }); 2120 }); 2121 return f; 2122 }; 2123 var c = function (f, e) { 2124 var d = 0; 2125 Object.each(e, function (h, g) { 2126 if (g.test(f)) { 2127 d = d + h.toInt(); 2128 } 2129 }); 2130 return d; 2131 }; 2132 var a = function (d) { 2133 return !!(!d || d.offsetHeight || d.offsetWidth); 2134 }; 2135 ElementCust.implement({ 2136 measure: function (h) { 2137 if (a(this)) { 2138 return h.call(this); 2139 } 2140 var g = this.getParent(), 2141 e = []; 2142 while (!a(g) && g != document.body) { 2143 e.push(g.expose()); 2144 g = g.getParent(); 2145 } 2146 var f = this.expose(), 2147 d = h.call(this); 2148 f(); 2149 e.each(function (i) { 2150 i(); 2151 }); 2152 return d; 2153 }, 2154 expose: function () { 2155 if (this.getStyle("display") != "none") { 2156 return function () {}; 2157 } 2158 var d = this.style.cssText; 2159 this.setStyles({ 2160 display: "block", 2161 position: "absolute", 2162 visibility: "hidden", 2163 }); 2164 return function () { 2165 this.style.cssText = d; 2166 }.bind(this); 2167 }, 2168 getDimensions: function (d) { 2169 d = Object.merge({ computeSize: false }, d); 2170 var i = { x: 0, y: 0 }; 2171 var h = function (j, e) { 2172 return e.computeSize ? j.getComputedSize(e) : j.getSize(); 2173 }; 2174 var f = this.getParent("body"); 2175 if (f && this.getStyle("display") == "none") { 2176 i = this.measure(function () { 2177 return h(this, d); 2178 }); 2179 } else { 2180 if (f) { 2181 try { 2182 i = h(this, d); 2183 } catch (g) {} 2184 } 2185 } 2186 return Object.append( 2187 i, 2188 i.x || i.x === 0 2189 ? { width: i.x, height: i.y } 2190 : { x: i.width, y: i.height } 2191 ); 2192 }, 2193 getComputedSize: function (d) { 2194 d = Object.merge( 2195 { 2196 styles: ["padding", "border"], 2197 planes: { height: ["top", "bottom"], width: ["left", "right"] }, 2198 mode: "both", 2199 }, 2200 d 2201 ); 2202 var g = {}, 2203 e = { width: 0, height: 0 }, 2204 f; 2205 if (d.mode == "vertical") { 2206 delete e.width; 2207 delete d.planes.width; 2208 } else { 2209 if (d.mode == "horizontal") { 2210 delete e.height; 2211 delete d.planes.height; 2212 } 2213 } 2214 b(d.styles, d.planes).each(function (h) { 2215 g[h] = this.getStyle(h).toInt(); 2216 }, this); 2217 Object.each( 2218 d.planes, 2219 function (i, h) { 2220 var k = h.capitalize(), 2221 j = this.getStyle(h); 2222 if (j == "auto" && !f) { 2223 f = this.getDimensions(); 2224 } 2225 j = g[h] = j == "auto" ? f[h] : j.toInt(); 2226 e["total" + k] = j; 2227 i.each(function (m) { 2228 var l = c(m, g); 2229 e["computed" + m.capitalize()] = l; 2230 e["total" + k] += l; 2231 }); 2232 }, 2233 this 2234 ); 2235 return Object.append(e, g); 2236 }, 2237 }); 2238})(); 2239(function () { 2240 var a = false, 2241 b = false;
2242 var c = function () { 2243 var d = new ElementCust("div") 2244 .setStyles({ position: "fixed", top: 0, right: 0 }) 2245 .inject(document.body); 2246 a = d.offsetTop === 0; 2247 d.dispose(); 2248 b = true; 2249 }; 2250 ElementCust.implement({ 2251 pin: function (h, f) { 2252 if (!b) { 2253 c(); 2254 } 2255 if (this.getStyle("display") == "none") { 2256 return this; 2257 } 2258 var j, 2259 k = window.getScroll(), 2260 l, 2261 e; 2262 if (h !== false) { 2263 j = this.getPosition(a ? document.body : this.getOffsetParent()); 2264 if (!this.retrieve("pin:_pinned")) { 2265 var g = { top: j.y - k.y, left: j.x - k.x }; 2266 if (a && !f) { 2267 this.setStyle("position", "fixed").setStyles(g); 2268 } else { 2269 l = this.getOffsetParent(); 2270 var i = this.getPosition(l), 2271 m = this.getStyles("left", "top"); 2272 if ((l && m.left == "auto") || m.top == "auto") { 2273 this.setPosition(i); 2274 } 2275 if (this.getStyle("position") == "static") { 2276 this.setStyle("position", "absolute"); 2277 } 2278 i = { x: m.left.toInt() - k.x, y: m.top.toInt() - k.y }; 2279 e = function () { 2280 if (!this.retrieve("pin:_pinned")) { 2281 return; 2282 } 2283 var n = window.getScroll(); 2284 this.setStyles({ left: i.x + n.x, top: i.y + n.y }); 2285 }.bind(this); 2286 this.store("pin:_scrollFixer", e); 2287 window.addEvent("scroll", e); 2288 } 2289 this.store("pin:_pinned", true); 2290 } 2291 } else { 2292 if (!this.retrieve("pin:_pinned")) { 2293 return this; 2294 } 2295 l = this.getParent(); 2296 var d = 2297 l.getComputedStyle("position") != "static" ? l : l.getOffsetParent(); 2298 j = this.getPosition(d); 2299 this.store("pin:_pinned", false); 2300 e = this.retrieve("pin:_scrollFixer"); 2301 if (!e) { 2302 this.setStyles({ 2303 position: "absolute", 2304 top: j.y + k.y, 2305 left: j.x + k.x, 2306 }); 2307 } else { 2308 this.store("pin:_scrollFixer", null); 2309 window.removeEvent("scroll", e); 2310 } 2311 this.removeClass("isPinned"); 2312 } 2313 return this; 2314 }, 2315 unpin: function () { 2316 return this.pin(false); 2317 }, 2318 togglePin: function () { 2319 return this.pin(!this.retrieve("pin:_pinned")); 2320 }, 2321 }); 2322})(); 2323(function (b) { 2324 var a = (ElementCust.Position = { 2325 options: { 2326 relativeTo: document.body, 2327 position: { x: "center", y: "center" }, 2328 offset: { x: 0, y: 0 }, 2329 }, 2330 getOptions: function (d, c) { 2331 c = Object.merge({}, a.options, c); 2332 a.setPositionOption(c); 2333 a.setEdgeOption(c); 2334 a.setOffsetOption(d, c); 2335 a.setDimensionsOption(d, c); 2336 return c; 2337 }, 2338 setPositionOption: function (c) { 2339 c.position = a.getCoordinateFromValue(c.position); 2340 }, 2341 setEdgeOption: function (d) { 2342 var c = a.getCoordinateFromValue(d.edge); 2343 d.edge = c 2344 ? c 2345 : d.position.x == "center" && d.position.y == "center" 2346 ? { x: "center", y: "center" } 2347 : { x: "left", y: "top" }; 2348 }, 2349 setOffsetOption: function (f, d) { 2350 var c = { x: 0, y: 0 }, 2351 g = f.measure(function () { 2352 return document.id(this.getOffsetParent()); 2353 }), 2354 e = g.getScroll(); 2355 if (!g || g == f.getDocument().body) { 2356 return; 2357 } 2358 c = g.measure(function () { 2359 var i = this.getPosition(); 2360 if (this.getStyle("position") == "fixed") { 2361 var h = window.getScroll(); 2362 i.x += h.x; 2363 i.y += h.y; 2364 } 2365 return i; 2366 }); 2367 d.offset = { 2368 parentPositioned: g != document.id(d.relativeTo), 2369 x: d.offset.x - c.x + e.x, 2370 y: d.offset.y - c.y + e.y, 2371 }; 2372 }, 2373 setDimensionsOption: function (d, c) { 2374 c.dimensions = d.getDimensions({ 2375 computeSize: true, 2376 styles: ["padding", "border", "margin"], 2377 }); 2378 }, 2379 getPosition: function (e, d) { 2380 var c = {}; 2381 d = a.getOptions(e, d); 2382 var f = document.id(d.relativeTo) || document.body; 2383 a.setPositionCoordinates(d, c, f); 2384 if (d.edge) { 2385 a.toEdge(c, d); 2386 } 2387 var g = d.offset; 2388 c.left = ( 2389 c.x >= 0 || g.parentPositioned || d.allowNegative ? c.x : 0 2390 ).toInt(); 2391 c.top = ( 2392 c.y >= 0 || g.parentPositioned || d.allowNegative ? c.y : 0 2393 ).toInt(); 2394 a.toMinMax(c, d); 2395 if (d.relFixedPosition || f.getStyle("position") == "fixed") { 2396 a.toRelFixedPosition(f, c); 2397 } 2398 if (d.ignoreScroll) { 2399 a.toIgnoreScroll(f, c); 2400 } 2401 if (d.ignoreMargins) { 2402 a.toIgnoreMargins(c, d); 2403 }
2404 c.left = Math.ceil(c.left); 2405 c.top = Math.ceil(c.top); 2406 delete c.x; 2407 delete c.y; 2408 return c; 2409 }, 2410 setPositionCoordinates: function (k, g, d) { 2411 var f = k.offset.y, 2412 h = k.offset.x, 2413 e = d == document.body ? window.getScroll() : d.getPosition(), 2414 j = e.y, 2415 c = e.x, 2416 i = window.getSize(); 2417 switch (k.position.x) { 2418 case "left": 2419 g.x = c + h; 2420 break; 2421 case "right": 2422 g.x = c + h + d.offsetWidth; 2423 break; 2424 default: 2425 g.x = c + (d == document.body ? i.x : d.offsetWidth) / 2 + h; 2426 break; 2427 } 2428 switch (k.position.y) { 2429 case "top": 2430 g.y = j + f; 2431 break; 2432 case "bottom": 2433 g.y = j + f + d.offsetHeight; 2434 break; 2435 default: 2436 g.y = j + (d == document.body ? i.y : d.offsetHeight) / 2 + f; 2437 break; 2438 } 2439 }, 2440 toMinMax: function (c, d) { 2441 var f = { left: "x", top: "y" }, 2442 e; 2443 ["minimum", "maximum"].each(function (g) { 2444 ["left", "top"].each(function (h) { 2445 e = d[g] ? d[g][f[h]] : null; 2446 if (e != null && (g == "minimum" ? c[h] < e : c[h] > e)) { 2447 c[h] = e; 2448 } 2449 }); 2450 }); 2451 }, 2452 toRelFixedPosition: function (e, c) { 2453 var d = window.getScroll(); 2454 c.top += d.y; 2455 c.left += d.x; 2456 }, 2457 toIgnoreScroll: function (e, d) { 2458 var c = e.getScroll(); 2459 d.top -= c.y; 2460 d.left -= c.x; 2461 }, 2462 toIgnoreMargins: function (c, d) { 2463 c.left += 2464 d.edge.x == "right" 2465 ? d.dimensions["margin-right"] 2466 : d.edge.x != "center" 2467 ? -d.dimensions["margin-left"] 2468 : -d.dimensions["margin-left"] + 2469 (d.dimensions["margin-right"] + d.dimensions["margin-left"]) / 2; 2470 c.top += 2471 d.edge.y == "bottom" 2472 ? d.dimensions["margin-bottom"] 2473 : d.edge.y != "center" 2474 ? -d.dimensions["margin-top"] 2475 : -d.dimensions["margin-top"] + 2476 (d.dimensions["margin-bottom"] + d.dimensions["margin-top"]) / 2; 2477 }, 2478 toEdge: function (c, d) { 2479 var e = {}, 2480 g = d.dimensions, 2481 f = d.edge; 2482 switch (f.x) { 2483 case "left": 2484 e.x = 0; 2485 break; 2486 case "right": 2487 e.x = -g.x - g.computedRight - g.computedLeft; 2488 break; 2489 default: 2490 e.x = -Math.round(g.totalWidth / 2); 2491 break; 2492 } 2493 switch (f.y) { 2494 case "top": 2495 e.y = 0; 2496 break; 2497 case "bottom": 2498 e.y = -g.y - g.computedTop - g.computedBottom; 2499 break; 2500 default: 2501 e.y = -Math.round(g.totalHeight / 2); 2502 break; 2503 } 2504 c.x += e.x; 2505 c.y += e.y; 2506 }, 2507 getCoordinateFromValue: function (c) { 2508 if (typeOf(c) != "string") { 2509 return c; 2510 } 2511 c = c.toLowerCase(); 2512 return { 2513 x: c.test("left") ? "left" : c.test("right") ? "right" : "center", 2514 y: c.test(/upper|top/) ? "top" : c.test("bottom") ? "bottom" : "center", 2515 }; 2516 }, 2517 }); 2518 ElementCust.implement({ 2519 position: function (d) { 2520 if (d && (d.x != null || d.y != null)) { 2521 return b ? b.apply(this, arguments) : this; 2522 } 2523 var c = this.setStyle("position", "absolute").calculatePosition(d); 2524 return d && d.returnPos ? c : this.setStyles(c); 2525 }, 2526 calculatePosition: function (c) { 2527 return a.getPosition(this, c); 2528 }, 2529 }); 2530})(ElementCust.prototype.position); 2531ElementCust.implement({ 2532 isDisplayed: function () { 2533 return this.getStyle("display") != "none"; 2534 }, 2535 isVisible: function () { 2536 var a = this.offsetWidth, 2537 b = this.offsetHeight; 2538 return a == 0 && b == 0 2539 ? false 2540 : a > 0 && b > 0 2541 ? true 2542 : this.style.display != "none"; 2543 }, 2544 toggle: function () { 2545 return this[this.isDisplayed() ? "hide" : "show"](); 2546 }, 2547 hide: function () { 2548 var b; 2549 try { 2550 b = this.getStyle("display"); 2551 } catch (a) {} 2552 if (b == "none") { 2553 return this; 2554 } 2555 return this.store("ElementCust:_originalDisplay", b || "").setStyle( 2556 "display", 2557 "none" 2558 ); 2559 }, 2560 show: function (a) { 2561 if (!a && this.isDisplayed()) { 2562 return this; 2563 } 2564 a = a || this.retrieve("ElementCust:_originalDisplay") || "block"; 2565 return this.setStyle("display", a == "none" ? "block" : a); 2566 }, 2567 swapClass: function (a, b) { 2568 return this.removeClass(a).addClass(b); 2569 }, 2570}); 2571Document.implement({ 2572 clearSelection: function () { 2573 if (window.getSelection) { 2574 var a = window.getSelection(); 2575 if (a && a.removeAllRanges) { 2576 a.removeAllRanges(); 2577 } 2578 } else { 2579 if (document.selection && document.selection.empty) { 2580 try { 2581 document.selection.empty(); 2582 } catch (b) {} 2583 } 2584 } 2585 }, 2586}); 2587var IframeShim = new Class({ 2588 Implements: [Options, Events, Class.Occlude], 2589 options: { 2590 className: "iframeShim", 2591 src: 'javascript:false;document.write("");', 2592 display: false, 2593 zIndex: null, 2594 margin: 0, 2595 offset: { x: 0, y: 0 }, 2596 browsers: 2597 Browser.ie6 || 2598 (Browser.firefox && Browser.version < 3 && Browser.Platform.mac), 2599 }, 2600 property: "IframeShim", 2601 initialize: function (b, a) { 2602 this.ElementCust = document.id(b); 2603 if (this.occlude()) { 2604 return this.occluded; 2605 } 2606 this.setOptions(a); 2607 this.makeShim(); 2608 return this; 2609 }, 2610 makeShim: function () { 2611 if (this.options.browsers) { 2612 var c = this.ElementCust.getStyle("zIndex").toInt(); 2613 if (!c) { 2614 c = 1; 2615 var b = this.ElementCust.getStyle("position"); 2616 if (b == "static" || !b) { 2617 this.ElementCust.setStyle("position", "relative"); 2618 } 2619 this.ElementCust.setStyle("zIndex", c); 2620 } 2621 c = 2622 (this.options.zIndex != null || this.options.zIndex === 0) && 2623 c > this.options.zIndex 2624 ? this.options.zIndex 2625 : c - 1; 2626 if (c < 0) { 2627 c = 1; 2628 } 2629 this.shim = new ElementCust("iframe", { 2630 src: this.options.src, 2631 scrolling: "no", 2632 frameborder: 0, 2633 styles: { 2634 zIndex: c, 2635 position: "absolute", 2636 border: "none", 2637 filter: "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)", 2638 }, 2639 class: this.options.className, 2640 }).store("IframeShim", this); 2641 var a = function () { 2642 this.shim.inject(this.ElementCust, "after"); 2643 this[this.options.display ? "show" : "hide"](); 2644 this.fireEvent("inject"); 2645 }.bind(this); 2646 if (!IframeShim.ready) { 2647 window.addEvent("load", a); 2648 } else { 2649 a(); 2650 } 2651 } else { 2652 this.position = 2653 this.hide = 2654 this.show = 2655 this.dispose = 2656 Function.from(this); 2657 } 2658 }, 2659 position: function () { 2660 if (!IframeShim.ready || !this.shim) { 2661 return this; 2662 } 2663 var a = this.ElementCust.measure(function () {
2664 return this.getSize(); 2665 }); 2666 if (this.options.margin != undefined) { 2667 a.x = a.x - this.options.margin * 2; 2668 a.y = a.y - this.options.margin * 2; 2669 this.options.offset.x += this.options.margin; 2670 this.options.offset.y += this.options.margin; 2671 } 2672 this.shim 2673 .set({ width: a.x, height: a.y }) 2674 .position({ relativeTo: this.ElementCust, offset: this.options.offset }); 2675 return this; 2676 }, 2677 hide: function () { 2678 if (this.shim) { 2679 this.shim.setStyle("display", "none"); 2680 } 2681 return this; 2682 }, 2683 show: function () { 2684 if (this.shim) { 2685 this.shim.setStyle("display", "block"); 2686 } 2687 return this.position(); 2688 }, 2689 dispose: function () { 2690 if (this.shim) { 2691 this.shim.dispose(); 2692 } 2693 return this; 2694 }, 2695 destroy: function () { 2696 if (this.shim) { 2697 this.shim.destroy(); 2698 } 2699 return this; 2700 }, 2701}); 2702window.addEvent("load", function () { 2703 IframeShim.ready = true; 2704}); 2705var Mask = new Class({ 2706 Implements: [Options, Events], 2707 Binds: ["position"], 2708 options: { 2709 style: {}, 2710 class: "mask", 2711 maskMargins: false, 2712 useIframeShim: true, 2713 iframeShimOptions: {}, 2714 }, 2715 initialize: function (b, a) { 2716 this.target = document.id(b) || document.id(document.body); 2717 this.target.store("mask", this); 2718 this.setOptions(a); 2719 this.render(); 2720 this.inject(); 2721 }, 2722 render: function () { 2723 this.ElementCust = new ElementCust("div", { 2724 class: this.options["class"], 2725 id: this.options.id || "mask-" + String.uniqueID(), 2726 styles: Object.merge({}, this.options.style, { display: "none" }), 2727 events: { 2728 click: function (a) { 2729 this.fireEvent("click", a); 2730 if (this.options.hideOnClick) { 2731 this.hide(); 2732 } 2733 }.bind(this), 2734 }, 2735 }); 2736 this.hidden = true; 2737 }, 2738 toElement: function () { 2739 return this.ElementCust; 2740 }, 2741 inject: function (b, a) { 2742 a = 2743 a || 2744 (this.options.inject ? this.options.inject.where : "") || 2745 this.target == document.body 2746 ? "inside" 2747 : "after"; 2748 b = b || (this.options.inject && this.options.inject.target) || this.target; 2749 this.ElementCust.inject(b, a); 2750 if (this.options.useIframeShim) { 2751 this.shim = new IframeShim(this.ElementCust, this.options.iframeShimOptions); 2752 this.addEvents({ 2753 show: this.shim.show.bind(this.shim), 2754 hide: this.shim.hide.bind(this.shim), 2755 destroy: this.shim.destroy.bind(this.shim), 2756 }); 2757 } 2758 }, 2759 position: function () { 2760 this.resize(this.options.width, this.options.height); 2761 this.ElementCust.position({ 2762 relativeTo: this.target, 2763 position: "topLeft", 2764 ignoreMargins: !this.options.maskMargins, 2765 ignoreScroll: this.target == document.body, 2766 }); 2767 return this; 2768 }, 2769 resize: function (a, e) { 2770 var b = { styles: ["padding", "border"] }; 2771 if (this.options.maskMargins) { 2772 b.styles.push("margin"); 2773 } 2774 var d = this.target.getComputedSize(b); 2775 if (this.target == document.body) { 2776 this.ElementCust.setStyles({ width: 0, height: 0 }); 2777 var c = window.getScrollSize(); 2778 if (d.totalHeight < c.y) { 2779 d.totalHeight = c.y; 2780 } 2781 if (d.totalWidth < c.x) { 2782 d.totalWidth = c.x; 2783 } 2784 } 2785 this.ElementCust.setStyles({ 2786 width: Array.pick([a, d.totalWidth, d.x]), 2787 height: Array.pick([e, d.totalHeight, d.y]), 2788 }); 2789 return this; 2790 }, 2791 show: function () { 2792 if (!this.hidden) { 2793 return this; 2794 } 2795 window.addEvent("resize", this.position); 2796 this.position(); 2797 this.showMask.apply(this, arguments); 2798 return this; 2799 }, 2800 showMask: function () { 2801 this.ElementCust.setStyle("display", "block"); 2802 this.hidden = false; 2803 this.fireEvent("show"); 2804 }, 2805 hide: function () { 2806 if (this.hidden) { 2807 return this; 2808 } 2809 window.removeEvent("resize", this.position); 2810 this.hideMask.apply(this, arguments); 2811 if (this.options.destroyOnHide) { 2812 return this.destroy(); 2813 } 2814 return this; 2815 }, 2816 hideMask: function () { 2817 this.ElementCust.setStyle("display", "none"); 2818 this.hidden = true; 2819 this.fireEvent("hide"); 2820 }, 2821 toggle: function () { 2822 this[this.hidden ? "show" : "hide"](); 2823 }, 2824 destroy: function () { 2825 this.hide(); 2826 this.ElementCust.destroy(); 2827 this.fireEvent("destroy"); 2828 this.target.eliminate("mask"); 2829 }, 2830}); 2831ElementCust.Properties.mask = { 2832 set: function (b) { 2833 var a = this.retrieve("mask"); 2834 if (a) { 2835 a.destroy(); 2836 } 2837 return this.eliminate("mask").store("mask:options", b); 2838 }, 2839 get: function () { 2840 var a = this.retrieve("mask"); 2841 if (!a) { 2842 a = new Mask(this, this.retrieve("mask:options")); 2843 this.store("mask", a); 2844 } 2845 return a; 2846 }, 2847}; 2848ElementCust.implement({ 2849 mask: function (a) { 2850 if (a) { 2851 this.set("mask", a); 2852 } 2853 this.get("mask").show(); 2854 return this; 2855 }, 2856 unmask: function () { 2857 this.get("mask").hide(); 2858 return this; 2859 }, 2860}); 2861var Spinner = new Class({ 2862 Extends: Mask, 2863 Implements: Chain, 2864 options: { 2865 class: "spinner", 2866 containerPosition: {}, 2867 content: { class: "spinner-content" }, 2868 messageContainer: { class: "spinner-msg" }, 2869 img: { class: "spinner-img" }, 2870 fxOptions: { link: "chain" }, 2871 }, 2872 initialize: function (c, a) { 2873 this.target = document.id(c) || document.id(document.body); 2874 this.target.store("spinner", this); 2875 this.setOptions(a); 2876 this.render(); 2877 this.inject(); 2878 var b = function () { 2879 this.active = false;
2880 }.bind(this); 2881 this.addEvents({ hide: b, show: b }); 2882 }, 2883 render: function () { 2884 this.parent(); 2885 this.ElementCust.set("id", this.options.id || "spinner-" + String.uniqueID()); 2886 this.content = 2887 document.id(this.options.content) || 2888 new ElementCust("div", this.options.content); 2889 this.content.inject(this.ElementCust); 2890 if (this.options.message) { 2891 this.msg = 2892 document.id(this.options.message) || 2893 new ElementCust("p", this.options.messageContainer).appendText( 2894 this.options.message 2895 ); 2896 this.msg.inject(this.content); 2897 } 2898 if (this.options.img) { 2899 this.img = 2900 document.id(this.options.img) || new ElementCust("div", this.options.img); 2901 this.img.inject(this.content); 2902 } 2903 this.ElementCust.set("tween", this.options.fxOptions); 2904 }, 2905 show: function (a) { 2906 if (this.active) { 2907 return this.chain(this.show.bind(this)); 2908 } 2909 if (!this.hidden) { 2910 this.callChain.delay(20, this); 2911 return this; 2912 } 2913 this.active = true; 2914 return this.parent(a); 2915 }, 2916 showMask: function (a) { 2917 var b = function () { 2918 this.content.position( 2919 Object.merge( 2920 { relativeTo: this.ElementCust }, 2921 this.options.containerPosition 2922 ) 2923 ); 2924 }.bind(this); 2925 if (a) { 2926 this.parent(); 2927 b(); 2928 } else { 2929 if (!this.options.style.opacity) { 2930 this.options.style.opacity = this.ElementCust.getStyle("opacity").toFloat(); 2931 } 2932 this.ElementCust 2933 .setStyles({ display: "block", opacity: 0 }) 2934 .tween("opacity", this.options.style.opacity); 2935 b(); 2936 this.hidden = false; 2937 this.fireEvent("show"); 2938 this.callChain(); 2939 } 2940 }, 2941 hide: function (a) { 2942 if (this.active) { 2943 return this.chain(this.hide.bind(this)); 2944 } 2945 if (this.hidden) { 2946 this.callChain.delay(20, this); 2947 return this; 2948 } 2949 this.active = true; 2950 return this.parent(a); 2951 }, 2952 hideMask: function (a) { 2953 if (a) { 2954 return this.parent(); 2955 } 2956 this.ElementCust 2957 .tween("opacity", 0) 2958 .get("tween") 2959 .chain( 2960 function () { 2961 this.ElementCust.setStyle("display", "none"); 2962 this.hidden = true; 2963 this.fireEvent("hide"); 2964 this.callChain(); 2965 }.bind(this) 2966 ); 2967 }, 2968 destroy: function () { 2969 this.content.destroy(); 2970 this.parent(); 2971 this.target.eliminate("spinner"); 2972 }, 2973}); 2974Request = Class.refactor(Request, { 2975 options: { useSpinner: false, spinnerOptions: {}, spinnerTarget: false }, 2976 initialize: function (a) { 2977 this._send = this.send; 2978 this.send = function (b) { 2979 var c = this.getSpinner(); 2980 if (c) { 2981 c.chain(this._send.pass(b, this)).show(); 2982 } else { 2983 this._send(b); 2984 } 2985 return this; 2986 }; 2987 this.previous(a); 2988 }, 2989 getSpinner: function () { 2990 if (!this.spinner) { 2991 var b = 2992 document.id(this.options.spinnerTarget) || 2993 document.id(this.options.update); 2994 if (this.options.useSpinner && b) { 2995 b.set("spinner", this.options.spinnerOptions); 2996 var a = (this.spinner = b.get("spinner")); 2997 ["complete", "exception", "cancel"].each(function (c) { 2998 this.addEvent(c, a.hide.bind(a)); 2999 }, this); 3000 } 3001 } 3002 return this.spinner; 3003 }, 3004}); 3005ElementCust.Properties.spinner = { 3006 set: function (a) { 3007 var b = this.retrieve("spinner"); 3008 if (b) { 3009 b.destroy(); 3010 } 3011 return this.eliminate("spinner").store("spinner:options", a); 3012 }, 3013 get: function () { 3014 var a = this.retrieve("spinner"); 3015 if (!a) { 3016 a = new Spinner(this, this.retrieve("spinner:options")); 3017 this.store("spinner", a); 3018 } 3019 return a; 3020 }, 3021}; 3022ElementCust.implement({ 3023 spin: function (a) { 3024 if (a) { 3025 this.set("spinner", a); 3026 } 3027 this.get("spinner").show(); 3028 return this; 3029 }, 3030 unspin: function () { 3031 this.get("spinner").hide(); 3032 return this; 3033 }, 3034}); 3035if (!window.Form) { 3036 window.Form = {}; 3037} 3038(function () { 3039 Form.Request = new Class({ 3040 Binds: ["onSubmit", "onFormValidate"], 3041 Implements: [Options, Events, Class.Occlude], 3042 options: { 3043 requestOptions: { 3044 evalScripts: true, 3045 useSpinner: true, 3046 emulation: false, 3047 link: "ignore", 3048 }, 3049 sendButtonClicked: true, 3050 extraData: {}, 3051 resetForm: true, 3052 }, 3053 property: "form.request", 3054 initialize: function (b, c, a) { 3055 this.ElementCust = document.id(b); 3056 if (this.occlude()) { 3057 return this.occluded; 3058 } 3059 this.setOptions(a).setTarget(c).attach(); 3060 }, 3061 setTarget: function (a) { 3062 this.target = document.id(a); 3063 if (!this.request) {
3064 this.makeRequest(); 3065 } else { 3066 this.request.setOptions({ update: this.target }); 3067 } 3068 return this; 3069 }, 3070 toElement: function () { 3071 return this.ElementCust; 3072 }, 3073 makeRequest: function () { 3074 var a = this; 3075 this.request = new Request.HTML( 3076 Object.merge( 3077 { 3078 update: this.target, 3079 emulation: false, 3080 spinnerTarget: this.ElementCust, 3081 method: this.ElementCust.get("method") || "post", 3082 }, 3083 this.options.requestOptions 3084 ) 3085 ).addEvents({ 3086 success: function (c, e, d, b) { 3087 ["complete", "success"].each(function (f) { 3088 a.fireEvent(f, [a.target, c, e, d, b]); 3089 }); 3090 }, 3091 failure: function () { 3092 a.fireEvent("complete", arguments).fireEvent("failure", arguments); 3093 }, 3094 exception: function () { 3095 a.fireEvent("failure", arguments); 3096 }, 3097 }); 3098 return this.attachReset(); 3099 }, 3100 attachReset: function () { 3101 if (!this.options.resetForm) { 3102 return this; 3103 } 3104 this.request.addEvent( 3105 "success", 3106 function () { 3107 Function.attempt( 3108 function () { 3109 this.ElementCust.reset(); 3110 }.bind(this) 3111 ); 3112 if (window.OverText) { 3113 OverText.update(); 3114 } 3115 }.bind(this) 3116 ); 3117 return this; 3118 }, 3119 attach: function (a) { 3120 var c = a != false ? "addEvent" : "removeEvent"; 3121 this.ElementCust[c]( 3122 "click:relay(button, input[type=submit])", 3123 this.saveClickedButton.bind(this) 3124 ); 3125 var b = this.ElementCust.retrieve("validator"); 3126 if (b) { 3127 b[c]("onFormValidate", this.onFormValidate); 3128 } else { 3129 this.ElementCust[c]("submit", this.onSubmit); 3130 } 3131 return this; 3132 }, 3133 detach: function () { 3134 return this.attach(false); 3135 }, 3136 enable: function () { 3137 return this.attach(); 3138 }, 3139 disable: function () { 3140 return this.detach(); 3141 }, 3142 onFormValidate: function (c, b, a) { 3143 if (!a) { 3144 return; 3145 } 3146 var d = this.ElementCust.retrieve("validator"); 3147 if (c || (d && !d.options.stopOnFailure)) { 3148 a.stop(); 3149 this.send(); 3150 } 3151 }, 3152 onSubmit: function (a) { 3153 var b = this.ElementCust.retrieve("validator"); 3154 if (b) { 3155 this.ElementCust.removeEvent("submit", this.onSubmit); 3156 b.addEvent("onFormValidate", this.onFormValidate); 3157 this.ElementCust.validate(); 3158 return; 3159 } 3160 if (a) { 3161 a.stop(); 3162 } 3163 this.send(); 3164 }, 3165 saveClickedButton: function (b, c) { 3166 var a = c.get("name"); 3167 if (!a || !this.options.sendButtonClicked) { 3168 return; 3169 } 3170 this.options.extraData[a] = c.get("value") || true; 3171 this.clickedCleaner = function () { 3172 delete this.options.extraData[a]; 3173 this.clickedCleaner = function () {}; 3174 }.bind(this); 3175 }, 3176 clickedCleaner: function () {}, 3177 send: function () { 3178 var b = this.ElementCust.toQueryString().trim(), 3179 a = Object.toQueryString(this.options.extraData); 3180 if (b) { 3181 b += "&" + a; 3182 } else { 3183 b = a; 3184 } 3185 this.fireEvent("send", [this.ElementCust, b.parseQueryString()]); 3186 this.request.send({ 3187 data: b, 3188 url: this.options.requestOptions.url || this.ElementCust.get("action"), 3189 }); 3190 this.clickedCleaner(); 3191 return this; 3192 }, 3193 }); 3194 ElementCust.implement("formUpdate", function (c, b) { 3195 var a = this.retrieve("form.request"); 3196 if (!a) {
3197 a = new Form.Request(this, c, b); 3198 } else { 3199 if (c) { 3200 a.setTarget(c); 3201 } 3202 if (b) { 3203 a.setOptions(b).makeRequest(); 3204 } 3205 } 3206 a.send(); 3207 return this; 3208 }); 3209})(); 3210(function () { 3211 var a = function (d) { 3212 var b = d.options.hideInputs; 3213 if (window.OverText) { 3214 var c = [null]; 3215 OverText.each(function (e) { 3216 c.include("." + e.options.labelClass); 3217 }); 3218 if (c) { 3219 b += c.join(", "); 3220 } 3221 } 3222 return b ? d.ElementCust.getElements(b) : null; 3223 }; 3224 Fx.Reveal = new Class({ 3225 Extends: Fx.Morph, 3226 options: { 3227 link: "cancel", 3228 styles: ["padding", "border", "margin"], 3229 transitionOpacity: !Browser.ie6, 3230 mode: "vertical", 3231 display: function () { 3232 return this.ElementCust.get("tag") != "tr" ? "block" : "table-row"; 3233 }, 3234 opacity: 1, 3235 hideInputs: Browser.ie ? "select, input, textarea, object, embed" : null, 3236 }, 3237 dissolve: function () { 3238 if (!this.hiding && !this.showing) { 3239 if (this.ElementCust.getStyle("display") != "none") { 3240 this.hiding = true; 3241 this.showing = false; 3242 this.hidden = true; 3243 this.cssText = this.ElementCust.style.cssText; 3244 var d = this.ElementCust.getComputedSize({ 3245 styles: this.options.styles, 3246 mode: this.options.mode, 3247 }); 3248 if (this.options.transitionOpacity) { 3249 d.opacity = this.options.opacity; 3250 } 3251 var c = {}; 3252 Object.each(d, function (f, e) { 3253 c[e] = [f, 0]; 3254 }); 3255 this.ElementCust.setStyles({ 3256 display: Function.from(this.options.display).call(this), 3257 overflow: "hidden", 3258 }); 3259 var b = a(this); 3260 if (b) { 3261 b.setStyle("visibility", "hidden"); 3262 } 3263 this.$chain.unshift( 3264 function () { 3265 if (this.hidden) { 3266 this.hiding = false; 3267 this.ElementCust.style.cssText = this.cssText; 3268 this.ElementCust.setStyle("display", "none"); 3269 if (b) { 3270 b.setStyle("visibility", "visible"); 3271 } 3272 } 3273 this.fireEvent("hide", this.ElementCust); 3274 this.callChain(); 3275 }.bind(this) 3276 ); 3277 this.start(c); 3278 } else { 3279 this.callChain.delay(10, this); 3280 this.fireEvent("complete", this.ElementCust); 3281 this.fireEvent("hide", this.ElementCust); 3282 } 3283 } else { 3284 if (this.options.link == "chain") { 3285 this.chain(this.dissolve.bind(this)); 3286 } else { 3287 if (this.options.link == "cancel" && !this.hiding) { 3288 this.cancel(); 3289 this.dissolve(); 3290 } 3291 } 3292 } 3293 return this; 3294 }, 3295 reveal: function () { 3296 if (!this.showing && !this.hiding) { 3297 if (this.ElementCust.getStyle("display") == "none") { 3298 this.hiding = false; 3299 this.showing = true; 3300 this.hidden = false; 3301 this.cssText = this.ElementCust.style.cssText; 3302 var d; 3303 this.ElementCust.measure( 3304 function () { 3305 d = this.ElementCust.getComputedSize({ 3306 styles: this.options.styles, 3307 mode: this.options.mode, 3308 }); 3309 }.bind(this) 3310 ); 3311 if (this.options.heightOverride != null) { 3312 d.height = this.options.heightOverride.toInt(); 3313 } 3314 if (this.options.widthOverride != null) { 3315 d.width = this.options.widthOverride.toInt(); 3316 } 3317 if (this.options.transitionOpacity) { 3318 this.ElementCust.setStyle("opacity", 0); 3319 d.opacity = this.options.opacity; 3320 } 3321 var c = { 3322 height: 0, 3323 display: Function.from(this.options.display).call(this), 3324 }; 3325 Object.each(d, function (f, e) { 3326 c[e] = 0; 3327 }); 3328 c.overflow = "hidden"; 3329 this.ElementCust.setStyles(c); 3330 var b = a(this); 3331 if (b) { 3332 b.setStyle("visibility", "hidden"); 3333 } 3334 this.$chain.unshift( 3335 function () { 3336 this.ElementCust.style.cssText = this.cssText; 3337 this.ElementCust.setStyle( 3338 "display", 3339 Function.from(this.options.display).call(this) 3340 ); 3341 if (!this.hidden) { 3342 this.showing = false;
3343 } 3344 if (b) { 3345 b.setStyle("visibility", "visible"); 3346 } 3347 this.callChain(); 3348 this.fireEvent("show", this.ElementCust); 3349 }.bind(this) 3350 ); 3351 this.start(d); 3352 } else { 3353 this.callChain(); 3354 this.fireEvent("complete", this.ElementCust); 3355 this.fireEvent("show", this.ElementCust); 3356 } 3357 } else { 3358 if (this.options.link == "chain") { 3359 this.chain(this.reveal.bind(this)); 3360 } else { 3361 if (this.options.link == "cancel" && !this.showing) { 3362 this.cancel(); 3363 this.reveal(); 3364 } 3365 } 3366 } 3367 return this; 3368 }, 3369 toggle: function () { 3370 if (this.ElementCust.getStyle("display") == "none") { 3371 this.reveal(); 3372 } else { 3373 this.dissolve(); 3374 } 3375 return this; 3376 }, 3377 cancel: function () { 3378 this.parent.apply(this, arguments); 3379 if (this.cssText != null) { 3380 this.ElementCust.style.cssText = this.cssText; 3381 } 3382 this.hiding = false; 3383 this.showing = false; 3384 return this; 3385 }, 3386 }); 3387 ElementCust.Properties.reveal = { 3388 set: function (b) { 3389 this.get("reveal").cancel().setOptions(b); 3390 return this; 3391 }, 3392 get: function () { 3393 var b = this.retrieve("reveal"); 3394 if (!b) { 3395 b = new Fx.Reveal(this); 3396 this.store("reveal", b); 3397 } 3398 return b; 3399 }, 3400 }; 3401 ElementCust.Properties.dissolve = ElementCust.Properties.reveal; 3402 ElementCust.implement({ 3403 reveal: function (b) { 3404 this.get("reveal").setOptions(b).reveal(); 3405 return this; 3406 }, 3407 dissolve: function (b) { 3408 this.get("reveal").setOptions(b).dissolve(); 3409 return this; 3410 }, 3411 nix: function (b) { 3412 var c = Array.link(arguments, { 3413 destroy: Type.isBoolean, 3414 options: Type.isObject, 3415 }); 3416 this.get("reveal") 3417 .setOptions(b)
3418 .dissolve() 3419 .chain( 3420 function () { 3421 this[c.destroy ? "destroy" : "dispose"](); 3422 }.bind(this) 3423 ); 3424 return this; 3425 }, 3426 wink: function () { 3427 var c = Array.link(arguments, { 3428 duration: Type.isNumber, 3429 options: Type.isObject, 3430 }); 3431 var b = this.get("reveal").setOptions(c.options); 3432 b.reveal().chain(function () { 3433 (function () { 3434 b.dissolve(); 3435 }).delay(c.duration || 2000); 3436 }); 3437 }, 3438 }); 3439})(); 3440Form.Request.Append = new Class({ 3441 Extends: Form.Request, 3442 options: { useReveal: true, revealOptions: {}, inject: "bottom" }, 3443 makeRequest: function () { 3444 this.request = new Request.HTML( 3445 Object.merge( 3446 { 3447 url: this.ElementCust.get("action"), 3448 method: this.ElementCust.get("method") || "post", 3449 spinnerTarget: this.ElementCust, 3450 }, 3451 this.options.requestOptions, 3452 { evalScripts: false } 3453 ) 3454 ).addEvents({ 3455 success: function (b, g, f, a) { 3456 var c; 3457 var d = Elements.from(f); 3458 if (d.length == 1) { 3459 c = d[0]; 3460 } else { 3461 c = new ElementCust("div", { styles: { display: "none" } }).adopt(d); 3462 } 3463 c.inject(this.target, this.options.inject); 3464 if (this.options.requestOptions.evalScripts) { 3465 Browser.exec(a); 3466 } 3467 this.fireEvent("beforeEffect", c); 3468 var e = function () { 3469 this.fireEvent("success", [c, this.target, b, g, f, a]); 3470 }.bind(this); 3471 if (this.options.useReveal) { 3472 c.set("reveal", this.options.revealOptions).get("reveal").chain(e); 3473 c.reveal(); 3474 } else { 3475 e(); 3476 } 3477 }.bind(this), 3478 failure: function (a) { 3479 this.fireEvent("failure", a); 3480 }.bind(this), 3481 }); 3482 this.attachReset(); 3483 }, 3484}); 3485Locale.define("en-US", "FormValidator", { 3486 required: "This field is required.", 3487 length: 3488 "Please enter {length} characters (you entered {elLength} characters)", 3489 minLength: 3490 "Please enter at least {minLength} characters (you entered {length} characters).", 3491 maxLength: 3492 "Please enter no more than {maxLength} characters (you entered {length} characters).", 3493 integer: 3494 "Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.", 3495 numeric: 3496 'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").', 3497 digits: 3498 "Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).", 3499 alpha: 3500 "Please use only letters (a-z) within this field. No spaces or other characters are allowed.", 3501 alphanum: 3502 "Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.", 3503 dateSuchAs: "Please enter a valid date such as {date}", 3504 dateInFormatMDY: 3505 'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")', 3506 email: 'Please enter a valid email address. For example "[email protected]".', 3507 url: "Please enter a valid URL such as http://www.example.com.", 3508 currencyDollar: "Please enter a valid $ amount. For example $100.00 .", 3509 oneRequired: "Please enter something for at least one of these inputs.", 3510 errorPrefix: "Error: ", 3511 warningPrefix: "Warning: ", 3512 noSpace: "There can be no spaces in this input.", 3513 reqChkByNode: "No items are selected.", 3514 requiredChk: "This field is required.", 3515 reqChkByName: "Please select a {label}.", 3516 match: "This field needs to match the {matchName} field", 3517 startDate: "the start date", 3518 endDate: "the end date", 3519 currendDate: "the current date", 3520 afterDate: "The date should be the same or after {label}.", 3521 beforeDate: "The date should be the same or before {label}.", 3522 startMonth: "Please select a start month", 3523 sameMonth: 3524 "These two dates must be in the same month - you must change one or the other.", 3525 creditcard: 3526 "The credit card number entered is invalid. Please check the number and try again. {length} digits entered.", 3527}); 3528if (!window.Form) { 3529 window.Form = {}; 3530} 3531var InputValidator = (this.InputValidator = new Class({ 3532 Implements: [Options], 3533 options: { errorMsg: "Validation failed.", test: Function.from(true) }, 3534 initialize: function (b, a) { 3535 this.setOptions(a); 3536 this.className = b; 3537 }, 3538 test: function (b, a) { 3539 b = document.id(b); 3540 return b ? this.options.test(b, a || this.getProps(b)) : false;
3541 }, 3542 getError: function (c, a) { 3543 c = document.id(c); 3544 var b = this.options.errorMsg; 3545 if (typeOf(b) == "function") { 3546 b = b(c, a || this.getProps(c)); 3547 } 3548 return b; 3549 }, 3550 getProps: function (a) { 3551 a = document.id(a); 3552 return a ? a.get("validatorProps") : {}; 3553 }, 3554})); 3555ElementCust.Properties.validators = { 3556 get: function () { 3557 return (this.get("data-validators") || this.className).clean().split(" "); 3558 }, 3559}; 3560ElementCust.Properties.validatorProps = { 3561 set: function (a) { 3562 return this.eliminate("$moo:validatorProps").store( 3563 "$moo:validatorProps", 3564 a 3565 ); 3566 }, 3567 get: function (a) { 3568 if (a) { 3569 this.set(a); 3570 } 3571 if (this.retrieve("$moo:validatorProps")) { 3572 return this.retrieve("$moo:validatorProps"); 3573 } 3574 if ( 3575 this.getProperty("data-validator-properties") || 3576 this.getProperty("validatorProps") 3577 ) { 3578 try { 3579 this.store( 3580 "$moo:validatorProps", 3581 JSON.decode( 3582 this.getProperty("validatorProps") || 3583 this.getProperty("data-validator-properties") 3584 ) 3585 ); 3586 } catch (c) { 3587 return {}; 3588 } 3589 } else { 3590 var b = this.get("validators").filter(function (d) { 3591 return d.test(":"); 3592 }); 3593 if (!b.length) { 3594 this.store("$moo:validatorProps", {}); 3595 } else { 3596 a = {}; 3597 b.each(function (d) { 3598 var f = d.split(":"); 3599 if (f[1]) { 3600 try { 3601 a[f[0]] = JSON.decode(f[1]); 3602 } catch (g) {} 3603 } 3604 }); 3605 this.store("$moo:validatorProps", a); 3606 } 3607 } 3608 return this.retrieve("$moo:validatorProps"); 3609 }, 3610}; 3611Form.Validator = new Class({ 3612 Implements: [Options, Events], 3613 Binds: ["onSubmit"], 3614 options: { 3615 fieldSelectors: "input, select, textarea", 3616 ignoreHidden: true, 3617 ignoreDisabled: true, 3618 useTitles: false, 3619 evaluateOnSubmit: true, 3620 evaluateFieldsOnBlur: true, 3621 evaluateFieldsOnChange: true, 3622 serial: true, 3623 stopOnFailure: true, 3624 warningPrefix: function () { 3625 return Form.Validator.getMsg("warningPrefix") || "Warning: "; 3626 }, 3627 errorPrefix: function () { 3628 return Form.Validator.getMsg("errorPrefix") || "Error: "; 3629 }, 3630 }, 3631 initialize: function (b, a) { 3632 this.setOptions(a); 3633 this.ElementCust = document.id(b); 3634 this.ElementCust.store("validator", this); 3635 this.warningPrefix = Function.from(this.options.warningPrefix)(); 3636 this.errorPrefix = Function.from(this.options.errorPrefix)(); 3637 if (this.options.evaluateOnSubmit) { 3638 this.ElementCust.addEvent("submit", this.onSubmit); 3639 } 3640 if ( 3641 this.options.evaluateFieldsOnBlur || 3642 this.options.evaluateFieldsOnChange 3643 ) { 3644 this.watchFields(this.getFields()); 3645 } 3646 }, 3647 toElement: function () { 3648 return this.ElementCust; 3649 }, 3650 getFields: function () { 3651 return (this.fields = this.ElementCust.getElements( 3652 this.options.fieldSelectors 3653 )); 3654 }, 3655 watchFields: function (a) { 3656 a.each(function (b) { 3657 if (this.options.evaluateFieldsOnBlur) { 3658 b.addEvent("blur", this.validationMonitor.pass([b, false], this)); 3659 } 3660 if (this.options.evaluateFieldsOnChange) { 3661 b.addEvent("change", this.validationMonitor.pass([b, true], this)); 3662 } 3663 }, this); 3664 }, 3665 validationMonitor: function () { 3666 clearTimeout(this.timer); 3667 this.timer = this.validateField.delay(50, this, arguments); 3668 }, 3669 onSubmit: function (a) { 3670 if (this.validate(a)) { 3671 this.reset(); 3672 } 3673 }, 3674 reset: function () { 3675 this.getFields().each(this.resetField, this); 3676 return this; 3677 }, 3678 validate: function (b) { 3679 var a = this.getFields() 3680 .map(function (c) { 3681 return this.validateField(c, true); 3682 }, this) 3683 .every(function (c) { 3684 return c; 3685 }); 3686 this.fireEvent("formValidate", [a, this.ElementCust, b]); 3687 if (this.options.stopOnFailure && !a && b) { 3688 b.preventDefault(); 3689 } 3690 return a; 3691 }, 3692 validateField: function (j, b) { 3693 if (this.paused) { 3694 return true; 3695 } 3696 j = document.id(j);
3697 var f = !j.hasClass("validation-failed"); 3698 var g, i; 3699 if (this.options.serial && !b) { 3700 g = this.ElementCust.getElement(".validation-failed"); 3701 i = this.ElementCust.getElement(".warning"); 3702 } 3703 if ( 3704 j && 3705 (!g || 3706 b || 3707 j.hasClass("validation-failed") || 3708 (g && !this.options.serial)) 3709 ) { 3710 var a = j.get("validators"); 3711 var d = a.some(function (k) { 3712 return this.getValidator(k); 3713 }, this); 3714 var h = []; 3715 a.each(function (k) { 3716 if (k && !this.test(k, j)) { 3717 h.include(k); 3718 } 3719 }, this); 3720 f = h.length === 0; 3721 if (d && !this.hasValidator(j, "warnOnly")) { 3722 if (f) { 3723 j.addClass("validation-passed").removeClass("validation-failed"); 3724 this.fireEvent("elementPass", [j]); 3725 } else { 3726 j.addClass("validation-failed").removeClass("validation-passed"); 3727 this.fireEvent("elementFail", [j, h]); 3728 } 3729 } 3730 if (!i) { 3731 var e = a.some(function (k) { 3732 if (k.test("^warn")) { 3733 return this.getValidator(k.replace(/^warn-/, "")); 3734 } else { 3735 return null; 3736 } 3737 }, this); 3738 j.removeClass("warning"); 3739 var c = a.map(function (k) { 3740 if (k.test("^warn")) { 3741 return this.test(k.replace(/^warn-/, ""), j, true); 3742 } else { 3743 return null; 3744 } 3745 }, this); 3746 } 3747 } 3748 return f; 3749 }, 3750 test: function (b, d, e) { 3751 d = document.id(d); 3752 if ( 3753 (this.options.ignoreHidden && !d.isVisible()) || 3754 (this.options.ignoreDisabled && d.get("disabled")) 3755 ) { 3756 return true; 3757 } 3758 var a = this.getValidator(b); 3759 if (e != null) { 3760 e = false; 3761 } 3762 if (this.hasValidator(d, "warnOnly")) { 3763 e = true; 3764 } 3765 var c = this.hasValidator(d, "ignoreValidation") || (a ? a.test(d) : true); 3766 if (a && d.isVisible()) { 3767 this.fireEvent("elementValidate", [c, d, b, e]); 3768 } 3769 if (e) { 3770 return true; 3771 } 3772 return c; 3773 }, 3774 hasValidator: function (b, a) { 3775 return b.get("validators").contains(a); 3776 }, 3777 resetField: function (a) { 3778 a = document.id(a); 3779 if (a) { 3780 a.get("validators").each(function (b) { 3781 if (b.test("^warn-")) { 3782 b = b.replace(/^warn-/, ""); 3783 } 3784 a.removeClass("validation-failed"); 3785 a.removeClass("warning"); 3786 a.removeClass("validation-passed"); 3787 }, this); 3788 } 3789 return this; 3790 }, 3791 stop: function () { 3792 this.paused = true; 3793 return this; 3794 }, 3795 start: function () { 3796 this.paused = false; 3797 return this; 3798 }, 3799 ignoreField: function (a, b) { 3800 a = document.id(a); 3801 if (a) { 3802 this.enforceField(a); 3803 if (b) { 3804 a.addClass("warnOnly"); 3805 } else { 3806 a.addClass("ignoreValidation"); 3807 } 3808 } 3809 return this; 3810 }, 3811 enforceField: function (a) { 3812 a = document.id(a); 3813 if (a) { 3814 a.removeClass("warnOnly").removeClass("ignoreValidation"); 3815 } 3816 return this; 3817 }, 3818}); 3819Form.Validator.getMsg = function (a) { 3820 return Locale.get("FormValidator." + a); 3821}; 3822Form.Validator.adders = { 3823 validators: {}, 3824 add: function (b, a) { 3825 this.validators[b] = new InputValidator(b, a); 3826 if (!this.initialize) { 3827 this.implement({ validators: this.validators }); 3828 } 3829 }, 3830 addAllThese: function (a) { 3831 Array.from(a).each(function (b) { 3832 this.add(b[0], b[1]); 3833 }, this); 3834 }, 3835 getValidator: function (a) { 3836 return this.validators[a.split(":")[0]]; 3837 }, 3838}; 3839Object.append(Form.Validator, Form.Validator.adders); 3840Form.Validator.implement(Form.Validator.adders); 3841Form.Validator.add("IsEmpty", { 3842 errorMsg: false, 3843 test: function (a) { 3844 if (a.type == "select-one" || a.type == "select") { 3845 return !(a.selectedIndex >= 0 && a.options[a.selectedIndex].value != ""); 3846 } else { 3847 return a.get("value") == null || a.get("value").length == 0; 3848 } 3849 }, 3850}); 3851Form.Validator.addAllThese([ 3852 [ 3853 "required", 3854 { 3855 errorMsg: function () { 3856 return Form.Validator.getMsg("required"); 3857 }, 3858 test: function (a) { 3859 return !Form.Validator.getValidator("IsEmpty").test(a); 3860 }, 3861 }, 3862 ], 3863 [ 3864 "length", 3865 { 3866 errorMsg: function (a, b) { 3867 if (typeOf(b.length) != "null") { 3868 return Form.Validator.getMsg("length").substitute({ 3869 length: b.length, 3870 elLength: a.get("value").length, 3871 }); 3872 } else { 3873 return ""; 3874 } 3875 }, 3876 test: function (a, b) { 3877 if (typeOf(b.length) != "null") { 3878 return ( 3879 a.get("value").length == b.length || a.get("value").length == 0 3880 ); 3881 } else { 3882 return true; 3883 } 3884 }, 3885 }, 3886 ], 3887 [ 3888 "minLength", 3889 { 3890 errorMsg: function (a, b) { 3891 if (typeOf(b.minLength) != "null") { 3892 return Form.Validator.getMsg("minLength").substitute({ 3893 minLength: b.minLength, 3894 length: a.get("value").length, 3895 }); 3896 } else { 3897 return ""; 3898 } 3899 }, 3900 test: function (a, b) { 3901 if (typeOf(b.minLength) != "null") { 3902 return a.get("value").length >= (b.minLength || 0); 3903 } else { 3904 return true; 3905 } 3906 }, 3907 }, 3908 ], 3909 [ 3910 "maxLength", 3911 { 3912 errorMsg: function (a, b) { 3913 if (typeOf(b.maxLength) != "null") { 3914 return Form.Validator.getMsg("maxLength").substitute({ 3915 maxLength: b.maxLength,
3916 length: a.get("value").length, 3917 }); 3918 } else { 3919 return ""; 3920 } 3921 }, 3922 test: function (a, b) { 3923 return a.get("value").length <= (b.maxLength || 10000); 3924 }, 3925 }, 3926 ], 3927 [ 3928 "validate-integer", 3929 { 3930 errorMsg: Form.Validator.getMsg.pass("integer"), 3931 test: function (a) { 3932 return ( 3933 Form.Validator.getValidator("IsEmpty").test(a) || 3934 /^(-?[1-9]\d*|0)$/.test(a.get("value")) 3935 ); 3936 }, 3937 }, 3938 ], 3939 [ 3940 "validate-numeric", 3941 { 3942 errorMsg: Form.Validator.getMsg.pass("numeric"), 3943 test: function (a) { 3944 return ( 3945 Form.Validator.getValidator("IsEmpty").test(a) || 3946 /^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/.test(a.get("value")) 3947 ); 3948 }, 3949 }, 3950 ], 3951 [ 3952 "validate-digits", 3953 { 3954 errorMsg: Form.Validator.getMsg.pass("digits"), 3955 test: function (a) { 3956 return ( 3957 Form.Validator.getValidator("IsEmpty").test(a) || 3958 /^[\d() .:\-\+#]+$/.test(a.get("value")) 3959 ); 3960 }, 3961 }, 3962 ], 3963 [ 3964 "validate-alpha", 3965 { 3966 errorMsg: Form.Validator.getMsg.pass("alpha"), 3967 test: function (a) { 3968 return ( 3969 Form.Validator.getValidator("IsEmpty").test(a) || 3970 /^[a-zA-Z]+$/.test(a.get("value")) 3971 ); 3972 }, 3973 }, 3974 ], 3975 [ 3976 "validate-alphanum", 3977 { 3978 errorMsg: Form.Validator.getMsg.pass("alphanum"), 3979 test: function (a) { 3980 return ( 3981 Form.Validator.getValidator("IsEmpty").test(a) || 3982 !/\W/.test(a.get("value")) 3983 ); 3984 }, 3985 }, 3986 ], 3987 [ 3988 "validate-date", 3989 { 3990 errorMsg: function (a, b) { 3991 if (Date.parse) { 3992 var c = b.dateFormat || "%x"; 3993 return Form.Validator.getMsg("dateSuchAs").substitute({ 3994 date: new Date().format(c), 3995 }); 3996 } else { 3997 return Form.Validator.getMsg("dateInFormatMDY"); 3998 } 3999 }, 4000 test: function (e, g) { 4001 if (Form.Validator.getValidator("IsEmpty").test(e)) { 4002 return true; 4003 } 4004 var a = Locale.getCurrent().sets.Date, 4005 b = new RegExp( 4006 [a.days, a.days_abbr, a.months, a.months_abbr].flatten().join("|"), 4007 "i" 4008 ), 4009 i = e.get("value"), 4010 f = i.match(/[a-z]+/gi); 4011 if (f && !f.every(b.exec, b)) { 4012 return false; 4013 } 4014 var c = Date.parse(i), 4015 h = g.dateFormat || "%x", 4016 d = c.format(h); 4017 if (d != "invalid date") { 4018 e.set("value", d); 4019 } 4020 return c.isValid(); 4021 }, 4022 }, 4023 ], 4024 [ 4025 "validate-email", 4026 { 4027 errorMsg: Form.Validator.getMsg.pass("email"), 4028 test: function (a) { 4029 return ( 4030 Form.Validator.getValidator("IsEmpty").test(a) || 4031 /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i.test( 4032 a.get("value") 4033 ) 4034 ); 4035 }, 4036 }, 4037 ], 4038 [ 4039 "validate-url", 4040 { 4041 errorMsg: Form.Validator.getMsg.pass("url"), 4042 test: function (a) { 4043 return ( 4044 Form.Validator.getValidator("IsEmpty").test(a) || 4045 /^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test( 4046 a.get("value") 4047 ) 4048 ); 4049 }, 4050 }, 4051 ], 4052 [ 4053 "validate-currency-dollar", 4054 { 4055 errorMsg: Form.Validator.getMsg.pass("currencyDollar"), 4056 test: function (a) { 4057 return ( 4058 Form.Validator.getValidator("IsEmpty").test(a) || 4059 /^\$?\-?([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( 4060 a.get("value") 4061 ) 4062 ); 4063 }, 4064 }, 4065 ], 4066 [ 4067 "validate-one-required", 4068 { 4069 errorMsg: Form.Validator.getMsg.pass("oneRequired"), 4070 test: function (a, b) { 4071 var c = 4072 document.id(b["validate-one-required"]) || 4073 a.getParent(b["validate-one-required"]); 4074 return c.getElements("input").some(function (d) { 4075 if (["checkbox", "radio"].contains(d.get("type"))) { 4076 return d.get("checked"); 4077 } 4078 return d.get("value"); 4079 }); 4080 }, 4081 }, 4082 ], 4083]); 4084ElementCust.Properties.validator = { 4085 set: function (a) { 4086 this.get("validator").setOptions(a); 4087 }, 4088 get: function () { 4089 var a = this.retrieve("validator"); 4090 if (!a) { 4091 a = new Form.Validator(this); 4092 this.store("validator", a); 4093 } 4094 return a; 4095 }, 4096}; 4097ElementCust.implement({ 4098 validate: function (a) { 4099 if (a) { 4100 this.set("validator", a); 4101 } 4102 return this.get("validator").validate(); 4103 }, 4104}); 4105Form.Validator.Inline = new Class({ 4106 Extends: Form.Validator, 4107 options: { 4108 showError: function (a) { 4109 if (a.reveal) { 4110 a.reveal(); 4111 } else { 4112 a.setStyle("display", "block"); 4113 } 4114 }, 4115 hideError: function (a) { 4116 if (a.dissolve) {
4117 a.dissolve(); 4118 } else { 4119 a.setStyle("display", "none"); 4120 } 4121 }, 4122 scrollToErrorsOnSubmit: true, 4123 scrollToErrorsOnBlur: false, 4124 scrollToErrorsOnChange: false, 4125 scrollFxOptions: { transition: "quad:out", offset: { y: -20 } }, 4126 }, 4127 initialize: function (b, a) { 4128 this.parent(b, a); 4129 this.addEvent("onElementValidate", function (g, f, e, h) { 4130 var d = this.getValidator(e); 4131 if (!g && d.getError(f)) { 4132 if (h) { 4133 f.addClass("warning"); 4134 } 4135 var c = this.makeAdvice(e, f, d.getError(f), h); 4136 this.insertAdvice(c, f); 4137 this.showAdvice(e, f); 4138 } else { 4139 this.hideAdvice(e, f); 4140 } 4141 }); 4142 }, 4143 makeAdvice: function (d, f, c, g) { 4144 var e = g ? this.warningPrefix : this.errorPrefix; 4145 e += this.options.useTitles ? f.title || c : c; 4146 var a = g ? "warning-advice" : "validation-advice"; 4147 var b = this.getAdvice(d, f); 4148 if (b) { 4149 b = b.set("html", e); 4150 } else { 4151 b = new ElementCust("div", { 4152 html: e, 4153 styles: { display: "none" }, 4154 id: "advice-" + d.split(":")[0] + "-" + this.getFieldId(f), 4155 }).addClass(a); 4156 } 4157 f.store("$moo:advice-" + d, b); 4158 return b; 4159 }, 4160 getFieldId: function (a) { 4161 return a.id ? a.id : (a.id = "input_" + a.name); 4162 }, 4163 showAdvice: function (b, c) { 4164 var a = this.getAdvice(b, c); 4165 if ( 4166 a && 4167 !c.retrieve("$moo:" + this.getPropName(b)) && 4168 (a.getStyle("display") == "none" || 4169 a.getStyle("visiblity") == "hidden" || 4170 a.getStyle("opacity") == 0) 4171 ) { 4172 c.store("$moo:" + this.getPropName(b), true); 4173 this.options.showError(a); 4174 this.fireEvent("showAdvice", [c, a, b]); 4175 } 4176 }, 4177 hideAdvice: function (b, c) { 4178 var a = this.getAdvice(b, c); 4179 if (a && c.retrieve("$moo:" + this.getPropName(b))) { 4180 c.store("$moo:" + this.getPropName(b), false); 4181 this.options.hideError(a); 4182 this.fireEvent("hideAdvice", [c, a, b]); 4183 } 4184 }, 4185 getPropName: function (a) { 4186 return "advice" + a; 4187 }, 4188 resetField: function (a) { 4189 a = document.id(a); 4190 if (!a) { 4191 return this; 4192 } 4193 this.parent(a); 4194 a.get("validators").each(function (b) { 4195 this.hideAdvice(b, a); 4196 }, this); 4197 return this; 4198 }, 4199 getAllAdviceMessages: function (d, c) { 4200 var b = []; 4201 if (d.hasClass("ignoreValidation") && !c) { 4202 return b; 4203 } 4204 var a = d.get("validators").some(function (g) { 4205 var e = g.test("^warn-") || d.hasClass("warnOnly"); 4206 if (e) { 4207 g = g.replace(/^warn-/, ""); 4208 } 4209 var f = this.getValidator(g); 4210 if (!f) { 4211 return; 4212 } 4213 b.push({ 4214 message: f.getError(d), 4215 warnOnly: e, 4216 passed: f.test(), 4217 validator: f, 4218 }); 4219 }, this); 4220 return b; 4221 }, 4222 getAdvice: function (a, b) { 4223 return b.retrieve("$moo:advice-" + a); 4224 }, 4225 insertAdvice: function (a, c) { 4226 var b = c.get("validatorProps"); 4227 if (!b.msgPos || !document.id(b.msgPos)) { 4228 if (c.type && c.type.toLowerCase() == "radio") { 4229 c.getParent().adopt(a); 4230 } else { 4231 a.inject(document.id(c), "after"); 4232 } 4233 } else { 4234 document.id(b.msgPos).grab(a); 4235 } 4236 }, 4237 validateField: function (g, f, b) { 4238 var a = this.parent(g, f); 4239 if (((this.options.scrollToErrorsOnSubmit && b == null) || b) && !a) { 4240 var c = document.id(this).getElement(".validation-failed"); 4241 var d = document.id(this).getParent(); 4242 while (d != document.body && d.getScrollSize().y == d.getSize().y) { 4243 d = d.getParent(); 4244 } 4245 var e = d.retrieve("$moo:fvScroller"); 4246 if (!e && window.Fx && Fx.Scroll) { 4247 e = new Fx.Scroll(d, this.options.scrollFxOptions); 4248 d.store("$moo:fvScroller", e); 4249 } 4250 if (c) { 4251 if (e) { 4252 e.toElement(c); 4253 } else { 4254 d.scrollTo(d.getScroll().x, c.getPosition(d).y - 20); 4255 } 4256 } 4257 } 4258 return a; 4259 }, 4260 watchFields: function (a) { 4261 a.each(function (b) { 4262 if (this.options.evaluateFieldsOnBlur) { 4263 b.addEvent( 4264 "blur", 4265 this.validationMonitor.pass( 4266 [b, false, this.options.scrollToErrorsOnBlur], 4267 this 4268 ) 4269 ); 4270 } 4271 if (this.options.evaluateFieldsOnChange) { 4272 b.addEvent( 4273 "change", 4274 this.validationMonitor.pass( 4275 [b, true, this.options.scrollToErrorsOnChange], 4276 this 4277 ) 4278 ); 4279 } 4280 }, this); 4281 }, 4282}); 4283Form.Validator.addAllThese([ 4284 [ 4285 "validate-enforce-oncheck", 4286 { 4287 test: function (a, b) { 4288 var c = a.getParent("form").retrieve("validator"); 4289 if (!c) { 4290 return true; 4291 } 4292 ( 4293 b.toEnforce || 4294 document 4295 .id(b.enforceChildrenOf) 4296 .getElements("input, select, textarea") 4297 ).map(function (d) { 4298 if (a.checked) { 4299 c.enforceField(d); 4300 } else { 4301 c.ignoreField(d); 4302 c.resetField(d); 4303 } 4304 }); 4305 return true; 4306 }, 4307 }, 4308 ], 4309 [ 4310 "validate-ignore-oncheck", 4311 { 4312 test: function (a, b) { 4313 var c = a.getParent("form").retrieve("validator"); 4314 if (!c) { 4315 return true; 4316 } 4317 ( 4318 b.toIgnore || 4319 document.id(b.ignoreChildrenOf).getElements("input, select, textarea") 4320 ).each(function (d) { 4321 if (a.checked) { 4322 c.ignoreField(d); 4323 c.resetField(d); 4324 } else { 4325 c.enforceField(d); 4326 } 4327 }); 4328 return true; 4329 }, 4330 }, 4331 ], 4332 [ 4333 "validate-nospace", 4334 { 4335 errorMsg: function () { 4336 return Form.Validator.getMsg("noSpace"); 4337 }, 4338 test: function (a, b) { 4339 return !a.get("value").test(/\s/); 4340 }, 4341 }, 4342 ], 4343 [ 4344 "validate-toggle-oncheck", 4345 { 4346 test: function (b, c) { 4347 var d = b.getParent("form").retrieve("validator"); 4348 if (!d) { 4349 return true; 4350 } 4351 var a = 4352 c.toToggle || 4353 document 4354 .id(c.toToggleChildrenOf) 4355 .getElements("input, select, textarea"); 4356 if (!b.checked) { 4357 a.each(function (e) { 4358 d.ignoreField(e); 4359 d.resetField(e); 4360 }); 4361 } else { 4362 a.each(function (e) { 4363 d.enforceField(e); 4364 }); 4365 } 4366 return true; 4367 }, 4368 }, 4369 ], 4370 [ 4371 "validate-reqchk-bynode", 4372 { 4373 errorMsg: function () { 4374 return Form.Validator.getMsg("reqChkByNode"); 4375 }, 4376 test: function (a, b) { 4377 return document 4378 .id(b.nodeId) 4379 .getElements(b.selector || "input[type=checkbox], input[type=radio]") 4380 .some(function (c) { 4381 return c.checked; 4382 }); 4383 }, 4384 }, 4385 ], 4386 [ 4387 "validate-required-check", 4388 { 4389 errorMsg: function (a, b) { 4390 return b.useTitle 4391 ? a.get("title") 4392 : Form.Validator.getMsg("requiredChk"); 4393 }, 4394 test: function (a, b) { 4395 return !!a.checked; 4396 }, 4397 }, 4398 ], 4399 [ 4400 "validate-reqchk-byname", 4401 { 4402 errorMsg: function (a, b) { 4403 return Form.Validator.getMsg("reqChkByName").substitute({ 4404 label: b.label || a.get("type"), 4405 }); 4406 }, 4407 test: function (b, d) { 4408 var c = d.groupName || b.get("name"); 4409 var a = $$(document.getElementsByName(c)).some(function (g, f) { 4410 return g.checked; 4411 }); 4412 var e = b.getParent("form").retrieve("validator"); 4413 if (a && e) { 4414 e.resetField(b); 4415 } 4416 return a; 4417 }, 4418 }, 4419 ], 4420 [ 4421 "validate-match", 4422 { 4423 errorMsg: function (a, b) { 4424 return Form.Validator.getMsg("match").substitute({ 4425 matchName: b.matchName || document.id(b.matchInput).get("name"), 4426 }); 4427 }, 4428 test: function (b, c) { 4429 var d = b.get("value"); 4430 var a = 4431 document.id(c.matchInput) && document.id(c.matchInput).get("value"); 4432 return d && a ? d == a : true; 4433 }, 4434 }, 4435 ], 4436 [ 4437 "validate-after-date", 4438 { 4439 errorMsg: function (a, b) { 4440 return Form.Validator.getMsg("afterDate").substitute({ 4441 label: 4442 b.afterLabel || 4443 (b.afterElement 4444 ? Form.Validator.getMsg("startDate") 4445 : Form.Validator.getMsg("currentDate")), 4446 }); 4447 }, 4448 test: function (b, c) { 4449 var d = document.id(c.afterElement) 4450 ? Date.parse(document.id(c.afterElement).get("value")) 4451 : new Date(); 4452 var a = Date.parse(b.get("value")); 4453 return a && d ? a >= d : true; 4454 }, 4455 }, 4456 ], 4457 [
4458 "validate-before-date", 4459 { 4460 errorMsg: function (a, b) { 4461 return Form.Validator.getMsg("beforeDate").substitute({ 4462 label: 4463 b.beforeLabel || 4464 (b.beforeElement 4465 ? Form.Validator.getMsg("endDate") 4466 : Form.Validator.getMsg("currentDate")), 4467 }); 4468 }, 4469 test: function (b, c) { 4470 var d = Date.parse(b.get("value")); 4471 var a = document.id(c.beforeElement) 4472 ? Date.parse(document.id(c.beforeElement).get("value")) 4473 : new Date(); 4474 return a && d ? a >= d : true; 4475 }, 4476 }, 4477 ], 4478 [ 4479 "validate-custom-required", 4480 { 4481 errorMsg: function () { 4482 return Form.Validator.getMsg("required"); 4483 }, 4484 test: function (a, b) { 4485 return a.get("value") != b.emptyValue; 4486 }, 4487 }, 4488 ], 4489 [ 4490 "validate-same-month", 4491 { 4492 errorMsg: function (a, b) { 4493 var c = 4494 document.id(b.sameMonthAs) && document.id(b.sameMonthAs).get("value"); 4495 var d = a.get("value"); 4496 if (d != "") { 4497 return Form.Validator.getMsg(c ? "sameMonth" : "startMonth"); 4498 } 4499 }, 4500 test: function (a, b) { 4501 var d = Date.parse(a.get("value")); 4502 var c = Date.parse( 4503 document.id(b.sameMonthAs) && document.id(b.sameMonthAs).get("value") 4504 ); 4505 return d && c ? d.format("%B") == c.format("%B") : true; 4506 }, 4507 }, 4508 ], 4509 [ 4510 "validate-cc-num", 4511 { 4512 errorMsg: function (a) { 4513 var b = a.get("value").replace(/[^0-9]/g, ""); 4514 return Form.Validator.getMsg("creditcard").substitute({ 4515 length: b.length, 4516 }); 4517 }, 4518 test: function (c) { 4519 if (Form.Validator.getValidator("IsEmpty").test(c)) { 4520 return true; 4521 } 4522 var g = c.get("value"); 4523 g = g.replace(/[^0-9]/g, ""); 4524 var a = false; 4525 if (g.test(/^4[0-9]{12}([0-9]{3})?$/)) { 4526 a = "Visa"; 4527 } else { 4528 if (g.test(/^5[1-5]([0-9]{14})$/)) { 4529 a = "Master Card"; 4530 } else { 4531 if (g.test(/^3[47][0-9]{13}$/)) { 4532 a = "American Express"; 4533 } else { 4534 if (g.test(/^6011[0-9]{12}$/)) { 4535 a = "Discover"; 4536 } 4537 } 4538 } 4539 } 4540 if (a) { 4541 var d = 0; 4542 var e = 0; 4543 for (var b = g.length - 1; b >= 0; --b) { 4544 e = g.charAt(b).toInt(); 4545 if (e == 0) { 4546 continue; 4547 } 4548 if ((g.length - b) % 2 == 0) { 4549 e += e; 4550 } 4551 if (e > 9) { 4552 e = 4553 e.toString().charAt(0).toInt() + e.toString().charAt(1).toInt(); 4554 } 4555 d += e; 4556 } 4557 if (d % 10 == 0) { 4558 return true; 4559 } 4560 } 4561 var f = ""; 4562 while (g != "") { 4563 f += " " + g.substr(0, 4); 4564 g = g.substr(4); 4565 } 4566 c.getParent("form").retrieve("validator").ignoreField(c); 4567 c.set("value", f.clean()); 4568 c.getParent("form").retrieve("validator").enforceField(c); 4569 return false; 4570 }, 4571 }, 4572 ], 4573]); 4574var OverText = new Class({ 4575 Implements: [Options, Events, Class.Occlude], 4576 Binds: ["reposition", "assert", "focus", "hide"], 4577 options: { 4578 ElementCust: "label", 4579 labelClass: "overTxtLabel", 4580 positionOptions: { 4581 position: "upperLeft", 4582 edge: "upperLeft", 4583 offset: { x: 4, y: 2 }, 4584 }, 4585 poll: false, 4586 pollInterval: 250, 4587 wrap: false, 4588 }, 4589 property: "OverText", 4590 initialize: function (b, a) { 4591 b = this.ElementCust = document.id(b); 4592 if (this.occlude()) { 4593 return this.occluded; 4594 } 4595 this.setOptions(a); 4596 this.attach(b); 4597 OverText.instances.push(this); 4598 if (this.options.poll) { 4599 this.poll(); 4600 } 4601 }, 4602 toElement: function () { 4603 return this.ElementCust; 4604 }, 4605 attach: function () { 4606 var b = this.ElementCust, 4607 a = this.options, 4608 c = a.textOverride || b.get("alt") || b.get("title"); 4609 if (!c) { 4610 return this; 4611 } 4612 var d = (this.text = new ElementCust(a.ElementCust, { 4613 class: a.labelClass, 4614 styles: { lineHeight: "normal", position: "absolute", cursor: "text" }, 4615 html: c, 4616 events: { click: this.hide.pass(a.ElementCust == "label", this) }, 4617 }).inject(b, "after")); 4618 if (a.ElementCust == "label") { 4619 if (!b.get("id")) { 4620 b.set("id", "input_" + String.uniqueID()); 4621 } 4622 d.set("for", b.get("id")); 4623 } 4624 if (a.wrap) { 4625 this.textHolder = new ElementCust("div.overTxtWrapper", { 4626 styles: { lineHeight: "normal", position: "relative" }, 4627 }) 4628 .grab(d) 4629 .inject(b, "before"); 4630 } 4631 return this.enable(); 4632 }, 4633 destroy: function () { 4634 this.ElementCust.eliminate(this.property); 4635 this.disable(); 4636 if (this.text) { 4637 this.text.destroy(); 4638 } 4639 if (this.textHolder) { 4640 this.textHolder.destroy(); 4641 } 4642 return this; 4643 }, 4644 disable: function () { 4645 this.ElementCust.removeEvents({ 4646 focus: this.focus, 4647 blur: this.assert, 4648 change: this.assert, 4649 }); 4650 window.removeEvent("resize", this.reposition); 4651 this.hide(true, true); 4652 return this; 4653 }, 4654 enable: function () { 4655 this.ElementCust.addEvents({ 4656 focus: this.focus, 4657 blur: this.assert, 4658 change: this.assert, 4659 }); 4660 window.addEvent("resize", this.reposition); 4661 this.reposition(); 4662 return this; 4663 }, 4664 wrap: function () { 4665 if (this.options.ElementCust == "label") { 4666 if (!this.ElementCust.get("id")) { 4667 this.ElementCust.set("id", "input_" + String.uniqueID()); 4668 } 4669 this.text.set("for", this.ElementCust.get("id")); 4670 } 4671 }, 4672 startPolling: function () { 4673 this.pollingPaused = false;
4674 return this.poll(); 4675 }, 4676 poll: function (a) { 4677 if (this.poller && !a) { 4678 return this; 4679 } 4680 if (a) { 4681 clearInterval(this.poller); 4682 } else { 4683 this.poller = function () { 4684 if (!this.pollingPaused) { 4685 this.assert(true); 4686 } 4687 }.periodical(this.options.pollInterval, this); 4688 } 4689 return this; 4690 }, 4691 stopPolling: function () { 4692 this.pollingPaused = true; 4693 return this.poll(true); 4694 }, 4695 focus: function () { 4696 if ( 4697 this.text && 4698 (!this.text.isDisplayed() || this.ElementCust.get("disabled")) 4699 ) { 4700 return this; 4701 } 4702 return this.hide(); 4703 }, 4704 hide: function (c, a) { 4705 if ( 4706 this.text && 4707 this.text.isDisplayed() && 4708 (!this.ElementCust.get("disabled") || a) 4709 ) { 4710 this.text.hide(); 4711 this.fireEvent("textHide", [this.text, this.ElementCust]); 4712 this.pollingPaused = true; 4713 if (!c) { 4714 try { 4715 this.ElementCust.fireEvent("focus"); 4716 this.ElementCust.focus(); 4717 } catch (b) {} 4718 } 4719 } 4720 return this; 4721 }, 4722 show: function () { 4723 if (this.text && !this.text.isDisplayed()) { 4724 this.text.show(); 4725 this.reposition(); 4726 this.fireEvent("textShow", [this.text, this.ElementCust]); 4727 this.pollingPaused = false; 4728 } 4729 return this; 4730 }, 4731 test: function () { 4732 return !this.ElementCust.get("value"); 4733 }, 4734 assert: function (a) { 4735 return this[this.test() ? "show" : "hide"](a); 4736 }, 4737 reposition: function () { 4738 this.assert(true); 4739 if (!this.ElementCust.isVisible()) { 4740 return this.stopPolling().hide(); 4741 } 4742 if (this.text && this.test()) { 4743 this.text.position( 4744 Object.merge(this.options.positionOptions, { relativeTo: this.ElementCust }) 4745 ); 4746 } 4747 return this; 4748 }, 4749}); 4750OverText.instances = []; 4751Object.append(OverText, { 4752 each: function (a) { 4753 return OverText.instances.each(function (c, b) { 4754 if (c.ElementCust && c.text) { 4755 a.call(OverText, c, b); 4756 } 4757 }); 4758 }, 4759 update: function () { 4760 return OverText.each(function (a) { 4761 return a.reposition(); 4762 }); 4763 }, 4764 hideAll: function () { 4765 return OverText.each(function (a) { 4766 return a.hide(true, true); 4767 }); 4768 }, 4769 showAll: function () { 4770 return OverText.each(function (a) { 4771 return a.show(); 4772 }); 4773 }, 4774}); 4775Fx.Elements = new Class({ 4776 Extends: Fx.CSS, 4777 initialize: function (b, a) { 4778 this.elements = this.subject = $$(b); 4779 this.parent(a); 4780 }, 4781 compute: function (g, h, j) { 4782 var c = {}; 4783 for (var d in g) { 4784 var a = g[d], 4785 e = h[d], 4786 f = (c[d] = {}); 4787 for (var b in a) { 4788 f[b] = this.parent(a[b], e[b], j); 4789 } 4790 } 4791 return c; 4792 }, 4793 set: function (b) { 4794 for (var c in b) { 4795 if (!this.elements[c]) { 4796 continue; 4797 } 4798 var a = b[c]; 4799 for (var d in a) { 4800 this.render(this.elements[c], d, a[d], this.options.unit); 4801 } 4802 } 4803 return this; 4804 }, 4805 start: function (c) { 4806 if (!this.check(c)) { 4807 return this; 4808 } 4809 var h = {}, 4810 j = {}; 4811 for (var d in c) { 4812 if (!this.elements[d]) { 4813 continue; 4814 } 4815 var f = c[d], 4816 a = (h[d] = {}), 4817 g = (j[d] = {}); 4818 for (var b in f) { 4819 var e = this.prepare(this.elements[d], b, f[b]); 4820 a[b] = e.from; 4821 g[b] = e.to; 4822 } 4823 } 4824 return this.parent(h, j); 4825 }, 4826}); 4827Fx.Accordion = new Class({ 4828 Extends: Fx.Elements, 4829 options: { 4830 fixedHeight: false, 4831 fixedWidth: false, 4832 display: 0, 4833 show: false, 4834 height: true, 4835 width: false, 4836 opacity: true, 4837 alwaysHide: false, 4838 trigger: "click", 4839 initialDisplayFx: true, 4840 resetHeight: true, 4841 }, 4842 initialize: function () { 4843 var g = function (h) { 4844 return h != null; 4845 }; 4846 var f = Array.link(arguments, { 4847 container: Type.isElement, 4848 options: Type.isObject, 4849 togglers: g, 4850 elements: g, 4851 }); 4852 this.parent(f.elements, f.options); 4853 var b = this.options, 4854 e = (this.togglers = $$(f.togglers)); 4855 this.previous = -1; 4856 this.internalChain = new Chain(); 4857 if (b.alwaysHide) { 4858 this.options.link = "chain"; 4859 } 4860 if (b.show || this.options.show === 0) { 4861 b.display = false;
4862 this.previous = b.show; 4863 } 4864 if (b.start) { 4865 b.display = false; 4866 b.show = false; 4867 } 4868 var d = (this.effects = {}); 4869 if (b.opacity) { 4870 d.opacity = "fullOpacity"; 4871 } 4872 if (b.width) { 4873 d.width = b.fixedWidth ? "fullWidth" : "offsetWidth"; 4874 } 4875 if (b.height) { 4876 d.height = b.fixedHeight ? "fullHeight" : "scrollHeight"; 4877 } 4878 for (var c = 0, a = e.length; c < a; c++) { 4879 this.addSection(e[c], this.elements[c]); 4880 } 4881 this.elements.each(function (j, h) { 4882 if (b.show === h) { 4883 this.fireEvent("active", [e[h], j]); 4884 } else { 4885 for (var k in d) { 4886 j.setStyle(k, 0); 4887 } 4888 } 4889 }, this); 4890 if (b.display || b.display === 0 || b.initialDisplayFx === false) { 4891 this.display(b.display, b.initialDisplayFx); 4892 } 4893 if (b.fixedHeight !== false) { 4894 b.resetHeight = false; 4895 } 4896 this.addEvent( 4897 "complete", 4898 this.internalChain.callChain.bind(this.internalChain) 4899 ); 4900 }, 4901 addSection: function (g, d) { 4902 g = document.id(g); 4903 d = document.id(d); 4904 this.togglers.include(g); 4905 this.elements.include(d); 4906 var f = this.togglers, 4907 c = this.options, 4908 h = f.contains(g), 4909 a = f.indexOf(g), 4910 b = this.display.pass(a, this); 4911 g.store("accordion:display", b).addEvent(c.trigger, b); 4912 if (c.height) { 4913 d.setStyles({ 4914 "padding-top": 0, 4915 "border-top": "none", 4916 "padding-bottom": 0, 4917 "border-bottom": "none", 4918 }); 4919 } 4920 if (c.width) { 4921 d.setStyles({ 4922 "padding-left": 0, 4923 "border-left": "none", 4924 "padding-right": 0, 4925 "border-right": "none", 4926 }); 4927 } 4928 d.fullOpacity = 1; 4929 if (c.fixedWidth) { 4930 d.fullWidth = c.fixedWidth; 4931 } 4932 if (c.fixedHeight) { 4933 d.fullHeight = c.fixedHeight; 4934 } 4935 d.setStyle("overflow", "hidden"); 4936 if (!h) { 4937 for (var e in this.effects) { 4938 d.setStyle(e, 0); 4939 } 4940 } 4941 return this; 4942 }, 4943 removeSection: function (f, b) { 4944 var e = this.togglers, 4945 a = e.indexOf(f), 4946 c = this.elements[a]; 4947 var d = function () { 4948 e.erase(f); 4949 this.elements.erase(c); 4950 this.detach(f); 4951 }.bind(this); 4952 if (this.now == a || b != null) { 4953 this.display(b != null ? b : a - 1 >= 0 ? a - 1 : 0).chain(d); 4954 } else { 4955 d(); 4956 } 4957 return this; 4958 }, 4959 detach: function (b) { 4960 var a = function (c) { 4961 c.removeEvent(this.options.trigger, c.retrieve("accordion:display")); 4962 }.bind(this); 4963 if (!b) { 4964 this.togglers.each(a); 4965 } else { 4966 a(b); 4967 } 4968 return this; 4969 }, 4970 display: function (b, c) { 4971 if (!this.check(b, c)) { 4972 return this; 4973 } 4974 var h = {}, 4975 g = this.elements, 4976 a = this.options, 4977 f = this.effects; 4978 if (c == null) { 4979 c = true; 4980 } 4981 if (typeOf(b) == "ElementCust") { 4982 b = g.indexOf(b); 4983 } 4984 if (b == this.previous && !a.alwaysHide) { 4985 return this; 4986 } 4987 if (a.resetHeight) { 4988 var e = g[this.previous]; 4989 if (e && !this.selfHidden) { 4990 for (var d in f) { 4991 e.setStyle(d, e[f[d]]); 4992 } 4993 } 4994 } 4995 if ( 4996 (this.timer && a.link == "chain") || 4997 (b === this.previous && !a.alwaysHide) 4998 ) { 4999 return this; 5000 } 5001 this.previous = b; 5002 this.selfHidden = false; 5003 g.each(function (l, k) { 5004 h[k] = {}; 5005 var j; 5006 if (k != b) { 5007 j = true; 5008 } else { 5009 if ( 5010 a.alwaysHide && 5011 ((l.offsetHeight > 0 && a.height) || (l.offsetWidth > 0 && a.width)) 5012 ) { 5013 j = true; 5014 this.selfHidden = true; 5015 } 5016 } 5017 this.fireEvent(j ? "background" : "active", [this.togglers[k], l]); 5018 for (var m in f) { 5019 h[k][m] = j ? 0 : l[f[m]]; 5020 } 5021 if (!c && !j && a.resetHeight) { 5022 h[k].height = "auto"; 5023 } 5024 }, this); 5025 this.internalChain.clearChain(); 5026 this.internalChain.chain( 5027 function () { 5028 if (a.resetHeight && !this.selfHidden) { 5029 var i = g[b]; 5030 if (i) { 5031 i.setStyle("height", "auto"); 5032 } 5033 } 5034 }.bind(this) 5035 );
5036 return c ? this.start(h) : this.set(h).internalChain.callChain(); 5037 }, 5038}); 5039Fx.Move = new Class({ 5040 Extends: Fx.Morph, 5041 options: { 5042 relativeTo: document.body, 5043 position: "center", 5044 edge: false, 5045 offset: { x: 0, y: 0 }, 5046 }, 5047 start: function (a) { 5048 var b = this.ElementCust, 5049 c = b.getStyles("top", "left"); 5050 if (c.top == "auto" || c.left == "auto") { 5051 b.setPosition(b.getPosition(b.getOffsetParent())); 5052 } 5053 return this.parent( 5054 b.position(Object.merge({}, this.options, a, { returnPos: true })) 5055 ); 5056 }, 5057}); 5058ElementCust.Properties.move = { 5059 set: function (a) { 5060 this.get("move").cancel().setOptions(a); 5061 return this; 5062 }, 5063 get: function () { 5064 var a = this.retrieve("move"); 5065 if (!a) { 5066 a = new Fx.Move(this, { link: "cancel" }); 5067 this.store("move", a); 5068 } 5069 return a; 5070 }, 5071}; 5072ElementCust.implement({ 5073 move: function (a) { 5074 this.get("move").start(a); 5075 return this; 5076 }, 5077}); 5078(function () { 5079 Fx.Scroll = new Class({ 5080 Extends: Fx, 5081 options: { offset: { x: 0, y: 0 }, wheelStops: true }, 5082 initialize: function (c, b) { 5083 this.ElementCust = this.subject = document.id(c); 5084 this.parent(b); 5085 if (typeOf(this.ElementCust) != "ElementCust") { 5086 this.ElementCust = document.id(this.ElementCust.getDocument().body); 5087 } 5088 if (this.options.wheelStops) { 5089 var d = this.ElementCust, 5090 e = this.cancel.pass(false, this); 5091 this.addEvent( 5092 "start", 5093 function () { 5094 d.addEvent("mousewheel", e); 5095 }, 5096 true 5097 ); 5098 this.addEvent( 5099 "complete", 5100 function () { 5101 d.removeEvent("mousewheel", e); 5102 }, 5103 true 5104 ); 5105 } 5106 }, 5107 set: function () { 5108 var b = Array.flatten(arguments); 5109 if (Browser.firefox) { 5110 b = [Math.round(b[0]), Math.round(b[1])]; 5111 } 5112 this.ElementCust.scrollTo(b[0], b[1]); 5113 return this; 5114 }, 5115 compute: function (d, c, b) { 5116 return [0, 1].map(function (e) { 5117 return Fx.compute(d[e], c[e], b); 5118 }); 5119 }, 5120 start: function (c, d) { 5121 if (!this.check(c, d)) { 5122 return this; 5123 } 5124 var b = this.ElementCust.getScroll(); 5125 return this.parent([b.x, b.y], [c, d]); 5126 }, 5127 calculateScroll: function (g, f) { 5128 var d = this.ElementCust, 5129 b = d.getScrollSize(), 5130 h = d.getScroll(), 5131 j = d.getSize(), 5132 c = this.options.offset, 5133 i = { x: g, y: f }; 5134 for (var e in i) { 5135 if (!i[e] && i[e] !== 0) { 5136 i[e] = h[e]; 5137 } 5138 if (typeOf(i[e]) != "number") { 5139 i[e] = b[e] - j[e]; 5140 } 5141 i[e] += c[e]; 5142 } 5143 return [i.x, i.y]; 5144 }, 5145 toTop: function () { 5146 return this.start.apply(this, this.calculateScroll(false, 0)); 5147 }, 5148 toLeft: function () { 5149 return this.start.apply(this, this.calculateScroll(0, false)); 5150 }, 5151 toRight: function () { 5152 return this.start.apply(this, this.calculateScroll("right", false)); 5153 }, 5154 toBottom: function () { 5155 return this.start.apply(this, this.calculateScroll(false, "bottom")); 5156 }, 5157 toElement: function (d, e) { 5158 e = e ? Array.from(e) : ["x", "y"]; 5159 var c = a(this.ElementCust) ? { x: 0, y: 0 } : this.ElementCust.getScroll(); 5160 var b = Object.map( 5161 document.id(d).getPosition(this.ElementCust), 5162 function (g, f) { 5163 return e.contains(f) ? g + c[f] : false; 5164 } 5165 ); 5166 return this.start.apply(this, this.calculateScroll(b.x, b.y)); 5167 }, 5168 toElementEdge: function (d, g, e) { 5169 g = g ? Array.from(g) : ["x", "y"]; 5170 d = document.id(d); 5171 var i = {}, 5172 f = d.getPosition(this.ElementCust), 5173 j = d.getSize(), 5174 h = this.ElementCust.getScroll(), 5175 b = this.ElementCust.getSize(), 5176 c = { x: f.x + j.x, y: f.y + j.y }; 5177 ["x", "y"].each(function (k) { 5178 if (g.contains(k)) { 5179 if (c[k] > h[k] + b[k]) { 5180 i[k] = c[k] - b[k]; 5181 } 5182 if (f[k] < h[k]) { 5183 i[k] = f[k]; 5184 } 5185 } 5186 if (i[k] == null) { 5187 i[k] = h[k]; 5188 } 5189 if (e && e[k]) { 5190 i[k] = i[k] + e[k]; 5191 } 5192 }, this); 5193 if (i.x != h.x || i.y != h.y) { 5194 this.start(i.x, i.y); 5195 } 5196 return this; 5197 }, 5198 toElementCenter: function (e, f, h) { 5199 f = f ? Array.from(f) : ["x", "y"]; 5200 e = document.id(e); 5201 var i = {}, 5202 c = e.getPosition(this.ElementCust), 5203 d = e.getSize(), 5204 b = this.ElementCust.getScroll(), 5205 g = this.ElementCust.getSize(); 5206 ["x", "y"].each(function (j) { 5207 if (f.contains(j)) { 5208 i[j] = c[j] - (g[j] - d[j]) / 2; 5209 } 5210 if (i[j] == null) { 5211 i[j] = b[j]; 5212 } 5213 if (h && h[j]) { 5214 i[j] = i[j] + h[j]; 5215 } 5216 }, this); 5217 if (i.x != b.x || i.y != b.y) { 5218 this.start(i.x, i.y); 5219 } 5220 return this; 5221 }, 5222 }); 5223 function a(b) { 5224 return /^(?:body|html)$/i.test(b.tagName); 5225 } 5226})(); 5227Fx.Slide = new Class({ 5228 Extends: Fx, 5229 options: { 5230 mode: "vertical", 5231 wrapper: false, 5232 hideOverflow: true, 5233 resetHeight: false, 5234 }, 5235 initialize: function (b, a) { 5236 b = this.ElementCust = this.subject = document.id(b); 5237 this.parent(a); 5238 a = this.options; 5239 var d = b.retrieve("wrapper"), 5240 c = b.getStyles("margin", "position", "overflow"); 5241 if (a.hideOverflow) { 5242 c = Object.append(c, { overflow: "hidden" }); 5243 } 5244 if (a.wrapper) { 5245 d = document.id(a.wrapper).setStyles(c); 5246 } 5247 if (!d) { 5248 d = new ElementCust("div", { styles: c }).wraps(b); 5249 } 5250 b.store("wrapper", d).setStyle("margin", 0); 5251 if (b.getStyle("overflow") == "visible") { 5252 b.setStyle("overflow", "hidden"); 5253 } 5254 this.now = []; 5255 this.open = true; 5256 this.wrapper = d; 5257 this.addEvent( 5258 "complete", 5259 function () { 5260 this.open = d["offset" + this.layout.capitalize()] != 0; 5261 if (this.open && this.options.resetHeight) { 5262 d.setStyle("height", ""); 5263 } 5264 }, 5265 true 5266 ); 5267 }, 5268 vertical: function () { 5269 this.margin = "margin-top"; 5270 this.layout = "height"; 5271 this.offset = this.ElementCust.offsetHeight; 5272 }, 5273 horizontal: function () { 5274 this.margin = "margin-left"; 5275 this.layout = "width"; 5276 this.offset = this.ElementCust.offsetWidth; 5277 }, 5278 set: function (a) { 5279 this.ElementCust.setStyle(this.margin, a[0]); 5280 this.wrapper.setStyle(this.layout, a[1]); 5281 return this; 5282 }, 5283 compute: function (c, b, a) { 5284 return [0, 1].map(function (d) { 5285 return Fx.compute(c[d], b[d], a); 5286 }); 5287 }, 5288 start: function (b, e) { 5289 if (!this.check(b, e)) { 5290 return this; 5291 } 5292 this[e || this.options.mode](); 5293 var d = this.ElementCust.getStyle(this.margin).toInt(), 5294 c = this.wrapper.getStyle(this.layout).toInt(), 5295 a = [ 5296 [d, c], 5297 [0, this.offset], 5298 ], 5299 g = [ 5300 [d, c], 5301 [-this.offset, 0], 5302 ], 5303 f; 5304 switch (b) { 5305 case "in": 5306 f = a; 5307 break; 5308 case "out": 5309 f = g; 5310 break; 5311 case "toggle": 5312 f = c == 0 ? a : g; 5313 } 5314 return this.parent(f[0], f[1]); 5315 }, 5316 slideIn: function (a) { 5317 return this.start("in", a); 5318 }, 5319 slideOut: function (a) { 5320 return this.start("out", a); 5321 }, 5322 hide: function (a) { 5323 this[a || this.options.mode](); 5324 this.open = false;
5325 return this.set([-this.offset, 0]); 5326 }, 5327 show: function (a) { 5328 this[a || this.options.mode](); 5329 this.open = true; 5330 return this.set([0, this.offset]); 5331 }, 5332 toggle: function (a) { 5333 return this.start("toggle", a); 5334 }, 5335}); 5336ElementCust.Properties.slide = { 5337 set: function (a) { 5338 this.get("slide").cancel().setOptions(a); 5339 return this; 5340 }, 5341 get: function () { 5342 var a = this.retrieve("slide"); 5343 if (!a) { 5344 a = new Fx.Slide(this, { link: "cancel" }); 5345 this.store("slide", a); 5346 } 5347 return a; 5348 }, 5349}; 5350ElementCust.implement({ 5351 slide: function (d, e) { 5352 d = d || "toggle"; 5353 var b = this.get("slide"), 5354 a; 5355 switch (d) { 5356 case "hide": 5357 b.hide(e); 5358 break; 5359 case "show": 5360 b.show(e); 5361 break; 5362 case "toggle": 5363 var c = this.retrieve("slide:flag", b.open); 5364 b[c ? "slideOut" : "slideIn"](e); 5365 this.store("slide:flag", !c); 5366 a = true; 5367 break; 5368 default: 5369 b.start(d, e); 5370 } 5371 if (!a) { 5372 this.eliminate("slide:flag"); 5373 } 5374 return this; 5375 }, 5376}); 5377Fx.SmoothScroll = new Class({ 5378 Extends: Fx.Scroll, 5379 options: { axes: ["x", "y"] }, 5380 initialize: function (c, d) { 5381 d = d || document; 5382 this.doc = d.getDocument(); 5383 this.parent(this.doc, c); 5384 var e = d.getWindow(), 5385 a = e.location.href.match(/^[^#]*/)[0] + "#", 5386 b = $$(this.options.links || this.doc.links); 5387 b.each(function (g) { 5388 if (g.href.indexOf(a) != 0) { 5389 return; 5390 } 5391 var f = g.href.substr(a.length); 5392 if (f) { 5393 this.useLink(g, f); 5394 } 5395 }, this); 5396 this.addEvent( 5397 "complete", 5398 function () { 5399 e.location.hash = this.anchor; 5400 this.ElementCust.scrollTo(this.to[0], this.to[1]); 5401 }, 5402 true 5403 ); 5404 }, 5405 useLink: function (b, a) { 5406 b.addEvent( 5407 "click", 5408 function (d) { 5409 var c = document.id(a) || this.doc.getElement("a[name=" + a + "]"); 5410 if (!c) { 5411 return; 5412 } 5413 d.preventDefault(); 5414 this.toElement(c, this.options.axes).chain( 5415 function () { 5416 this.fireEvent("scrolledTo", [b, c]); 5417 }.bind(this) 5418 ); 5419 this.anchor = a; 5420 }.bind(this) 5421 ); 5422 return this; 5423 }, 5424}); 5425Fx.Sort = new Class({ 5426 Extends: Fx.Elements, 5427 options: { mode: "vertical" }, 5428 initialize: function (b, a) { 5429 this.parent(b, a); 5430 this.elements.each(function (c) { 5431 if (c.getStyle("position") == "static") { 5432 c.setStyle("position", "relative"); 5433 } 5434 }); 5435 this.setDefaultOrder(); 5436 }, 5437 setDefaultOrder: function () { 5438 this.currentOrder = this.elements.map(function (b, a) { 5439 return a; 5440 }); 5441 }, 5442 sort: function () { 5443 if (!this.check(arguments)) { 5444 return this; 5445 } 5446 var e = Array.flatten(arguments); 5447 var i = 0, 5448 a = 0, 5449 c = {}, 5450 h = {}, 5451 d = this.options.mode == "vertical"; 5452 var f = this.elements.map(function (m, k) { 5453 var l = m.getComputedSize({ styles: ["border", "padding", "margin"] }); 5454 var n; 5455 if (d) { 5456 n = { top: i, margin: l["margin-top"], height: l.totalHeight }; 5457 i += n.height - l["margin-top"]; 5458 } else { 5459 n = { left: a, margin: l["margin-left"], width: l.totalWidth }; 5460 a += n.width; 5461 } 5462 var j = d ? "top" : "left"; 5463 h[k] = {}; 5464 var o = m.getStyle(j).toInt(); 5465 h[k][j] = o || 0; 5466 return n; 5467 }, this); 5468 this.set(h); 5469 e = e.map(function (j) { 5470 return j.toInt(); 5471 }); 5472 if (e.length != this.elements.length) { 5473 this.currentOrder.each(function (j) { 5474 if (!e.contains(j)) { 5475 e.push(j); 5476 } 5477 }); 5478 if (e.length > this.elements.length) { 5479 e.splice(this.elements.length - 1, e.length - this.elements.length); 5480 } 5481 } 5482 var b = 0; 5483 i = a = 0; 5484 e.each(function (k) { 5485 var j = {}; 5486 if (d) { 5487 j.top = i - f[k].top - b; 5488 i += f[k].height; 5489 } else { 5490 j.left = a - f[k].left; 5491 a += f[k].width; 5492 } 5493 b = b + f[k].margin; 5494 c[k] = j; 5495 }, this); 5496 var g = {}; 5497 Array.clone(e) 5498 .sort() 5499 .each(function (j) { 5500 g[j] = c[j]; 5501 }); 5502 this.start(g); 5503 this.currentOrder = e; 5504 return this; 5505 }, 5506 rearrangeDOM: function (a) { 5507 a = a || this.currentOrder; 5508 var b = this.elements[0].getParent(); 5509 var c = []; 5510 this.elements.setStyle("opacity", 0); 5511 a.each(function (d) { 5512 c.push(this.elements[d].inject(b).setStyles({ top: 0, left: 0 })); 5513 }, this); 5514 this.elements.setStyle("opacity", 1); 5515 this.elements = $$(c); 5516 this.setDefaultOrder(); 5517 return this; 5518 }, 5519 getDefaultOrder: function () { 5520 return this.elements.map(function (b, a) { 5521 return a; 5522 }); 5523 }, 5524 getCurrentOrder: function () { 5525 return this.currentOrder; 5526 }, 5527 forward: function () { 5528 return this.sort(this.getDefaultOrder()); 5529 }, 5530 backward: function () { 5531 return this.sort(this.getDefaultOrder().reverse()); 5532 }, 5533 reverse: function () { 5534 return this.sort(this.currentOrder.reverse()); 5535 }, 5536 sortByElements: function (a) { 5537 return this.sort( 5538 a.map(function (b) { 5539 return this.elements.indexOf(b); 5540 }, this) 5541 ); 5542 }, 5543 swap: function (c, b) { 5544 if (typeOf(c) == "ElementCust") { 5545 c = this.elements.indexOf(c); 5546 } 5547 if (typeOf(b) == "ElementCust") { 5548 b = this.elements.indexOf(b); 5549 } 5550 var a = Array.clone(this.currentOrder); 5551 a[this.currentOrder.indexOf(c)] = b; 5552 a[this.currentOrder.indexOf(b)] = c; 5553 return this.sort(a); 5554 }, 5555}); 5556var Drag = new Class({ 5557 Implements: [Events, Options], 5558 options: { 5559 snap: 6, 5560 unit: "px", 5561 grid: false, 5562 style: true, 5563 limit: false, 5564 handle: false, 5565 invert: false, 5566 preventDefault: false, 5567 stopPropagation: false, 5568 modifiers: { x: "left", y: "top" }, 5569 }, 5570 initialize: function () { 5571 var b = Array.link(arguments, { 5572 options: Type.isObject, 5573 ElementCust: function (c) { 5574 return c != null; 5575 }, 5576 }); 5577 this.ElementCust = document.id(b.ElementCust); 5578 this.document = this.ElementCust.getDocument(); 5579 this.setOptions(b.options || {}); 5580 var a = typeOf(this.options.handle); 5581 this.handles = 5582 (a == "array" || a == "collection" 5583 ? $$(this.options.handle) 5584 : document.id(this.options.handle)) || this.ElementCust; 5585 this.mouse = { now: {}, pos: {} }; 5586 this.value = { start: {}, now: {} }; 5587 this.selection = Browser.ie ? "selectstart" : "mousedown"; 5588 if (Browser.ie && !Drag.ondragstartFixed) { 5589 document.ondragstart = Function.from(false); 5590 Drag.ondragstartFixed = true; 5591 } 5592 this.bound = { 5593 start: this.start.bind(this), 5594 check: this.check.bind(this), 5595 drag: this.drag.bind(this), 5596 stop: this.stop.bind(this), 5597 cancel: this.cancel.bind(this), 5598 eventStop: Function.from(false), 5599 }; 5600 this.attach(); 5601 }, 5602 attach: function () { 5603 this.handles.addEvent("mousedown", this.bound.start); 5604 return this; 5605 }, 5606 detach: function () { 5607 this.handles.removeEvent("mousedown", this.bound.start); 5608 return this; 5609 }, 5610 start: function (a) { 5611 var j = this.options; 5612 if (a.rightClick) { 5613 return; 5614 } 5615 if (j.preventDefault) { 5616 a.preventDefault(); 5617 } 5618 if (j.stopPropagation) { 5619 a.stopPropagation(); 5620 } 5621 this.mouse.start = a.page; 5622 this.fireEvent("beforeStart", this.ElementCust); 5623 var c = j.limit; 5624 this.limit = { x: [], y: [] }; 5625 var e, g; 5626 for (e in j.modifiers) { 5627 if (!j.modifiers[e]) { 5628 continue; 5629 } 5630 var b = this.ElementCust.getStyle(j.modifiers[e]); 5631 if (b && !b.match(/px$/)) { 5632 if (!g) { 5633 g = this.ElementCust.getCoordinates(this.ElementCust.getOffsetParent()); 5634 } 5635 b = g[j.modifiers[e]]; 5636 } 5637 if (j.style) { 5638 this.value.now[e] = (b || 0).toInt(); 5639 } else { 5640 this.value.now[e] = this.ElementCust[j.modifiers[e]]; 5641 } 5642 if (j.invert) { 5643 this.value.now[e] *= -1; 5644 } 5645 this.mouse.pos[e] = a.page[e] - this.value.now[e]; 5646 if (c && c[e]) { 5647 var d = 2; 5648 while (d--) { 5649 var f = c[e][d]; 5650 if (f || f === 0) { 5651 this.limit[e][d] = typeof f == "function" ? f() : f; 5652 } 5653 } 5654 } 5655 } 5656 if (typeOf(this.options.grid) == "number") { 5657 this.options.grid = { x: this.options.grid, y: this.options.grid }; 5658 } 5659 var h = { mousemove: this.bound.check, mouseup: this.bound.cancel }; 5660 h[this.selection] = this.bound.eventStop; 5661 this.document.addEvents(h); 5662 }, 5663 check: function (a) { 5664 if (this.options.preventDefault) { 5665 a.preventDefault(); 5666 } 5667 var b = Math.round( 5668 Math.sqrt( 5669 Math.pow(a.page.x - this.mouse.start.x, 2) + 5670 Math.pow(a.page.y - this.mouse.start.y, 2) 5671 ) 5672 ); 5673 if (b > this.options.snap) { 5674 this.cancel(); 5675 this.document.addEvents({ 5676 mousemove: this.bound.drag, 5677 mouseup: this.bound.stop, 5678 }); 5679 this.fireEvent("start", [this.ElementCust, a]).fireEvent( 5680 "snap", 5681 this.ElementCust 5682 ); 5683 } 5684 }, 5685 drag: function (b) { 5686 var a = this.options; 5687 if (a.preventDefault) { 5688 b.preventDefault(); 5689 } 5690 this.mouse.now = b.page; 5691 for (var c in a.modifiers) { 5692 if (!a.modifiers[c]) { 5693 continue; 5694 } 5695 this.value.now[c] = this.mouse.now[c] - this.mouse.pos[c]; 5696 if (a.invert) { 5697 this.value.now[c] *= -1; 5698 } 5699 if (a.limit && this.limit[c]) { 5700 if ( 5701 (this.limit[c][1] || this.limit[c][1] === 0) && 5702 this.value.now[c] > this.limit[c][1] 5703 ) { 5704 this.value.now[c] = this.limit[c][1]; 5705 } else { 5706 if ( 5707 (this.limit[c][0] || this.limit[c][0] === 0) && 5708 this.value.now[c] < this.limit[c][0] 5709 ) { 5710 this.value.now[c] = this.limit[c][0]; 5711 } 5712 } 5713 } 5714 if (a.grid[c]) { 5715 this.value.now[c] -= 5716 (this.value.now[c] - (this.limit[c][0] || 0)) % a.grid[c]; 5717 } 5718 if (a.style) { 5719 this.ElementCust.setStyle(a.modifiers[c], this.value.now[c] + a.unit); 5720 } else { 5721 this.ElementCust[a.modifiers[c]] = this.value.now[c]; 5722 } 5723 } 5724 this.fireEvent("drag", [this.ElementCust, b]); 5725 }, 5726 cancel: function (a) { 5727 this.document.removeEvents({ 5728 mousemove: this.bound.check, 5729 mouseup: this.bound.cancel, 5730 }); 5731 if (a) { 5732 this.document.removeEvent(this.selection, this.bound.eventStop); 5733 this.fireEvent("cancel", this.ElementCust); 5734 } 5735 }, 5736 stop: function (b) { 5737 var a = { mousemove: this.bound.drag, mouseup: this.bound.stop }; 5738 a[this.selection] = this.bound.eventStop; 5739 this.document.removeEvents(a); 5740 if (b) { 5741 this.fireEvent("complete", [this.ElementCust, b]); 5742 } 5743 }, 5744}); 5745ElementCust.implement({ 5746 makeResizable: function (a) { 5747 var b = new Drag( 5748 this, 5749 Object.merge({ modifiers: { x: "width", y: "height" } }, a) 5750 ); 5751 this.store("resizer", b); 5752 return b.addEvent( 5753 "drag", 5754 function () { 5755 this.fireEvent("resize", b); 5756 }.bind(this) 5757 ); 5758 }, 5759}); 5760Drag.Move = new Class({ 5761 Extends: Drag, 5762 options: { 5763 droppables: [], 5764 container: false, 5765 precalculate: false, 5766 includeMargins: true, 5767 checkDroppables: true, 5768 }, 5769 initialize: function (b, a) { 5770 this.parent(b, a); 5771 b = this.ElementCust; 5772 this.droppables = $$(this.options.droppables); 5773 this.container = document.id(this.options.container); 5774 if (this.container && typeOf(this.container) != "ElementCust") { 5775 this.container = document.id(this.container.getDocument().body); 5776 } 5777 if (this.options.style) { 5778 if ( 5779 this.options.modifiers.x == "left" && 5780 this.options.modifiers.y == "top" 5781 ) { 5782 var c = b.getOffsetParent(), 5783 d = b.getStyles("left", "top"); 5784 if (c && (d.left == "auto" || d.top == "auto")) { 5785 b.setPosition(b.getPosition(c)); 5786 } 5787 } 5788 if (b.getStyle("position") == "static") { 5789 b.setStyle("position", "absolute"); 5790 } 5791 } 5792 this.addEvent("start", this.checkDroppables, true); 5793 this.overed = null; 5794 }, 5795 start: function (a) { 5796 if (this.container) { 5797 this.options.limit = this.calculateLimit(); 5798 } 5799 if (this.options.precalculate) { 5800 this.positions = this.droppables.map(function (b) { 5801 return b.getCoordinates(); 5802 }); 5803 } 5804 this.parent(a); 5805 }, 5806 calculateLimit: function () { 5807 var j = this.ElementCust, 5808 e = this.container, 5809 d = document.id(j.getOffsetParent()) || document.body, 5810 h = e.getCoordinates(d), 5811 c = {}, 5812 b = {}, 5813 k = {}, 5814 g = {}, 5815 m = {}; 5816 ["top", "right", "bottom", "left"].each(function (q) { 5817 c[q] = j.getStyle("margin-" + q).toInt(); 5818 b[q] = j.getStyle("border-" + q).toInt(); 5819 k[q] = e.getStyle("margin-" + q).toInt(); 5820 g[q] = e.getStyle("border-" + q).toInt(); 5821 m[q] = d.getStyle("padding-" + q).toInt(); 5822 }, this); 5823 var f = j.offsetWidth + c.left + c.right, 5824 p = j.offsetHeight + c.top + c.bottom, 5825 i = 0, 5826 l = 0, 5827 o = h.right - g.right - f, 5828 a = h.bottom - g.bottom - p; 5829 if (this.options.includeMargins) { 5830 i += c.left; 5831 l += c.top; 5832 } else { 5833 o += c.right; 5834 a += c.bottom; 5835 } 5836 if (j.getStyle("position") == "relative") { 5837 var n = j.getCoordinates(d); 5838 n.left -= j.getStyle("left").toInt(); 5839 n.top -= j.getStyle("top").toInt(); 5840 i -= n.left; 5841 l -= n.top; 5842 if (e.getStyle("position") != "relative") { 5843 i += g.left; 5844 l += g.top; 5845 } 5846 o += c.left - n.left; 5847 a += c.top - n.top; 5848 if (e != d) { 5849 i += k.left + m.left; 5850 l += (Browser.ie6 || Browser.ie7 ? 0 : k.top) + m.top; 5851 } 5852 } else { 5853 i -= c.left; 5854 l -= c.top; 5855 if (e != d) { 5856 i += h.left + g.left; 5857 l += h.top + g.top; 5858 } 5859 } 5860 return { x: [i, o], y: [l, a] }; 5861 }, 5862 getDroppableCoordinates: function (c) { 5863 var b = c.getCoordinates(); 5864 if (c.getStyle("position") == "fixed") { 5865 var a = window.getScroll(); 5866 b.left += a.x; 5867 b.right += a.x; 5868 b.top += a.y; 5869 b.bottom += a.y; 5870 } 5871 return b; 5872 }, 5873 checkDroppables: function () { 5874 var a = this.droppables 5875 .filter(function (d, c) { 5876 d = this.positions 5877 ? this.positions[c] 5878 : this.getDroppableCoordinates(d); 5879 var b = this.mouse.now; 5880 return b.x > d.left && b.x < d.right && b.y < d.bottom && b.y > d.top; 5881 }, this) 5882 .getLast(); 5883 if (this.overed != a) { 5884 if (this.overed) { 5885 this.fireEvent("leave", [this.ElementCust, this.overed]); 5886 } 5887 if (a) { 5888 this.fireEvent("enter", [this.ElementCust, a]); 5889 } 5890 this.overed = a; 5891 } 5892 }, 5893 drag: function (a) { 5894 this.parent(a); 5895 if (this.options.checkDroppables && this.droppables.length) { 5896 this.checkDroppables(); 5897 } 5898 }, 5899 stop: function (a) { 5900 this.checkDroppables(); 5901 this.fireEvent("drop", [this.ElementCust, this.overed, a]); 5902 this.overed = null; 5903 return this.parent(a); 5904 }, 5905}); 5906ElementCust.implement({ 5907 makeDraggable: function (a) { 5908 var b = new Drag.Move(this, a); 5909 this.store("dragger", b); 5910 return b; 5911 }, 5912}); 5913var Slider = new Class({ 5914 Implements: [Events, Options], 5915 Binds: ["clickedElement", "draggedKnob", "scrolledElement"], 5916 options: { 5917 onTick: function (a) { 5918 this.setKnobPosition(a); 5919 }, 5920 initialStep: 0, 5921 snap: false, 5922 offset: 0, 5923 range: false, 5924 wheel: false, 5925 steps: 100, 5926 mode: "horizontal", 5927 }, 5928 initialize: function (f, a, e) { 5929 this.setOptions(e); 5930 e = this.options; 5931 this.ElementCust = document.id(f); 5932 a = this.knob = document.id(a); 5933 this.previousChange = this.previousEnd = this.step = -1; 5934 var b = {}, 5935 d = { x: false, y: false }; 5936 switch (e.mode) { 5937 case "vertical": 5938 this.axis = "y"; 5939 this.property = "top"; 5940 this.offset = "offsetHeight"; 5941 break; 5942 case "horizontal": 5943 this.axis = "x"; 5944 this.property = "left"; 5945 this.offset = "offsetWidth"; 5946 } 5947 this.setSliderDimensions(); 5948 this.setRange(e.range); 5949 if (a.getStyle("position") == "static")
5949 { 5950 a.setStyle("position", "relative"); 5951 } 5952 a.setStyle(this.property, -e.offset); 5953 d[this.axis] = this.property; 5954 b[this.axis] = [-e.offset, this.full - e.offset]; 5955 var c = { 5956 snap: 0, 5957 limit: b, 5958 modifiers: d, 5959 onDrag: this.draggedKnob, 5960 onStart: this.draggedKnob, 5961 onBeforeStart: function () { 5962 this.isDragging = true; 5963 }.bind(this), 5964 onCancel: function () { 5965 this.isDragging = false; 5966 }.bind(this), 5967 onComplete: function () { 5968 this.isDragging = false; 5969 this.draggedKnob(); 5970 this.end(); 5971 }.bind(this), 5972 }; 5973 if (e.snap) { 5974 this.setSnap(c); 5975 } 5976 this.drag = new Drag(a, c); 5977 this.attach(); 5978 if (e.initialStep != null) { 5979 this.set(e.initialStep); 5980 } 5981 }, 5982 attach: function () { 5983 this.ElementCust.addEvent("mousedown", this.clickedElement); 5984 if (this.options.wheel) { 5985 this.ElementCust.addEvent("mousewheel", this.scrolledElement); 5986 } 5987 this.drag.attach(); 5988 return this; 5989 }, 5990 detach: function () { 5991 this.ElementCust 5992 .removeEvent("mousedown", this.clickedElement) 5993 .removeEvent("mousewheel", this.scrolledElement); 5994 this.drag.detach(); 5995 return this; 5996 }, 5997 autosize: function () { 5998 this.setSliderDimensions().setKnobPosition(this.toPosition(this.step)); 5999 this.drag.options.limit[this.axis] = [ 6000 -this.options.offset, 6001 this.full - this.options.offset, 6002 ]; 6003 if (this.options.snap) { 6004 this.setSnap(); 6005 } 6006 return this; 6007 }, 6008 setSnap: function (a) { 6009 if (!a) { 6010 a = this.drag.options; 6011 } 6012 a.grid = Math.ceil(this.stepWidth); 6013 a.limit[this.axis][1] = this.full; 6014 return this; 6015 }, 6016 setKnobPosition: function (a) { 6017 if (this.options.snap) { 6018 a = this.toPosition(this.step); 6019 } 6020 this.knob.setStyle(this.property, a); 6021 return this; 6022 }, 6023 setSliderDimensions: function () { 6024 this.full = this.ElementCust.measure( 6025 function () { 6026 this.half = this.knob[this.offset] / 2; 6027 return ( 6028 this.ElementCust[this.offset] - 6029 this.knob[this.offset] + 6030 this.options.offset * 2 6031 ); 6032 }.bind(this) 6033 ); 6034 return this; 6035 }, 6036 set: function (a) { 6037 if (!((this.range > 0) ^ (a < this.min))) { 6038 a = this.min; 6039 } 6040 if (!((this.range > 0) ^ (a > this.max))) { 6041 a = this.max; 6042 } 6043 this.step = Math.round(a); 6044 return this.checkStep().fireEvent("tick", this.toPosition(this.step)).end(); 6045 }, 6046 setRange: function (a, b) { 6047 this.min = Array.pick([a[0], 0]); 6048 this.max = Array.pick([a[1], this.options.steps]); 6049 this.range = this.max - this.min; 6050 this.steps = this.options.steps || this.full; 6051 this.stepSize = Math.abs(this.range) / this.steps; 6052 this.stepWidth = (this.stepSize * this.full) / Math.abs(this.range); 6053 if (a) { 6054 this.set(Array.pick([b, this.step]).floor(this.min).max(this.max)); 6055 } 6056 return this; 6057 }, 6058 clickedElement: function (c) { 6059 if (this.isDragging || c.target == this.knob) { 6060 return; 6061 } 6062 var b = this.range < 0 ? -1 : 1, 6063 a = c.page[this.axis] - this.ElementCust.getPosition()[this.axis] - this.half; 6064 a = a.limit(-this.options.offset, this.full - this.options.offset); 6065 this.step = Math.round(this.min + b * this.toStep(a)); 6066 this.checkStep().fireEvent("tick", a).end(); 6067 }, 6068 scrolledElement: function (a) { 6069 var b = this.options.mode == "horizontal" ? a.wheel < 0 : a.wheel > 0; 6070 this.set(this.step + (b ? -1 : 1) * this.stepSize); 6071 a.stop(); 6072 }, 6073 draggedKnob: function () { 6074 var b = this.range < 0 ? -1 : 1, 6075 a = this.drag.value.now[this.axis]; 6076 a = a.limit(-this.options.offset, this.full - this.options.offset); 6077 this.step = Math.round(this.min + b * this.toStep(a)); 6078 this.checkStep(); 6079 }, 6080 checkStep: function () { 6081 var a = this.step; 6082 if (this.previousChange != a) { 6083 this.previousChange = a; 6084 this.fireEvent("change", a); 6085 } 6086 return this; 6087 }, 6088 end: function () { 6089 var a = this.step; 6090 if (this.previousEnd !== a) { 6091 this.previousEnd = a; 6092 this.fireEvent("complete", a + ""); 6093 } 6094 return this; 6095 }, 6096 toStep: function (a) { 6097 var b = 6098 (((a + this.options.offset) * this.stepSize) / this.full) * this.steps; 6099 return this.options.steps ? Math.round((b -= b % this.stepSize)) : b; 6100 }, 6101 toPosition: function (a) { 6102 return ( 6103 (this.full * Math.abs(this.min - a)) / (this.steps * this.stepSize) - 6104 this.options.offset 6105 ); 6106 }, 6107}); 6108var Sortables = new Class({ 6109 Implements: [Events, Options], 6110 options: { 6111 opacity: 1, 6112 clone: false, 6113 revert: false, 6114 handle: false, 6115 dragOptions: {}, 6116 }, 6117 initialize: function (a, b) { 6118 this.setOptions(b); 6119 this.elements = []; 6120 this.lists = []; 6121 this.idle = true; 6122 this.addLists($$(document.id(a) || a)); 6123 if (!this.options.clone) { 6124 this.options.revert = false;
6125 } 6126 if (this.options.revert) { 6127 this.effect = new Fx.Morph( 6128 null, 6129 Object.merge({ duration: 250, link: "cancel" }, this.options.revert) 6130 ); 6131 } 6132 }, 6133 attach: function () { 6134 this.addLists(this.lists); 6135 return this; 6136 }, 6137 detach: function () { 6138 this.lists = this.removeLists(this.lists); 6139 return this; 6140 }, 6141 addItems: function () { 6142 Array.flatten(arguments).each(function (a) { 6143 this.elements.push(a); 6144 var b = a.retrieve( 6145 "sortables:start", 6146 function (c) { 6147 this.start.call(this, c, a); 6148 }.bind(this) 6149 ); 6150 (this.options.handle 6151 ? a.getElement(this.options.handle) || a 6152 : a 6153 ).addEvent("mousedown", b); 6154 }, this); 6155 return this; 6156 }, 6157 addLists: function () { 6158 Array.flatten(arguments).each(function (a) { 6159 this.lists.include(a); 6160 this.addItems(a.getChildren()); 6161 }, this); 6162 return this; 6163 }, 6164 removeItems: function () { 6165 return $$( 6166 Array.flatten(arguments).map(function (a) { 6167 this.elements.erase(a); 6168 var b = a.retrieve("sortables:start"); 6169 (this.options.handle 6170 ? a.getElement(this.options.handle) || a 6171 : a 6172 ).removeEvent("mousedown", b); 6173 return a; 6174 }, this) 6175 ); 6176 }, 6177 removeLists: function () { 6178 return $$( 6179 Array.flatten(arguments).map(function (a) { 6180 this.lists.erase(a); 6181 this.removeItems(a.getChildren()); 6182 return a; 6183 }, this) 6184 ); 6185 }, 6186 getClone: function (b, a) { 6187 if (!this.options.clone) { 6188 return new ElementCust(a.tagName).inject(document.body); 6189 } 6190 if (typeOf(this.options.clone) == "function") { 6191 return this.options.clone.call(this, b, a, this.list); 6192 } 6193 var c = a 6194 .clone(true) 6195 .setStyles({ 6196 margin: 0, 6197 position: "absolute", 6198 visibility: "hidden", 6199 width: a.getStyle("width"), 6200 }) 6201 .addEvent("mousedown", function (d) { 6202 a.fireEvent("mousedown", d); 6203 }); 6204 if (c.get("html").test("radio")) { 6205 c.getElements("input[type=radio]").each(function (d, e) { 6206 d.set("name", "clone_" + e); 6207 if (d.get("checked")) { 6208 a.getElements("input[type=radio]")[e].set("checked", true); 6209 } 6210 }); 6211 } 6212 return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent())); 6213 }, 6214 getDroppables: function () { 6215 var a = this.list.getChildren().erase(this.clone).erase(this.ElementCust); 6216 if (!this.options.constrain) { 6217 a.append(this.lists).erase(this.list); 6218 } 6219 return a; 6220 }, 6221 insert: function (c, b) { 6222 var a = "inside"; 6223 if (this.lists.contains(b)) { 6224 this.list = b; 6225 this.drag.droppables = this.getDroppables(); 6226 } else { 6227 a = this.ElementCust.getAllPrevious().contains(b) ? "before" : "after"; 6228 } 6229 this.ElementCust.inject(b, a); 6230 this.fireEvent("sort", [this.ElementCust, this.clone]); 6231 }, 6232 start: function (b, a) { 6233 if ( 6234 !this.idle || 6235 b.rightClick || 6236 ["button", "input", "a", "textarea"].contains(b.target.get("tag")) 6237 ) { 6238 return; 6239 } 6240 this.idle = false; 6241 this.ElementCust = a; 6242 this.opacity = a.getStyle("opacity"); 6243 this.list = a.getParent(); 6244 this.clone = this.getClone(b, a); 6245 this.drag = new Drag.Move( 6246 this.clone, 6247 Object.merge( 6248 { droppables: this.getDroppables() }, 6249 this.options.dragOptions 6250 ) 6251 ).addEvents({ 6252 onSnap: function () { 6253 b.stop(); 6254 this.clone.setStyle("visibility", "visible"); 6255 this.ElementCust.setStyle("opacity", this.options.opacity || 0); 6256 this.fireEvent("start", [this.ElementCust, this.clone]); 6257 }.bind(this), 6258 onEnter: this.insert.bind(this), 6259 onCancel: this.end.bind(this), 6260 onComplete: this.end.bind(this), 6261 }); 6262 this.clone.inject(this.ElementCust, "before"); 6263 this.drag.start(b); 6264 }, 6265 end: function () { 6266 this.drag.detach(); 6267 this.ElementCust.setStyle("opacity", this.opacity); 6268 if (this.effect) { 6269 var b = this.ElementCust.getStyles("width", "height"), 6270 d = this.clone, 6271 c = d.computePosition( 6272 this.ElementCust.getPosition(this.clone.getOffsetParent()) 6273 ); 6274 var a = function () { 6275 this.removeEvent("cancel", a); 6276 d.destroy(); 6277 }; 6278 this.effect.ElementCust = d; 6279 this.effect
6280 .start({ 6281 top: c.top, 6282 left: c.left, 6283 width: b.width, 6284 height: b.height, 6285 opacity: 0.25, 6286 }) 6287 .addEvent("cancel", a) 6288 .chain(a); 6289 } else { 6290 this.clone.destroy(); 6291 } 6292 this.reset(); 6293 }, 6294 reset: function () { 6295 this.idle = true; 6296 this.fireEvent("complete", this.ElementCust); 6297 }, 6298 serialize: function () { 6299 var c = Array.link(arguments, { 6300 modifier: Type.isFunction, 6301 index: function (d) { 6302 return d != null; 6303 }, 6304 }); 6305 var b = this.lists.map(function (d) { 6306 return d.getChildren().map( 6307 c.modifier || 6308 function (e) { 6309 return e.get("id"); 6310 }, 6311 this 6312 ); 6313 }, this); 6314 var a = c.index; 6315 if (this.lists.length == 1) { 6316 a = 0; 6317 } 6318 return (a || a === 0) && a >= 0 && a < this.lists.length ? b[a] : b; 6319 }, 6320}); 6321Request.JSONP = new Class({ 6322 Implements: [Chain, Events, Options], 6323 options: { 6324 onRequest: function (a) { 6325 if (this.options.log && window.console && console.log) { 6326 console.log("JSONP retrieving script with url:" + a); 6327 } 6328 }, 6329 onError: function (a) { 6330 if (this.options.log && window.console && console.warn) { 6331 console.warn( 6332 "JSONP " + 6333 a + 6334 " will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs" 6335 ); 6336 } 6337 }, 6338 url: "", 6339 callbackKey: "callback", 6340 injectScript: document.head, 6341 data: "", 6342 link: "ignore", 6343 timeout: 0, 6344 log: false, 6345 }, 6346 initialize: function (a) { 6347 this.setOptions(a); 6348 }, 6349 send: function (c) { 6350 if (!Request.prototype.check.call(this, c)) { 6351 return this; 6352 } 6353 this.running = true; 6354 var d = typeOf(c); 6355 if (d == "string" || d == "ElementCust") { 6356 c = { data: c }; 6357 } 6358 c = Object.merge(this.options, c || {}); 6359 var e = c.data; 6360 switch (typeOf(e)) { 6361 case "ElementCust": 6362 e = document.id(e).toQueryString(); 6363 break; 6364 case "object": 6365 case "hash": 6366 e = Object.toQueryString(e); 6367 } 6368 var b = (this.index = Request.JSONP.counter++); 6369 var f = 6370 c.url + 6371 (c.url.test("\\?") ? "&" : "?") + 6372 c.callbackKey + 6373 "=Request.JSONP.request_map.request_" + 6374 b + 6375 (e ? "&" + e : ""); 6376 if (f.length > 2083) { 6377 this.fireEvent("error", f); 6378 } 6379 Request.JSONP.request_map["request_" + b] = function () { 6380 this.success(arguments, b); 6381 }.bind(this); 6382 var a = this.getScript(f).inject(c.injectScript); 6383 this.fireEvent("request", [f, a]); 6384 if (c.timeout) { 6385 this.timeout.delay(c.timeout, this); 6386 } 6387 return this; 6388 }, 6389 getScript: function (a) { 6390 if (!this.script) { 6391 this.script = new ElementCust("script", { 6392 type: "text/javascript", 6393 async: true, 6394 src: a, 6395 }); 6396 } 6397 return this.script; 6398 }, 6399 success: function (b, a) { 6400 if (!this.running) { 6401 return; 6402 } 6403 this.clear().fireEvent("complete", b).fireEvent("success", b).callChain(); 6404 }, 6405 cancel: function () { 6406 if (this.running) { 6407 this.clear().fireEvent("cancel"); 6408 } 6409 return this; 6410 }, 6411 isRunning: function () { 6412 return !!this.running; 6413 }, 6414 clear: function () { 6415 this.running = false; 6416 if (this.script) { 6417 this.script.destroy(); 6418 this.script = null; 6419 } 6420 return this; 6421 }, 6422 timeout: function () { 6423 if (this.running) { 6424 this.running = false; 6425 this.fireEvent("timeout", [this.script.get("src"), this.script]) 6426 .fireEvent("failure") 6427 .cancel(); 6428 } 6429 return this; 6430 }, 6431}); 6432Request.JSONP.counter = 0; 6433Request.JSONP.request_map = {}; 6434Request.Queue = new Class({ 6435 Implements: [Options, Events], 6436 Binds: [ 6437 "attach", 6438 "request", 6439 "complete", 6440 "cancel", 6441 "success", 6442 "failure", 6443 "exception", 6444 ], 6445 options: { 6446 stopOnFailure: true, 6447 autoAdvance: true, 6448 concurrent: 1, 6449 requests: {}, 6450 }, 6451 initialize: function (a) { 6452 var b; 6453 if (a) { 6454 b = a.requests; 6455 delete a.requests; 6456 } 6457 this.setOptions(a); 6458 this.requests = {}; 6459 this.queue = []; 6460 this.reqBinders = {}; 6461 if (b) { 6462 this.addRequests(b); 6463 } 6464 }, 6465 addRequest: function (a, b) { 6466 this.requests[a] = b; 6467 this.attach(a, b); 6468 return this; 6469 }, 6470 addRequests: function (a) { 6471 Object.each( 6472 a, 6473 function (c, b) { 6474 this.addRequest(b, c); 6475 }, 6476 this 6477 ); 6478 return this; 6479 }, 6480 getName: function (a) { 6481 return Object.keyOf(this.requests, a); 6482 }, 6483 attach: function (a, b) { 6484 if (b._groupSend) { 6485 return this; 6486 } 6487 ["request", "complete", "cancel", "success", "failure", "exception"].each( 6488 function (c) { 6489 if (!this.reqBinders[a]) { 6490 this.reqBinders[a] = {}; 6491 } 6492 this.reqBinders[a][c] = function () { 6493 this["on" + c.capitalize()].apply(this, [a, b].append(arguments)); 6494 }.bind(this); 6495 b.addEvent(c, this.reqBinders[a][c]); 6496 }, 6497 this 6498 ); 6499 b._groupSend = b.send; 6500 b.send = function (c) { 6501 this.send(a, c); 6502 return b; 6503 }.bind(this); 6504 return this; 6505 }, 6506 removeRequest: function (b) { 6507 var a = typeOf(b) == "object" ? this.getName(b) : b; 6508 if (!a && typeOf(a) != "string") { 6509 return this; 6510 } 6511 b = this.requests[a]; 6512 if (!b) { 6513 return this; 6514 } 6515 ["request", "complete", "cancel", "success", "failure", "exception"].each( 6516 function (c) { 6517 b.removeEvent(c, this.reqBinders[a][c]); 6518 }, 6519 this 6520 ); 6521 b.send = b._groupSend; 6522 delete b._groupSend; 6523 return this; 6524 }, 6525 getRunning: function () { 6526 return Object.filter(this.requests, function (a) { 6527 return a.running; 6528 }); 6529 }, 6530 isRunning: function () { 6531 return !!Object.keys(this.getRunning()).length; 6532 }, 6533 send: function (b, a) { 6534 var c = function () { 6535 this.requests[b]._groupSend(a); 6536 this.queue.erase(c); 6537 }.bind(this); 6538 c.name = b; 6539 if ( 6540 Object.keys(this.getRunning()).length >= this.options.concurrent || 6541 (this.error && this.options.stopOnFailure) 6542 ) { 6543 this.queue.push(c); 6544 } else { 6545 c(); 6546 } 6547 return this; 6548 }, 6549 hasNext: function (a) { 6550 return !a 6551 ? !!this.queue.length 6552 : !!this.queue.filter(function (b) { 6553 return b.name == a; 6554 }).length; 6555 }, 6556 resume: function () { 6557 this.error = false;
6558 (this.options.concurrent - Object.keys(this.getRunning()).length).times( 6559 this.runNext, 6560 this 6561 ); 6562 return this; 6563 }, 6564 runNext: function (a) { 6565 if (!this.queue.length) { 6566 return this; 6567 } 6568 if (!a) { 6569 this.queue[0](); 6570 } else { 6571 var b; 6572 this.queue.each(function (c) { 6573 if (!b && c.name == a) { 6574 b = true; 6575 c(); 6576 } 6577 }); 6578 } 6579 return this; 6580 }, 6581 runAll: function () { 6582 this.queue.each(function (a) { 6583 a(); 6584 }); 6585 return this; 6586 }, 6587 clear: function (a) { 6588 if (!a) { 6589 this.queue.empty(); 6590 } else { 6591 this.queue = this.queue 6592 .map(function (b) { 6593 if (b.name != a) { 6594 return b; 6595 } else { 6596 return false; 6597 } 6598 }) 6599 .filter(function (b) { 6600 return b; 6601 }); 6602 } 6603 return this; 6604 }, 6605 cancel: function (a) { 6606 this.requests[a].cancel(); 6607 return this; 6608 }, 6609 onRequest: function () { 6610 this.fireEvent("request", arguments); 6611 }, 6612 onComplete: function () { 6613 this.fireEvent("complete", arguments); 6614 if (!this.queue.length) { 6615 this.fireEvent("end"); 6616 } 6617 }, 6618 onCancel: function () { 6619 if (this.options.autoAdvance && !this.error) { 6620 this.runNext(); 6621 } 6622 this.fireEvent("cancel", arguments); 6623 }, 6624 onSuccess: function () { 6625 if (this.options.autoAdvance && !this.error) { 6626 this.runNext(); 6627 } 6628 this.fireEvent("success", arguments); 6629 }, 6630 onFailure: function () { 6631 this.error = true; 6632 if (!this.options.stopOnFailure && this.options.autoAdvance) { 6633 this.runNext(); 6634 } 6635 this.fireEvent("failure", arguments); 6636 }, 6637 onException: function () { 6638 this.error = true; 6639 if (!this.options.stopOnFailure && this.options.autoAdvance) { 6640 this.runNext(); 6641 } 6642 this.fireEvent("exception", arguments); 6643 }, 6644}); 6645Request.implement({ 6646 options: { initialDelay: 5000, delay: 5000, limit: 60000 }, 6647 startTimer: function (b) { 6648 var a = function () { 6649 if (!this.running) { 6650 this.send({ data: b }); 6651 } 6652 }; 6653 this.lastDelay = this.options.initialDelay; 6654 this.timer = a.delay(this.lastDelay, this); 6655 this.completeCheck = function (c) { 6656 clearTimeout(this.timer); 6657 this.lastDelay = c 6658 ? this.options.delay 6659 : (this.lastDelay + this.options.delay).min(this.options.limit); 6660 this.timer = a.delay(this.lastDelay, this); 6661 }; 6662 return this.addEvent("complete", this.completeCheck); 6663 }, 6664 stopTimer: function () { 6665 clearTimeout(this.timer); 6666 return this.removeEvent("complete", this.completeCheck); 6667 }, 6668}); 6669var Asset = { 6670 javascript: function (d, b) { 6671 if (!b) { 6672 b = {}; 6673 } 6674 var a = new ElementCust("script", { src: d, type: "text/javascript" }), 6675 e = b.document || document, 6676 c = b.onload || b.onLoad; 6677 delete b.onload; 6678 delete b.onLoad; 6679 delete b.document; 6680 if (c) { 6681 if (typeof a.onreadystatechange != "undefined") { 6682 a.addEvent("readystatechange", function () { 6683 if (["loaded", "complete"].contains(this.readyState)) { 6684 c.call(this); 6685 } 6686 }); 6687 } else { 6688 a.addEvent("load", c); 6689 } 6690 } 6691 return a.set(b).inject(e.head); 6692 }, 6693 css: function (d, a) { 6694 if (!a) { 6695 a = {}; 6696 } 6697 var b = new ElementCust("link", { 6698 rel: "stylesheet", 6699 media: "screen", 6700 type: "text/css", 6701 href: d, 6702 }); 6703 var c = a.onload || a.onLoad, 6704 e = a.document || document; 6705 delete a.onload; 6706 delete a.onLoad; 6707 delete a.document; 6708 if (c) { 6709 b.addEvent("load", c); 6710 } 6711 return b.set(a).inject(e.head); 6712 }, 6713 image: function (c, b) { 6714 if (!b) { 6715 b = {}; 6716 } 6717 var d = new Image(), 6718 a = document.id(d) || new ElementCust("img"); 6719 ["load", "abort", "error"].each(function (e) { 6720 var g = "on" + e, 6721 f = "on" + e.capitalize(), 6722 h = b[g] || b[f] || function () {}; 6723 delete b[f]; 6724 delete b[g]; 6725 d[g] = function () { 6726 if (!d) { 6727 return; 6728 } 6729 if (!a.parentNode) { 6730 a.width = d.width; 6731 a.height = d.height; 6732 } 6733 d = d.onload = d.onabort = d.onerror = null; 6734 h.delay(1, a, a); 6735 a.fireEvent(e, a, 1); 6736 }; 6737 }); 6738 d.src = a.src = c; 6739 if (d && d.complete) { 6740 d.onload.delay(1); 6741 } 6742 return a.set(b); 6743 }, 6744 images: function (c, b) { 6745 c = Array.from(c); 6746 var d = function () {}, 6747 a = 0; 6748 b = Object.merge( 6749 { onComplete: d, onProgress: d, onError: d, properties: {} }, 6750 b 6751 ); 6752 return new Elements( 6753 c.map(function (f, e) { 6754 return Asset.image( 6755 f, 6756 Object.append(b.properties, { 6757 onload: function () { 6758 a++; 6759 b.onProgress.call(this, a, e, f); 6760 if (a == c.length) { 6761 b.onComplete(); 6762 } 6763 }, 6764 onerror: function () { 6765 a++; 6766 b.onError.call(this, a, e, f); 6767 if (a == c.length) { 6768 b.onComplete(); 6769 } 6770 }, 6771 }) 6772 ); 6773 }) 6774 ); 6775 }, 6776}; 6777(function () { 6778 var a = (this.Color = new Type("Color", function (c, d) { 6779 if (arguments.length >= 3) { 6780 d = "rgb"; 6781 c = Array.slice(arguments, 0, 3); 6782 } else { 6783 if (typeof c == "string") { 6784 if (c.match(/rgb/)) { 6785 c = c.rgbToHex().hexToRgb(true); 6786 } else { 6787 if (c.match(/hsb/)) { 6788 c = c.hsbToRgb(); 6789 } else { 6790 c = c.hexToRgb(true); 6791 } 6792 } 6793 } 6794 } 6795 d = d || "rgb"; 6796 switch (d) { 6797 case "hsb": 6798 var b = c; 6799 c = c.hsbToRgb(); 6800 c.hsb = b; 6801 break; 6802 case "hex": 6803 c = c.hexToRgb(true); 6804 break; 6805 } 6806 c.rgb = c.slice(0, 3); 6807 c.hsb = c.hsb || c.rgbToHsb(); 6808 c.hex = c.rgbToHex(); 6809 return Object.append(c, this); 6810 })); 6811 a.implement({ 6812 mix: function () { 6813 var b = Array.slice(arguments); 6814 var d = typeOf(b.getLast()) == "number" ? b.pop() : 50; 6815 var c = this.slice(); 6816 b.each(function (e) { 6817 e = new a(e); 6818 for (var f = 0; f < 3; f++) { 6819 c[f] = Math.round((c[f] / 100) * (100 - d) + (e[f] / 100) * d); 6820 } 6821 }); 6822 return new a(c, "rgb"); 6823 }, 6824 invert: function () { 6825 return new a( 6826 this.map(function (b) { 6827 return 255 - b; 6828 }) 6829 ); 6830 }, 6831 setHue: function (b) { 6832 return new a([b, this.hsb[1], this.hsb[2]], "hsb"); 6833 }, 6834 setSaturation: function (b) { 6835 return new a([this.hsb[0], b, this.hsb[2]], "hsb"); 6836 }, 6837 setBrightness: function (b) { 6838 return new a([this.hsb[0], this.hsb[1], b], "hsb"); 6839 }, 6840 }); 6841 this.$RGB = function (e, d, c) { 6842 return new a([e, d, c], "rgb"); 6843 }; 6844 this.$HSB = function (e, d, c) { 6845 return new a([e, d, c], "hsb"); 6846 }; 6847 this.$HEX = function (b) { 6848 return new a(b, "hex"); 6849 }; 6850 Array.implement({ 6851 rgbToHsb: function () { 6852 var c = this[0], 6853 d = this[1], 6854 k = this[2], 6855 h = 0; 6856 var j = Math.max(c, d, k), 6857 f = Math.min(c, d, k); 6858 var l = j - f; 6859 var i = j / 255, 6860 g = j != 0 ? l / j : 0; 6861 if (g != 0) { 6862 var e = (j - c) / l; 6863 var b = (j - d) / l; 6864 var m = (j - k) / l; 6865 if (c == j) { 6866 h = m - b; 6867 } else { 6868 if (d == j) { 6869 h = 2 + e - m; 6870 } else { 6871 h = 4 + b - e; 6872 } 6873 } 6874 h /= 6; 6875 if (h < 0) { 6876 h++; 6877 } 6878 } 6879 return [Math.round(h * 360), Math.round(g * 100), Math.round(i * 100)]; 6880 }, 6881 hsbToRgb: function () { 6882 var d = Math.round((this[2] / 100) * 255); 6883 if (this[1] == 0) { 6884 return [d, d, d]; 6885 } else { 6886 var b = this[0] % 360; 6887 var g = b % 60; 6888 var h = Math.round(((this[2] * (100 - this[1])) / 10000) * 255); 6889 var e = Math.round(((this[2] * (6000 - this[1] * g)) / 600000) * 255); 6890 var c = Math.round( 6891 ((this[2] * (6000 - this[1] * (60 - g))) / 600000) * 255 6892 ); 6893 switch (Math.floor(b / 60)) { 6894 case 0: 6895 return [d, c, h]; 6896 case 1: 6897 return [e, d, h]; 6898 case 2: 6899 return [h, d, c]; 6900 case 3: 6901 return [h, e, d]; 6902 case 4: 6903 return [c, h, d]; 6904 case 5: 6905 return [d, h, e]; 6906 } 6907 } 6908 return false;
6909 }, 6910 }); 6911 String.implement({ 6912 rgbToHsb: function () { 6913 var b = this.match(/\d{1,3}/g); 6914 return b ? b.rgbToHsb() : null; 6915 }, 6916 hsbToRgb: function () { 6917 var b = this.match(/\d{1,3}/g); 6918 return b ? b.hsbToRgb() : null; 6919 }, 6920 }); 6921})(); 6922(function () { 6923 this.Group = new Class({ 6924 initialize: function () { 6925 this.instances = Array.flatten(arguments); 6926 }, 6927 addEvent: function (e, d) { 6928 var g = this.instances, 6929 a = g.length, 6930 f = a, 6931 c = new Array(a), 6932 b = this; 6933 g.each(function (h, j) { 6934 h.addEvent(e, function () { 6935 if (!c[j]) { 6936 f--; 6937 } 6938 c[j] = arguments; 6939 if (!f) { 6940 d.call(b, g, h, c); 6941 f = a; 6942 c = new Array(a); 6943 } 6944 }); 6945 }); 6946 }, 6947 }); 6948})(); 6949Hash.Cookie = new Class({ 6950 Extends: Cookie, 6951 options: { autoSave: true }, 6952 initialize: function (b, a) { 6953 this.parent(b, a); 6954 this.load(); 6955 }, 6956 save: function () { 6957 var a = JSON.encode(this.hash); 6958 if (!a || a.length > 4096) { 6959 return false; 6960 } 6961 if (a == "{}") { 6962 this.dispose(); 6963 } else { 6964 this.write(a); 6965 } 6966 return true; 6967 }, 6968 load: function () { 6969 this.hash = new Hash(JSON.decode(this.read(), true)); 6970 return this; 6971 }, 6972}); 6973Hash.each(Hash.prototype, function (b, a) { 6974 if (typeof b == "function") { 6975 Hash.Cookie.implement(a, function () { 6976 var c = b.apply(this.hash, arguments); 6977 if (this.options.autoSave) { 6978 this.save(); 6979 } 6980 return c; 6981 }); 6982 } 6983}); 6984(function () { 6985 var a = (this.Table = function () { 6986 this.length = 0; 6987 var c = [], 6988 b = []; 6989 this.set = function (e, g) { 6990 var d = c.indexOf(e); 6991 if (d == -1) { 6992 var f = c.length; 6993 c[f] = e; 6994 b[f] = g; 6995 this.length++; 6996 } else { 6997 b[d] = g; 6998 } 6999 return this; 7000 }; 7001 this.get = function (e) { 7002 var d = c.indexOf(e); 7003 return d == -1 ? null : b[d]; 7004 }; 7005 this.erase = function (e) { 7006 var d = c.indexOf(e); 7007 if (d != -1) { 7008 this.length--; 7009 c.splice(d, 1); 7010 return b.splice(d, 1)[0]; 7011 } 7012 return null; 7013 }; 7014 this.each = this.forEach = function (f, g) { 7015 for (var e = 0, d = this.length; e < d; e++) { 7016 f.call(g, c[e], b[e], this); 7017 } 7018 }; 7019 }); 7020 if (this.Type) { 7021 new Type("Table", a); 7022 } 7023})(); 7024var HtmlTable = new Class({ 7025 Implements: [Options, Events, Class.Occlude], 7026 options: { 7027 properties: { cellpadding: 0, cellspacing: 0, border: 0 }, 7028 rows: [], 7029 headers: [], 7030 footers: [], 7031 }, 7032 property: "HtmlTable", 7033 initialize: function () { 7034 var a = Array.link(arguments, { 7035 options: Type.isObject, 7036 table: Type.isElement, 7037 id: Type.isString, 7038 }); 7039 this.setOptions(a.options); 7040 if (!a.table && a.id) { 7041 a.table = document.id(a.id); 7042 } 7043 this.ElementCust = a.table || new ElementCust("table", this.options.properties); 7044 if (this.occlude()) { 7045 return this.occluded; 7046 } 7047 this.build(); 7048 }, 7049 build: function () { 7050 this.ElementCust.store("HtmlTable", this); 7051 this.body = 7052 document.id(this.ElementCust.tBodies[0]) || 7053 new ElementCust("tbody").inject(this.ElementCust); 7054 $$(this.body.rows); 7055 if (this.options.headers.length) { 7056 this.setHeaders(this.options.headers); 7057 } else { 7058 this.thead = document.id(this.ElementCust.tHead); 7059 } 7060 if (this.thead) { 7061 this.head = this.getHead(); 7062 } 7063 if (this.options.footers.length) { 7064 this.setFooters(this.options.footers); 7065 } 7066 this.tfoot = document.id(this.ElementCust.tFoot); 7067 if (this.tfoot) { 7068 this.foot = document.id(this.tfoot.rows[0]); 7069 } 7070 this.options.rows.each(function (a) { 7071 this.push(a); 7072 }, this); 7073 }, 7074 toElement: function () { 7075 return this.ElementCust; 7076 }, 7077 empty: function () { 7078 this.body.empty(); 7079 return this; 7080 }, 7081 set: function (e, a) { 7082 var d = e == "headers" ? "tHead" : "tFoot", 7083 b = d.toLowerCase(); 7084 this[b] = (
7085 document.id(this.ElementCust[d]) || new ElementCust(b).inject(this.ElementCust, "top") 7086 ).empty(); 7087 var c = this.push(a, {}, this[b], e == "headers" ? "th" : "td"); 7088 if (e == "headers") { 7089 this.head = this.getHead(); 7090 } else { 7091 this.foot = this.getHead(); 7092 } 7093 return c; 7094 }, 7095 getHead: function () { 7096 var a = this.thead.rows; 7097 return a.length > 1 ? $$(a) : a.length ? document.id(a[0]) : false; 7098 }, 7099 setHeaders: function (a) { 7100 this.set("headers", a); 7101 return this; 7102 }, 7103 setFooters: function (a) { 7104 this.set("footers", a); 7105 return this; 7106 }, 7107 update: function (d, e, a) { 7108 var b = d.getChildren(a || "td"), 7109 c = b.length - 1; 7110 e.each(function (i, f) { 7111 var j = b[f] || new ElementCust(a || "td").inject(d), 7112 h = (i ? i.content : "") || i, 7113 g = typeOf(h); 7114 if (i && i.properties) { 7115 j.set(i.properties); 7116 } 7117 if (/(ElementCust(s?)|array|collection)/.test(g)) { 7118 j.empty().adopt(h); 7119 } else { 7120 j.set("html", h); 7121 } 7122 if (f > c) { 7123 b.push(j); 7124 } else { 7125 b[f] = j; 7126 } 7127 }); 7128 return { tr: d, tds: b }; 7129 }, 7130 push: function (e, c, d, a, b) { 7131 if (typeOf(e) == "ElementCust" && e.get("tag") == "tr") { 7132 e.inject(d || this.body, b); 7133 return { tr: e, tds: e.getChildren("td") }; 7134 } 7135 return this.update(new ElementCust("tr", c).inject(d || this.body, b), e, a); 7136 }, 7137 pushMany: function (d, c, e, a, b) { 7138 return d.map(function (f) { 7139 return this.push(f, c, e, a, b); 7140 }, this); 7141 }, 7142}); 7143["adopt", "inject", "wraps", "grab", "replaces", "dispose"].each(function (a) { 7144 HtmlTable.implement(a, function () { 7145 this.ElementCust[a].apply(this.ElementCust, arguments); 7146 return this; 7147 }); 7148}); 7149HtmlTable = Class.refactor(HtmlTable, { 7150 options: { 7151 classZebra: "table-tr-odd", 7152 zebra: true, 7153 zebraOnlyVisibleRows: true, 7154 }, 7155 initialize: function () { 7156 this.previous.apply(this, arguments); 7157 if (this.occluded) { 7158 return this.occluded; 7159 } 7160 if (this.options.zebra) { 7161 this.updateZebras(); 7162 } 7163 }, 7164 updateZebras: function () { 7165 var a = 0; 7166 Array.each( 7167 this.body.rows, 7168 function (b) { 7169 if (!this.options.zebraOnlyVisibleRows || b.isDisplayed()) { 7170 this.zebra(b, a++); 7171 } 7172 }, 7173 this 7174 ); 7175 }, 7176 setRowStyle: function (b, a) { 7177 if (this.previous) { 7178 this.previous(b, a); 7179 } 7180 this.zebra(b, a); 7181 }, 7182 zebra: function (b, a) { 7183 return b[(a % 2 ? "remove" : "add") + "Class"](this.options.classZebra); 7184 }, 7185 push: function () { 7186 var a = this.previous.apply(this, arguments); 7187 if (this.options.zebra) { 7188 this.updateZebras(); 7189 } 7190 return a; 7191 }, 7192}); 7193HtmlTable = Class.refactor(HtmlTable, { 7194 options: { 7195 sortIndex: 0, 7196 sortReverse: false, 7197 parsers: [], 7198 defaultParser: "string", 7199 classSortable: "table-sortable", 7200 classHeadSort: "table-th-sort", 7201 classHeadSortRev: "table-th-sort-rev", 7202 classNoSort: "table-th-nosort", 7203 classGroupHead: "table-tr-group-head", 7204 classGroup: "table-tr-group", 7205 classCellSort: "table-td-sort", 7206 classSortSpan: "table-th-sort-span", 7207 sortable: false, 7208 thSelector: "th", 7209 }, 7210 initialize: function () { 7211 this.previous.apply(this, arguments); 7212 if (this.occluded) { 7213 return this.occluded; 7214 } 7215 this.sorted = { index: null, dir: 1 }; 7216 if (!this.bound) { 7217 this.bound = {}; 7218 } 7219 this.bound.headClick = this.headClick.bind(this); 7220 this.sortSpans = new Elements(); 7221 if (this.options.sortable) { 7222 this.enableSort(); 7223 if (this.options.sortIndex != null) { 7224 this.sort(this.options.sortIndex, this.options.sortReverse); 7225 } 7226 } 7227 }, 7228 attachSorts: function (a) { 7229 this.detachSorts(); 7230 if (a !== false) { 7231 this.ElementCust.addEvent( 7232 "click:relay(" + this.options.thSelector + ")", 7233 this.bound.headClick 7234 ); 7235 } 7236 }, 7237 detachSorts: function () { 7238 this.ElementCust.removeEvents("click:relay(" + this.options.thSelector + ")"); 7239 }, 7240 setHeaders: function () { 7241 this.previous.apply(this, arguments); 7242 if (this.sortEnabled) { 7243 this.setParsers(); 7244 } 7245 }, 7246 setParsers: function () { 7247 this.parsers = this.detectParsers(); 7248 }, 7249 detectParsers: function () { 7250 return ( 7251 this.head && 7252 this.head 7253 .getElements(this.options.thSelector) 7254 .flatten() 7255 .map(this.detectParser, this) 7256 ); 7257 }, 7258 detectParser: function (a, b) { 7259 if ( 7260 a.hasClass(this.options.classNoSort) || 7261 a.retrieve("htmltable-parser") 7262 ) { 7263 return a.retrieve("htmltable-parser"); 7264 } 7265 var c = new ElementCust("div"); 7266 c.adopt(a.childNodes).inject(a); 7267 var f = new ElementCust("span", { class: this.options.classSortSpan }).inject( 7268 c, 7269 "top" 7270 ); 7271 this.sortSpans.push(f); 7272 var g = this.options.parsers[b], 7273 e = this.body.rows, 7274 d; 7275 switch (typeOf(g)) { 7276 case "function": 7277 g = { convert: g }; 7278 d = true; 7279 break; 7280 case "string": 7281 g = g; 7282 d = true; 7283 break; 7284 } 7285 if (!d) { 7286 HtmlTable.ParserPriority.some(function (k) { 7287 var o = HtmlTable.Parsers[k], 7288 m = o.match; 7289 if (!m) { 7290 return false;
7291 } 7292 for (var n = 0, l = e.length; n < l; n++) { 7293 var h = document.id(e[n].cells[b]), 7294 p = h ? h.get("html").clean() : ""; 7295 if (p && m.test(p)) { 7296 g = o; 7297 return true; 7298 } 7299 } 7300 }); 7301 } 7302 if (!g) { 7303 g = this.options.defaultParser; 7304 } 7305 a.store("htmltable-parser", g); 7306 return g; 7307 }, 7308 headClick: function (b, a) { 7309 if (!this.head || a.hasClass(this.options.classNoSort)) { 7310 return; 7311 } 7312 return this.sort( 7313 Array.indexOf( 7314 this.head.getElements(this.options.thSelector).flatten(), 7315 a 7316 ) % this.body.rows[0].cells.length 7317 ); 7318 }, 7319 serialize: function () { 7320 var a = this.previous.apply(this, arguments) || {}; 7321 if (this.options.sortable) { 7322 a.sortIndex = this.sorted.index; 7323 a.sortReverse = this.sorted.reverse; 7324 } 7325 return a; 7326 }, 7327 restore: function (a) { 7328 if (this.options.sortable && a.sortIndex) { 7329 this.sort(a.sortIndex, a.sortReverse); 7330 } 7331 this.previous.apply(this, arguments); 7332 }, 7333 setSortedState: function (b, a) { 7334 if (a != null) { 7335 this.sorted.reverse = a; 7336 } else { 7337 if (this.sorted.index == b) { 7338 this.sorted.reverse = !this.sorted.reverse; 7339 } else { 7340 this.sorted.reverse = this.sorted.index == null; 7341 } 7342 } 7343 if (b != null) { 7344 this.sorted.index = b; 7345 } 7346 }, 7347 setHeadSort: function (a) { 7348 var b = $$( 7349 !this.head.length 7350 ? this.head.cells[this.sorted.index] 7351 : this.head 7352 .map(function (c) { 7353 return c.getElements(this.options.thSelector)[this.sorted.index]; 7354 }, this) 7355 .clean() 7356 ); 7357 if (!b.length) { 7358 return; 7359 } 7360 if (a) { 7361 b.addClass(this.options.classHeadSort); 7362 if (this.sorted.reverse) { 7363 b.addClass(this.options.classHeadSortRev); 7364 } else { 7365 b.removeClass(this.options.classHeadSortRev); 7366 } 7367 } else { 7368 b.removeClass(this.options.classHeadSort).removeClass( 7369 this.options.classHeadSortRev 7370 ); 7371 } 7372 }, 7373 setRowSort: function (b, a) { 7374 var e = b.length, 7375 d = this.body, 7376 g, 7377 f; 7378 while (e) { 7379 var h = b[--e], 7380 c = h.position, 7381 i = d.rows[c]; 7382 if (i.disabled) { 7383 continue; 7384 } 7385 if (!a) { 7386 g = this.setGroupSort(g, i, h); 7387 this.setRowStyle(i, e); 7388 } 7389 d.appendChild(i); 7390 for (f = 0; f < e; f++) { 7391 if (b[f].position > c) { 7392 b[f].position--; 7393 } 7394 } 7395 } 7396 }, 7397 setRowStyle: function (b, a) { 7398 this.previous(b, a); 7399 b.cells[this.sorted.index].addClass(this.options.classCellSort); 7400 }, 7401 setGroupSort: function (b, c, a) { 7402 if (b == a.value) { 7403 c.removeClass(this.options.classGroupHead).addClass( 7404 this.options.classGroup 7405 ); 7406 } else { 7407 c.removeClass(this.options.classGroup).addClass( 7408 this.options.classGroupHead 7409 ); 7410 } 7411 return a.value; 7412 }, 7413 getParser: function () { 7414 var a = this.parsers[this.sorted.index]; 7415 return typeOf(a) == "string" ? HtmlTable.Parsers[a] : a; 7416 }, 7417 sort: function (c, b, e) { 7418 if (!this.head) { 7419 return; 7420 } 7421 if (!e) { 7422 this.clearSort(); 7423 this.setSortedState(c, b); 7424 this.setHeadSort(true); 7425 } 7426 var f = this.getParser(); 7427 if (!f) { 7428 return; 7429 } 7430 var a; 7431 if (!Browser.ie) { 7432 a = this.body.getParent(); 7433 this.body.dispose(); 7434 } 7435 var d = this.parseData(f).sort(function (h, g) { 7436 if (h.value === g.value) { 7437 return 0; 7438 } 7439 return h.value > g.value ? 1 : -1; 7440 }); 7441 if (this.sorted.reverse == (f == HtmlTable.Parsers["input-checked"])) { 7442 d.reverse(true); 7443 } 7444 this.setRowSort(d, e); 7445 if (a) { 7446 a.grab(this.body); 7447 } 7448 this.fireEvent("stateChanged"); 7449 return this.fireEvent("sort", [this.body, this.sorted.index]); 7450 }, 7451 parseData: function (a) { 7452 return Array.map( 7453 this.body.rows, 7454 function (d, b) { 7455 var c = a.convert.call(document.id(d.cells[this.sorted.index])); 7456 return { position: b, value: c }; 7457 }, 7458 this 7459 ); 7460 }, 7461 clearSort: function () { 7462 this.setHeadSort(false); 7463 this.body.getElements("td").removeClass(this.options.classCellSort); 7464 }, 7465 reSort: function () { 7466 if (this.sortEnabled) { 7467 this.sort.call(this, this.sorted.index, this.sorted.reverse); 7468 } 7469 return this; 7470 }, 7471 enableSort: function () { 7472 this.ElementCust.addClass(this.options.classSortable); 7473 this.attachSorts(true); 7474 this.setParsers(); 7475 this.sortEnabled = true; 7476 return this; 7477 }, 7478 disableSort: function () { 7479 this.ElementCust.removeClass(this.options.classSortable); 7480 this.attachSorts(false); 7481 this.sortSpans.each(function (a) { 7482 a.destroy(); 7483 }); 7484 this.sortSpans.empty(); 7485 this.sortEnabled = false;
7486 return this; 7487 }, 7488}); 7489HtmlTable.ParserPriority = [ 7490 "date", 7491 "input-checked", 7492 "input-value", 7493 "float", 7494 "number", 7495]; 7496HtmlTable.Parsers = { 7497 date: { 7498 match: /^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/, 7499 convert: function () { 7500 var a = Date.parse(this.get("text").stripTags()); 7501 return typeOf(a) == "date" ? a.format("db") : ""; 7502 }, 7503 type: "date", 7504 }, 7505 "input-checked": { 7506 match: / type="(radio|checkbox)" /, 7507 convert: function () { 7508 return this.getElement("input").checked; 7509 }, 7510 }, 7511 "input-value": { 7512 match: /<input/, 7513 convert: function () { 7514 return this.getElement("input").value; 7515 }, 7516 }, 7517 number: { 7518 match: /^\d+[^\d.,]*$/, 7519 convert: function () { 7520 return this.get("text").stripTags().toInt(); 7521 }, 7522 number: true, 7523 }, 7524 numberLax: { 7525 match: /^[^\d]+\d+$/, 7526 convert: function () { 7527 return this.get("text") 7528 .replace(/[^-?^0-9]/, "") 7529 .stripTags() 7530 .toInt(); 7531 }, 7532 number: true, 7533 }, 7534 float: { 7535 match: /^[\d]+\.[\d]+/, 7536 convert: function () { 7537 return this.get("text") 7538 .replace(/[^-?^\d.]/, "") 7539 .stripTags() 7540 .toFloat(); 7541 }, 7542 number: true, 7543 }, 7544 floatLax: { 7545 match: /^[^\d]+[\d]+\.[\d]+$/, 7546 convert: function () { 7547 return this.get("text") 7548 .replace(/[^-?^\d.]/, "") 7549 .stripTags(); 7550 }, 7551 number: true, 7552 }, 7553 string: { 7554 match: null, 7555 convert: function () { 7556 return this.get("text").stripTags().toLowerCase(); 7557 }, 7558 }, 7559 title: { 7560 match: null, 7561 convert: function () { 7562 return this.title; 7563 }, 7564 }, 7565}; 7566HtmlTable.defineParsers = function (a) { 7567 HtmlTable.Parsers = Object.append(HtmlTable.Parsers, a); 7568 for (var b in a) { 7569 HtmlTable.ParserPriority.unshift(b); 7570 } 7571}; 7572(function () { 7573 var a = (this.Keyboard = new Class({ 7574 Extends: Events, 7575 Implements: [Options], 7576 options: { 7577 defaultEventType: "keydown", 7578 active: false, 7579 manager: null, 7580 events: {}, 7581 nonParsedEvents: [ 7582 "activate", 7583 "deactivate", 7584 "onactivate", 7585 "ondeactivate", 7586 "changed", 7587 "onchanged", 7588 ], 7589 }, 7590 initialize: function (f) { 7591 if (f && f.manager) { 7592 this._manager = f.manager; 7593 delete f.manager; 7594 } 7595 this.setOptions(f); 7596 this._setup(); 7597 }, 7598 addEvent: function (h, g, f) { 7599 return this.parent( 7600 a.parse(h, this.options.defaultEventType, this.options.nonParsedEvents), 7601 g, 7602 f 7603 ); 7604 }, 7605 removeEvent: function (g, f) { 7606 return this.parent( 7607 a.parse(g, this.options.defaultEventType, this.options.nonParsedEvents), 7608 f 7609 ); 7610 }, 7611 toggleActive: function () { 7612 return this[this.isActive() ? "deactivate" : "activate"](); 7613 }, 7614 activate: function (f) { 7615 if (f) { 7616 if (f.isActive()) { 7617 return this; 7618 } 7619 if (this._activeKB && f != this._activeKB) { 7620 this.previous = this._activeKB; 7621 this.previous.fireEvent("deactivate"); 7622 } 7623 this._activeKB = f.fireEvent("activate"); 7624 a.manager.fireEvent("changed"); 7625 } else { 7626 if (this._manager) { 7627 this._manager.activate(this); 7628 } 7629 } 7630 return this; 7631 }, 7632 isActive: function () { 7633 return this._manager 7634 ? this._manager._activeKB == this 7635 : a.manager == this; 7636 }, 7637 deactivate: function (f) { 7638 if (f) { 7639 if (f === this._activeKB) { 7640 this._activeKB = null; 7641 f.fireEvent("deactivate"); 7642 a.manager.fireEvent("changed"); 7643 } 7644 } else { 7645 if (this._manager) { 7646 this._manager.deactivate(this); 7647 } 7648 } 7649 return this; 7650 }, 7651 relinquish: function () { 7652 if (this.isActive() && this._manager && this._manager.previous) { 7653 this._manager.activate(this._manager.previous); 7654 } else { 7655 this.deactivate(); 7656 } 7657 return this; 7658 }, 7659 manage: function (f) { 7660 if (f._manager) { 7661 f._manager.drop(f); 7662 } 7663 this._instances.push(f); 7664 f._manager = this; 7665 if (!this._activeKB) { 7666 this.activate(f); 7667 } 7668 return this; 7669 }, 7670 drop: function (f) { 7671 f.relinquish(); 7672 this._instances.erase(f); 7673 if (this._activeKB == f) { 7674 if (this.previous && this._instances.contains(this.previous)) { 7675 this.activate(this.previous); 7676 } else { 7677 this._activeKB = this._instances[0]; 7678 } 7679 } 7680 return this; 7681 }, 7682 trace: function () { 7683 a.trace(this); 7684 }, 7685 each: function (f) { 7686 a.each(this, f); 7687 }, 7688 _instances: [], 7689 _disable: function (f) { 7690 if (this._activeKB == f) { 7691 this._activeKB = null; 7692 } 7693 }, 7694 _setup: function () { 7695 this.addEvents(this.options.events); 7696 if (a.manager && !this._manager) { 7697 a.manager.manage(this); 7698 } 7699 if (this.options.active) { 7700 this.activate(); 7701 } else { 7702 this.relinquish(); 7703 } 7704 }, 7705 _handle: function (h, g) { 7706 if (h.preventKeyboardPropagation) { 7707 return; 7708 } 7709 var f = !!this._manager; 7710 if (f && this._activeKB) { 7711 this._activeKB._handle(h, g); 7712 if (h.preventKeyboardPropagation) { 7713 return; 7714 } 7715 } 7716 this.fireEvent(g, h); 7717 if (!f && this._activeKB) { 7718 this._activeKB._handle(h, g); 7719 } 7720 }, 7721 })); 7722 var b = {}; 7723 var c = ["shift", "control", "alt", "meta"]; 7724 var e = /^(?:shift|control|ctrl|alt|meta)$/; 7725 a.parse = function (h, g, k) { 7726 if (k && k.contains(h.toLowerCase())) { 7727 return h; 7728 } 7729 h = h.toLowerCase().replace(/^(keyup|keydown):/, function (m, l) { 7730 g = l; 7731 return ""; 7732 });
7733 if (!b[h]) { 7734 var f, 7735 j = {}; 7736 h.split("+").each(function (l) { 7737 if (e.test(l)) { 7738 j[l] = true; 7739 } else { 7740 f = l; 7741 } 7742 }); 7743 j.control = j.control || j.ctrl; 7744 var i = []; 7745 c.each(function (l) { 7746 if (j[l]) { 7747 i.push(l); 7748 } 7749 }); 7750 if (f) { 7751 i.push(f); 7752 } 7753 b[h] = i.join("+"); 7754 } 7755 return g + ":keys(" + b[h] + ")"; 7756 }; 7757 a.each = function (f, g) { 7758 var h = f || a.manager; 7759 while (h) { 7760 g.run(h); 7761 h = h._activeKB; 7762 } 7763 }; 7764 a.stop = function (f) { 7765 f.preventKeyboardPropagation = true; 7766 }; 7767 a.manager = new a({ active: true }); 7768 a.trace = function (f) { 7769 f = f || a.manager; 7770 var g = window.console && console.log; 7771 if (g) { 7772 console.log("the following items have focus: "); 7773 } 7774 a.each(f, function (h) { 7775 if (g) { 7776 console.log(document.id(h.widget) || h.wiget || h); 7777 } 7778 }); 7779 }; 7780 var d = function (g) { 7781 var f = []; 7782 c.each(function (h) { 7783 if (g[h]) { 7784 f.push(h); 7785 } 7786 }); 7787 if (!e.test(g.key)) { 7788 f.push(g.key); 7789 } 7790 a.manager._handle(g, g.type + ":keys(" + f.join("+") + ")"); 7791 }; 7792 document.addEvents({ keyup: d, keydown: d }); 7793})(); 7794Keyboard.prototype.options.nonParsedEvents.combine(["rebound", "onrebound"]); 7795Keyboard.implement({ 7796 addShortcut: function (b, a) { 7797 this._shortcuts = this._shortcuts || []; 7798 this._shortcutIndex = this._shortcutIndex || {}; 7799 a.getKeyboard = Function.from(this); 7800 a.name = b; 7801 this._shortcutIndex[b] = a; 7802 this._shortcuts.push(a); 7803 if (a.keys) { 7804 this.addEvent(a.keys, a.handler); 7805 } 7806 return this; 7807 }, 7808 addShortcuts: function (b) { 7809 for (var a in b) { 7810 this.addShortcut(a, b[a]); 7811 } 7812 return this; 7813 }, 7814 removeShortcut: function (b) { 7815 var a = this.getShortcut(b); 7816 if (a && a.keys) { 7817 this.removeEvent(a.keys, a.handler); 7818 delete this._shortcutIndex[b]; 7819 this._shortcuts.erase(a); 7820 } 7821 return this; 7822 }, 7823 removeShortcuts: function (a) { 7824 a.each(this.removeShortcut, this); 7825 return this; 7826 }, 7827 getShortcuts: function () { 7828 return this._shortcuts || []; 7829 }, 7830 getShortcut: function (a) { 7831 return (this._shortcutIndex || {})[a]; 7832 }, 7833}); 7834Keyboard.rebind = function (b, a) { 7835 Array.from(a).each(function (c) { 7836 c.getKeyboard().removeEvent(c.keys, c.handler); 7837 c.getKeyboard().addEvent(b, c.handler); 7838 c.keys = b; 7839 c.getKeyboard().fireEvent("rebound"); 7840 }); 7841}; 7842Keyboard.getActiveShortcuts = function (b) { 7843 var a = [], 7844 c = []; 7845 Keyboard.each(b, [].push.bind(a)); 7846 a.each(function (d) { 7847 c.extend(d.getShortcuts()); 7848 }); 7849 return c; 7850}; 7851Keyboard.getShortcut = function (c, b, d) { 7852 d = d || {}; 7853 var a = d.many ? [] : null, 7854 e = d.many 7855 ? function (g) { 7856 var f = g.getShortcut(c); 7857 if (f) { 7858 a.push(f); 7859 } 7860 } 7861 : function (f) { 7862 if (!a) { 7863 a = f.getShortcut(c); 7864 } 7865 }; 7866 Keyboard.each(b, e); 7867 return a; 7868}; 7869Keyboard.getShortcuts = function (b, a) { 7870 return Keyboard.getShortcut(b, a, { many: true }); 7871}; 7872HtmlTable = Class.refactor(HtmlTable, { 7873 options: { 7874 useKeyboard: true, 7875 classRowSelected: "table-tr-selected", 7876 classRowHovered: "table-tr-hovered", 7877 classSelectable: "table-selectable", 7878 shiftForMultiSelect: true, 7879 allowMultiSelect: true, 7880 selectable: false, 7881 selectHiddenRows: false, 7882 }, 7883 initialize: function () { 7884 this.previous.apply(this, arguments); 7885 if (this.occluded) { 7886 return this.occluded; 7887 } 7888 this.selectedRows = new Elements(); 7889 if (!this.bound) { 7890 this.bound = {}; 7891 } 7892 this.bound.mouseleave = this.mouseleave.bind(this); 7893 this.bound.clickRow = this.clickRow.bind(this); 7894 this.bound.activateKeyboard = function () { 7895 if (this.keyboard && this.selectEnabled) { 7896 this.keyboard.activate(); 7897 } 7898 }.bind(this); 7899 if (this.options.selectable) { 7900 this.enableSelect(); 7901 } 7902 }, 7903 empty: function () { 7904 this.selectNone(); 7905 return this.previous(); 7906 }, 7907 enableSelect: function () { 7908 this.selectEnabled = true; 7909 this.attachSelects(); 7910 this.ElementCust.addClass(this.options.classSelectable); 7911 return this; 7912 }, 7913 disableSelect: function () { 7914 this.selectEnabled = false;
7915 this.attachSelects(false); 7916 this.ElementCust.removeClass(this.options.classSelectable); 7917 return this; 7918 }, 7919 push: function () { 7920 var a = this.previous.apply(this, arguments); 7921 this.updateSelects(); 7922 return a; 7923 }, 7924 toggleRow: function (a) { 7925 return this[(this.isSelected(a) ? "de" : "") + "selectRow"](a); 7926 }, 7927 selectRow: function (b, a) { 7928 if (this.isSelected(b) || (!a && !this.body.getChildren().contains(b))) { 7929 return; 7930 } 7931 if (!this.options.allowMultiSelect) { 7932 this.selectNone(); 7933 } 7934 if (!this.isSelected(b)) { 7935 this.selectedRows.push(b); 7936 b.addClass(this.options.classRowSelected); 7937 this.fireEvent("rowFocus", [b, this.selectedRows]); 7938 this.fireEvent("stateChanged"); 7939 } 7940 this.focused = b; 7941 document.clearSelection(); 7942 return this; 7943 }, 7944 isSelected: function (a) { 7945 return this.selectedRows.contains(a); 7946 }, 7947 getSelected: function () { 7948 return this.selectedRows; 7949 }, 7950 getSelected: function () { 7951 return this.selectedRows; 7952 }, 7953 serialize: function () { 7954 var a = this.previous.apply(this, arguments) || {}; 7955 if (this.options.selectable) { 7956 a.selectedRows = this.selectedRows.map( 7957 function (b) { 7958 return Array.indexOf(this.body.rows, b); 7959 }.bind(this) 7960 ); 7961 } 7962 return a; 7963 }, 7964 restore: function (a) { 7965 if (this.options.selectable && a.selectedRows) { 7966 a.selectedRows.each( 7967 function (b) { 7968 this.selectRow(this.body.rows[b]); 7969 }.bind(this) 7970 ); 7971 } 7972 this.previous.apply(this, arguments); 7973 }, 7974 deselectRow: function (b, a) { 7975 if (!this.isSelected(b) || (!a && !this.body.getChildren().contains(b))) { 7976 return; 7977 } 7978 this.selectedRows = new Elements(Array.from(this.selectedRows).erase(b)); 7979 b.removeClass(this.options.classRowSelected); 7980 this.fireEvent("rowUnfocus", [b, this.selectedRows]); 7981 this.fireEvent("stateChanged"); 7982 return this; 7983 }, 7984 selectAll: function (a) { 7985 if (!a && !this.options.allowMultiSelect) { 7986 return; 7987 } 7988 this.selectRange(0, this.body.rows.length, a); 7989 return this; 7990 }, 7991 selectNone: function () { 7992 return this.selectAll(true); 7993 }, 7994 selectRange: function (b, a, f) { 7995 if (!this.options.allowMultiSelect && !f) { 7996 return; 7997 } 7998 var g = f ? "deselectRow" : "selectRow", 7999 e = Array.clone(this.body.rows); 8000 if (typeOf(b) == "ElementCust") { 8001 b = e.indexOf(b); 8002 } 8003 if (typeOf(a) == "ElementCust") { 8004 a = e.indexOf(a); 8005 } 8006 a = a < e.length - 1 ? a : e.length - 1; 8007 if (a < b) { 8008 var d = b; 8009 b = a; 8010 a = d; 8011 } 8012 for (var c = b; c <= a; c++) { 8013 if (this.options.selectHiddenRows || e[c].isDisplayed()) { 8014 this[g](e[c], true); 8015 } 8016 } 8017 return this; 8018 }, 8019 deselectRange: function (b, a) { 8020 this.selectRange(b, a, true); 8021 }, 8022 getSelected: function () { 8023 return this.selectedRows; 8024 }, 8025 enterRow: function (a) { 8026 if (this.hovered) { 8027 this.hovered = this.leaveRow(this.hovered); 8028 } 8029 this.hovered = a.addClass(this.options.classRowHovered); 8030 }, 8031 leaveRow: function (a) { 8032 a.removeClass(this.options.classRowHovered); 8033 }, 8034 updateSelects: function () { 8035 Array.each( 8036 this.body.rows, 8037 function (a) { 8038 var b = a.retrieve("binders"); 8039 if (!b && !this.selectEnabled) { 8040 return; 8041 } 8042 if (!b) { 8043 b = { 8044 mouseenter: this.enterRow.pass([a], this), 8045 mouseleave: this.leaveRow.pass([a], this), 8046 }; 8047 a.store("binders", b); 8048 } 8049 if (this.selectEnabled) { 8050 a.addEvents(b); 8051 } else { 8052 a.removeEvents(b); 8053 } 8054 }, 8055 this 8056 ); 8057 }, 8058 shiftFocus: function (b, a) { 8059 if (!this.focused) { 8060 return this.selectRow(this.body.rows[0], a); 8061 } 8062 var c = this.getRowByOffset(b, this.options.selectHiddenRows); 8063 if (c === null || this.focused == this.body.rows[c]) { 8064 return this; 8065 } 8066 this.toggleRow(this.body.rows[c], a); 8067 }, 8068 clickRow: function (a, b) { 8069 var c = 8070 (a.shift || a.meta || a.control) && this.options.shiftForMultiSelect; 8071 if ( 8072 !c && 8073 !(a.rightClick && this.isSelected(b) && this.options.allowMultiSelect) 8074 ) { 8075 this.selectNone(); 8076 } 8077 if (a.rightClick) { 8078 this.selectRow(b); 8079 } else { 8080 this.toggleRow(b); 8081 } 8082 if (a.shift) { 8083 this.selectRange( 8084 this.rangeStart || this.body.rows[0], 8085 b, 8086 this.rangeStart ? !this.isSelected(b) : true 8087 ); 8088 this.focused = b; 8089 } 8090 this.rangeStart = b; 8091 }, 8092 getRowByOffset: function (e, d) { 8093 if (!this.focused) { 8094 return 0; 8095 } 8096 var b = Array.indexOf(this.body.rows, this.focused); 8097 if ((b == 0 && e < 0) || (b == this.body.rows.length - 1 && e > 0)) { 8098 return null; 8099 } 8100 if (d) { 8101 b += e; 8102 } else { 8103 var a = 0, 8104 c = 0; 8105 if (e > 0) { 8106 while (c < e && b < this.body.rows.length - 1) { 8107 if (this.body.rows[++b].isDisplayed()) { 8108 c++; 8109 } 8110 } 8111 } else { 8112 while (c > e && b > 0) { 8113 if (this.body.rows[--b].isDisplayed()) { 8114 c--; 8115 } 8116 } 8117 } 8118 } 8119 return b; 8120 }, 8121 attachSelects: function (d) { 8122 d = d != null ? d : true; 8123 var g = d ? "addEvents" : "removeEvents"; 8124 this.ElementCust[g]({ 8125 mouseleave: this.bound.mouseleave, 8126 click: this.bound.activateKeyboard, 8127 }); 8128 this.body[g]({ 8129 "click:relay(tr)": this.bound.clickRow, 8130 "contextmenu:relay(tr)": this.bound.clickRow, 8131 }); 8132 if (this.options.useKeyboard || this.keyboard) { 8133 if (!this.keyboard) { 8134 this.keyboard = new Keyboard(); 8135 } 8136 if (!this.selectKeysDefined) { 8137 this.selectKeysDefined = true; 8138 var f, e; 8139 var c = function (i) { 8140 var h = function (j) { 8141 clearTimeout(f); 8142 j.preventDefault(); 8143 var k = 8144 this.body.rows[ 8145 this.getRowByOffset(i, this.options.selectHiddenRows) 8146 ]; 8147 if (j.shift && k && this.isSelected(k)) { 8148 this.deselectRow(this.focused); 8149 this.focused = k; 8150 } else { 8151 if (k && (!this.options.allowMultiSelect || !j.shift)) { 8152 this.selectNone(); 8153 } 8154 this.shiftFocus(i, j); 8155 } 8156 if (e) { 8157 f = h.delay(100, this, j); 8158 } else { 8159 f = function () { 8160 e = true; 8161 h(j); 8162 }.delay(400); 8163 } 8164 }.bind(this); 8165 return h; 8166 }.bind(this); 8167 var b = function () { 8168 clearTimeout(f); 8169 e = false;
8170 }; 8171 this.keyboard.addEvents({ 8172 "keydown:shift+up": c(-1), 8173 "keydown:shift+down": c(1), 8174 "keyup:shift+up": b, 8175 "keyup:shift+down": b, 8176 "keyup:up": b, 8177 "keyup:down": b, 8178 }); 8179 var a = ""; 8180 if ( 8181 this.options.allowMultiSelect && 8182 this.options.shiftForMultiSelect && 8183 this.options.useKeyboard 8184 ) { 8185 a = " (Shift multi-selects)."; 8186 } 8187 this.keyboard.addShortcuts({ 8188 "Select Previous Row": { 8189 keys: "up", 8190 shortcut: "up arrow", 8191 handler: c(-1), 8192 description: "Select the previous row in the table." + a, 8193 }, 8194 "Select Next Row": { 8195 keys: "down", 8196 shortcut: "down arrow", 8197 handler: c(1), 8198 description: "Select the next row in the table." + a, 8199 }, 8200 }); 8201 } 8202 this.keyboard[d ? "activate" : "deactivate"](); 8203 } 8204 this.updateSelects(); 8205 }, 8206 mouseleave: function () { 8207 if (this.hovered) { 8208 this.leaveRow(this.hovered); 8209 } 8210 }, 8211}); 8212var Scroller = new Class({ 8213 Implements: [Events, Options], 8214 options: { 8215 area: 20, 8216 velocity: 1, 8217 onChange: function (a, b) { 8218 this.ElementCust.scrollTo(a, b); 8219 }, 8220 fps: 50, 8221 }, 8222 initialize: function (b, a) { 8223 this.setOptions(a); 8224 this.ElementCust = document.id(b); 8225 this.docBody = document.id(this.ElementCust.getDocument().body); 8226 this.listener = 8227 typeOf(this.ElementCust) != "ElementCust" ? this.docBody : this.ElementCust; 8228 this.timer = null; 8229 this.bound = { 8230 attach: this.attach.bind(this), 8231 detach: this.detach.bind(this), 8232 getCoords: this.getCoords.bind(this), 8233 }; 8234 }, 8235 start: function () { 8236 this.listener.addEvents({ 8237 mouseover: this.bound.attach, 8238 mouseleave: this.bound.detach, 8239 }); 8240 return this; 8241 }, 8242 stop: function () { 8243 this.listener.removeEvents({ 8244 mouseover: this.bound.attach, 8245 mouseleave: this.bound.detach, 8246 }); 8247 this.detach(); 8248 this.timer = clearInterval(this.timer); 8249 return this; 8250 }, 8251 attach: function () { 8252 this.listener.addEvent("mousemove", this.bound.getCoords); 8253 }, 8254 detach: function () { 8255 this.listener.removeEvent("mousemove", this.bound.getCoords); 8256 this.timer = clearInterval(this.timer); 8257 }, 8258 getCoords: function (a) { 8259 this.page = this.listener.get("tag") == "body" ? a.client : a.page; 8260 if (!this.timer) { 8261 this.timer = this.scroll.periodical( 8262 Math.round(1000 / this.options.fps), 8263 this 8264 ); 8265 } 8266 }, 8267 scroll: function () { 8268 var c = this.ElementCust.getSize(), 8269 a = this.ElementCust.getScroll(), 8270 h = 8271 this.ElementCust != this.docBody 8272 ? this.ElementCust.getOffsets() 8273 : { x: 0, y: 0 }, 8274 d = this.ElementCust.getScrollSize(), 8275 g = { x: 0, y: 0 }, 8276 e = this.options.area.top || this.options.area, 8277 b = this.options.area.bottom || this.options.area; 8278 for (var f in this.page) { 8279 if (this.page[f] < e + h[f] && a[f] != 0) { 8280 g[f] = (this.page[f] - e - h[f]) * this.options.velocity; 8281 } else { 8282 if (this.page[f] + b > c[f] + h[f] && a[f] + c[f] != d[f]) { 8283 g[f] = (this.page[f] - c[f] + b - h[f]) * this.options.velocity; 8284 } 8285 } 8286 g[f] = g[f].round(); 8287 } 8288 if (g.y || g.x) { 8289 this.fireEvent("change", [a.x + g.x, a.y + g.y]); 8290 } 8291 }, 8292}); 8293(function () { 8294 var a = function (c, b) { 8295 return c ? (typeOf(c) == "function" ? c(b) : b.get(c)) : ""; 8296 }; 8297 this.Tips = new Class({ 8298 Implements: [Events, Options], 8299 options: { 8300 onShow: function () { 8301 this.tip.setStyle("display", "block"); 8302 }, 8303 onHide: function () { 8304 this.tip.setStyle("display", "none"); 8305 }, 8306 title: "title", 8307 text: function (b) { 8308 return b.get("rel") || b.get("href"); 8309 }, 8310 showDelay: 100, 8311 hideDelay: 100, 8312 className: "tip-wrap", 8313 offset: { x: 16, y: 16 }, 8314 windowPadding: { x: 0, y: 0 }, 8315 fixed: false, 8316 waiAria: true, 8317 }, 8318 initialize: function () { 8319 var b = Array.link(arguments, { 8320 options: Type.isObject, 8321 elements: function (c) { 8322 return c != null; 8323 }, 8324 }); 8325 this.setOptions(b.options); 8326 if (b.elements) { 8327 this.attach(b.elements); 8328 } 8329 this.container = new ElementCust("div", { class: "tip" }); 8330 if (this.options.id) { 8331 this.container.set("id", this.options.id); 8332 if (this.options.waiAria) { 8333 this.attachWaiAria(); 8334 } 8335 } 8336 }, 8337 toElement: function () { 8338 if (this.tip) { 8339 return this.tip; 8340 } 8341 this.tip = new ElementCust("div", { 8342 class: this.options.className, 8343 styles: { position: "absolute", top: 0, left: 0 }, 8344 }).adopt( 8345 new ElementCust("div", { class: "tip-top" }), 8346 this.container, 8347 new ElementCust("div", { class: "tip-bottom" }) 8348 ); 8349 return this.tip; 8350 }, 8351 attachWaiAria: function () { 8352 var b = this.options.id; 8353 this.container.set("role", "tooltip"); 8354 if (!this.waiAria) { 8355 this.waiAria = { 8356 show: function (c) { 8357 if (b) { 8358 c.set("aria-describedby", b); 8359 } 8360 this.container.set("aria-hidden", "false"); 8361 }, 8362 hide: function (c) { 8363 if (b) { 8364 c.erase("aria-describedby"); 8365 } 8366 this.container.set("aria-hidden", "true"); 8367 }, 8368 }; 8369 } 8370 this.addEvents(this.waiAria); 8371 }, 8372 detachWaiAria: function () { 8373 if (this.waiAria) { 8374 this.container.erase("role"); 8375 this.container.erase("aria-hidden"); 8376 this.removeEvents(this.waiAria); 8377 } 8378 }, 8379 attach: function (b) { 8380 $$(b).each(function (d) { 8381 var f = a(this.options.title, d), 8382 e = a(this.options.text, d); 8383 d.set("title", "").store("tip:native", f).retrieve("tip:title", f); 8384 d.retrieve("tip:text", e); 8385 this.fireEvent("attach", [d]); 8386 var c = ["enter", "leave"]; 8387 if (!this.options.fixed) { 8388 c.push("move"); 8389 } 8390 c.each(function (h) { 8391 var g = d.retrieve("tip:" + h); 8392 if (!g) { 8393 g = function (i) { 8394 this["ElementCust" + h.capitalize()].apply(this, [i, d]); 8395 }.bind(this); 8396 } 8397 d.store("tip:" + h, g).addEvent("mouse" + h, g); 8398 }, this); 8399 }, this); 8400 return this; 8401 }, 8402 detach: function (b) { 8403 $$(b).each(function (d) { 8404 ["enter", "leave", "move"].each(function (e) { 8405 d.removeEvent("mouse" + e, d.retrieve("tip:" + e)).eliminate( 8406 "tip:" + e 8407 ); 8408 }); 8409 this.fireEvent("detach", [d]); 8410 if (this.options.title == "title") { 8411 var c = d.retrieve("tip:native"); 8412 if (c) { 8413 d.set("title", c); 8414 } 8415 } 8416 }, this); 8417 return this; 8418 }, 8419 elementEnter: function (c, b) { 8420 clearTimeout(this.timer); 8421 this.timer = function () { 8422 this.container.empty(); 8423 ["title", "text"].each(function (e) { 8424 var d = b.retrieve("tip:" + e);
8425 var f = (this["_" + e + "ElementCust"] = new ElementCust("div", { 8426 class: "tip-" + e, 8427 }).inject(this.container)); 8428 if (d) { 8429 this.fill(f, d); 8430 } 8431 }, this); 8432 this.show(b); 8433 this.position(this.options.fixed ? { page: b.getPosition() } : c); 8434 }.delay(this.options.showDelay, this); 8435 }, 8436 elementLeave: function (c, b) { 8437 clearTimeout(this.timer); 8438 this.timer = this.hide.delay(this.options.hideDelay, this, b); 8439 this.fireForParent(c, b); 8440 }, 8441 setTitle: function (b) { 8442 if (this._titleElement) { 8443 this._titleElement.empty(); 8444 this.fill(this._titleElement, b); 8445 } 8446 return this; 8447 }, 8448 setText: function (b) { 8449 if (this._textElement) { 8450 this._textElement.empty(); 8451 this.fill(this._textElement, b); 8452 } 8453 return this; 8454 }, 8455 fireForParent: function (c, b) { 8456 b = b.getParent(); 8457 if (!b || b == document.body) { 8458 return; 8459 } 8460 if (b.retrieve("tip:enter")) { 8461 b.fireEvent("mouseenter", c); 8462 } else { 8463 this.fireForParent(c, b); 8464 } 8465 }, 8466 elementMove: function (c, b) { 8467 this.position(c); 8468 }, 8469 position: function (f) { 8470 if (!this.tip) { 8471 document.id(this); 8472 } 8473 var c = window.getSize(), 8474 b = window.getScroll(), 8475 g = { x: this.tip.offsetWidth, y: this.tip.offsetHeight }, 8476 d = { x: "left", y: "top" }, 8477 e = { y: false, x2: false, y2: false, x: false }, 8478 h = {}; 8479 for (var i in d) { 8480 h[d[i]] = f.page[i] + this.options.offset[i]; 8481 if (h[d[i]] < 0) { 8482 e[i] = true; 8483 } 8484 if (h[d[i]] + g[i] - b[i] > c[i] - this.options.windowPadding[i]) { 8485 h[d[i]] = f.page[i] - this.options.offset[i] - g[i]; 8486 e[i + "2"] = true; 8487 } 8488 } 8489 this.fireEvent("bound", e); 8490 this.tip.setStyles(h); 8491 }, 8492 fill: function (b, c) { 8493 if (typeof c == "string") { 8494 b.set("html", c); 8495 } else { 8496 b.adopt(c); 8497 } 8498 }, 8499 show: function (b) { 8500 if (!this.tip) { 8501 document.id(this); 8502 } 8503 if (!this.tip.getParent()) { 8504 this.tip.inject(document.body); 8505 } 8506 this.fireEvent("show", [this.tip, b]); 8507 }, 8508 hide: function (b) { 8509 if (!this.tip) { 8510 document.id(this); 8511 } 8512 this.fireEvent("hide", [this.tip, b]); 8513 }, 8514 }); 8515})(); 8516(function () { 8517 var a = { json: JSON.decode }; 8518 Locale.Set.defineParser = function (b, c) { 8519 a[b] = c; 8520 }; 8521 Locale.Set.from = function (d, c) { 8522 if (instanceOf(d, Locale.Set)) { 8523 return d; 8524 } 8525 if (!c && typeOf(d) == "string") { 8526 c = "json"; 8527 } 8528 if (a[c]) { 8529 d = a[c](d); 8530 } 8531 var b = new Locale.Set(); 8532 b.sets = d.sets || {}; 8533 if (d.inherits) { 8534 b.inherits.locales = Array.from(d.inherits.locales); 8535 b.inherits.sets = d.inherits.sets || {}; 8536 } 8537 return b; 8538 }; 8539})(); 8540Locale.define("ar", "Date", { 8541 dateOrder: ["date", "month", "year"], 8542 shortDate: "%d/%m/%Y", 8543 shortTime: "%H:%M", 8544}); 8545Locale.define("ar", "FormValidator", { 8546 required: "ÙØ°Ø§ Ø§ÙØÙÙ Ù Ø·ÙÙØ¨.", 8547 minLength: "رجاء٠إدخا٠{minLength} Ø£ØØ±Ù عÙÙ Ø§ÙØ£ÙÙ (ت٠إدخا٠{length} Ø£ØØ±Ù).", 8548 maxLength: 8549 "Ø§ÙØ±Ø¬Ø§Ø¡ Ø¹Ø¯Ù Ø¥Ø¯Ø®Ø§Ù Ø£ÙØ«Ø± Ù Ù {maxLength} Ø£ØØ±Ù (ت٠إدخا٠{length} Ø£ØØ±Ù).", 8550 integer: 8551 "Ø§ÙØ±Ø¬Ø§Ø¡ إدخا٠عدد صØÙØ ÙÙ ÙØ°Ø§ Ø§ÙØÙÙ. أ٠رÙÙ Ø°Ù ÙØ³Ø± عشر٠أ٠٠ئÙÙ (٠ثا٠1.25 ) ØºÙØ± Ù Ø³Ù ÙØ.", 8552 numeric: 8553 'Ø§ÙØ±Ø¬Ø§Ø¡ إدخا٠ÙÙ٠رÙÙ ÙØ© ÙÙ ÙØ°Ø§ Ø§ÙØÙÙ (٠ثا٠"1" Ø£Ù "1.1" Ø£Ù "-1" Ø£Ù "-1.1").', 8554 digits: 8555 "Ø§ÙØ±Ø¬Ø§Ø¡ أستخدا٠ÙÙ٠رÙÙ ÙØ© ÙØ¹Ùا٠ات ترÙÙÙ ÙØ© ÙÙØ· ÙÙ ÙØ°Ø§ Ø§ÙØÙÙ (٠ثاÙ, رÙÙ ÙØ§ØªÙ ٠ع ÙÙØ·Ø© Ø£Ù Ø´ØØ·Ø©)", 8556 alpha: 8557 "Ø§ÙØ±Ø¬Ø§Ø¡ Ø£Ø³ØªØ®Ø¯Ø§Ù Ø£ØØ±Ù ÙÙØ· (ا-Ù) ÙÙ ÙØ°Ø§ Ø§ÙØÙÙ. Ø£Ù ÙØ±Ø§ØºØ§Øª Ø£Ù Ø¹ÙØ§Ù ات ØºÙØ± Ù Ø³Ù ÙØØ©.", 8558 alphanum: 8559 "Ø§ÙØ±Ø¬Ø§Ø¡ Ø£Ø³ØªØ®Ø¯Ø§Ù Ø£ØØ±Ù ÙÙØ· (ا-Ù) Ø£Ù Ø£Ø±ÙØ§Ù (0-9) ÙÙØ· ÙÙ ÙØ°Ø§ Ø§ÙØÙÙ. Ø£Ù ÙØ±Ø§ØºØ§Øª Ø£Ù Ø¹ÙØ§Ù ات ØºÙØ± Ù Ø³Ù ÙØØ©.", 8560 dateSuchAs: "Ø§ÙØ±Ø¬Ø§Ø¡ Ø¥Ø¯Ø®Ø§Ù ØªØ§Ø±ÙØ® صØÙØ ÙØ§ÙتاÙÙ {date}", 8561 dateInFormatMDY: "Ø§ÙØ±Ø¬Ø§Ø¡ Ø¥Ø¯Ø®Ø§Ù ØªØ§Ø±ÙØ® صØÙØ (٠ثاÙ, 31-12-1999)", 8562 email: "Ø§ÙØ±Ø¬Ø§Ø¡ Ø¥Ø¯Ø®Ø§Ù Ø¨Ø±ÙØ¯ Ø¥ÙÙØªØ±ÙÙ٠صØÙØ.", 8563 url: "Ø§ÙØ±Ø¬Ø§Ø¡ إدخا٠عÙÙØ§Ù Ø¥ÙÙØªØ±ÙÙ٠صØÙØ Ù Ø«Ù http://www.example.com", 8564 currencyDollar: "Ø§ÙØ±Ø¬Ø§Ø¡ إدخا٠ÙÙÙ Ø© $ صØÙØØ©. ٠ثاÙ, 100.00$", 8565 oneRequired: "Ø§ÙØ±Ø¬Ø§Ø¡ إدخا٠ÙÙÙ Ø© ÙÙ Ø£ØØ¯ ÙØ°Ù Ø§ÙØÙÙ٠عÙÙ Ø§ÙØ£ÙÙ.", 8566 errorPrefix: "خطأ: ", 8567 warningPrefix: "ØªØØ°Ùر: ", 8568}); 8569Locale.define("ca-CA", "Date", { 8570 months: [ 8571 "Gener", 8572 "Febrer", 8573 "Març", 8574 "Abril", 8575 "Maig", 8576 "Juny", 8577 "Juli", 8578 "Agost", 8579 "Setembre", 8580 "Octubre", 8581 "Novembre", 8582 "Desembre", 8583 ], 8584 months_abbr: [ 8585 "gen.", 8586 "febr.", 8587 "març", 8588 "abr.", 8589 "maig", 8590 "juny", 8591 "jul.", 8592 "ag.", 8593 "set.", 8594 "oct.", 8595 "nov.", 8596 "des.", 8597 ], 8598 days: [ 8599 "Diumenge", 8600 "Dilluns", 8601 "Dimarts", 8602 "Dimecres", 8603 "Dijous", 8604 "Divendres", 8605 "Dissabte", 8606 ], 8607 days_abbr: ["dg", "dl", "dt", "dc", "dj", "dv", "ds"], 8608 dateOrder: ["date", "month", "year"], 8609 shortDate: "%d/%m/%Y", 8610 shortTime: "%H:%M", 8611 AM: "AM", 8612 PM: "PM", 8613 firstDayOfWeek: 0, 8614 ordinal: "", 8615 lessThanMinuteAgo: "fa menys d`un minut", 8616 minuteAgo: "fa un minut", 8617 minutesAgo: "fa {delta} minuts", 8618 hourAgo: "fa un hora", 8619 hoursAgo: "fa unes {delta} hores", 8620 dayAgo: "fa un dia", 8621 daysAgo: "fa {delta} dies", 8622 lessThanMinuteUntil: "menys d`un minut des d`ara", 8623 minuteUntil: "un minut des d`ara", 8624 minutesUntil: "{delta} minuts des d`ara", 8625 hourUntil: "un hora des d`ara", 8626 hoursUntil: "unes {delta} hores des d`ara", 8627 dayUntil: "1 dia des d`ara", 8628 daysUntil: "{delta} dies des d`ara", 8629}); 8630Locale.define("ca-CA", "FormValidator", { 8631 required: "Aquest camp es obligatori.", 8632 minLength: 8633 "Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).", 8634 maxLength: 8635 "Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).", 8636 integer: 8637 "Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.", 8638 numeric: 8639 'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").', 8640 digits: 8641 "Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).", 8642 alpha: 8643 "Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admitei
8643xen espais ni altres caracters.", 8644 alphanum: 8645 "Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.", 8646 dateSuchAs: "Per favor introdueix una data valida com {date}", 8647 dateInFormatMDY: 8648 'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")', 8649 email: 8650 'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "[email protected]".', 8651 url: "Per favor introdueix una URL valida com http://www.example.com.", 8652 currencyDollar: 8653 "Per favor introdueix una quantitat valida de â¬. Per exemple â¬100,00 .", 8654 oneRequired: 8655 "Per favor introdueix alguna cosa per al menys una d´aquestes entrades.", 8656 errorPrefix: "Error: ", 8657 warningPrefix: "Avis: ", 8658 noSpace: "No poden haver espais en aquesta entrada.", 8659 reqChkByNode: "No hi han elements seleccionats.", 8660 requiredChk: "Aquest camp es obligatori.", 8661 reqChkByName: "Per favor selecciona una {label}.", 8662 match: "Aquest camp necessita coincidir amb el camp {matchName}", 8663 startDate: "la data de inici", 8664 endDate: "la data de fi", 8665 currendDate: "la data actual", 8666 afterDate: "La data deu ser igual o posterior a {label}.", 8667 beforeDate: "La data deu ser igual o anterior a {label}.", 8668 startMonth: "Per favor selecciona un mes d´orige", 8669 sameMonth: 8670 "Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra.", 8671}); 8672(function () { 8673 var a = function (e, d, c, b) { 8674 if (e == 1) { 8675 return d; 8676 } else { 8677 if (e == 2 || e == 3 || e == 4) { 8678 return c; 8679 } else { 8680 return b; 8681 } 8682 } 8683 }; 8684 Locale.define("cs-CZ", "Date", { 8685 months: [ 8686 "Leden", 8687 "Ãnor", 8688 "BÅezen", 8689 "Duben", 8690 "KvÄten", 8691 "Äerven", 8692 "Äervenec", 8693 "Srpen", 8694 "ZáÅÃ", 8695 "ÅÃjen", 8696 "Listopad", 8697 "Prosinec", 8698 ], 8699 months_abbr: [ 8700 "ledna", 8701 "února", 8702 "bÅezna", 8703 "dubna", 8704 "kvÄtna", 8705 "Äervna", 8706 "Äervence", 8707 "srpna", 8708 "záÅÃ", 8709 "ÅÃjna", 8710 "listopadu", 8711 "prosince", 8712 ], 8713 days: [ 8714 "NedÄle", 8715 "PondÄlÃ", 8716 "Ãterý", 8717 "StÅeda", 8718 "Ätvrtek", 8719 "Pátek", 8720 "Sobota", 8721 ], 8722 days_abbr: ["ne", "po", "út", "st", "Ät", "pá", "so"], 8723 dateOrder: ["date", "month", "year"], 8724 shortDate: "%d.%m.%Y", 8725 shortTime: "%H:%M", 8726 AM: "dop.", 8727 PM: "odp.", 8728 firstDayOfWeek: 1, 8729 ordinal: ".", 8730 lessThanMinuteAgo: "pÅed chvÃlÃ", 8731 minuteAgo: "pÅibližnÄ pÅed minutou", 8732 minutesAgo: function (b) { 8733 return "pÅed {delta} " + a(b, "minutou", "minutami", "minutami"); 8734 }, 8735 hourAgo: "pÅibližnÄ pÅed hodinou", 8736 hoursAgo: function (b) { 8737 return "pÅed {delta} " + a(b, "hodinou", "hodinami", "hodinami"); 8738 }, 8739 dayAgo: "pÅed dnem", 8740 daysAgo: function (b) { 8741 return "pÅed {delta} " + a(b, "dnem", "dny", "dny"); 8742 }, 8743 weekAgo: "pÅed týdnem", 8744 weeksAgo: function (b) { 8745 return "pÅed {delta} " + a(b, "týdnem", "týdny", "týdny"); 8746 }, 8747 monthAgo: "pÅed mÄsÃcem", 8748 monthsAgo: function (b) { 8749 return "pÅed {delta} " + a(b, "mÄsÃcem", "mÄsÃci", "mÄsÃci"); 8750 }, 8751 yearAgo: "pÅed rokem", 8752 yearsAgo: function (b) { 8753 return "pÅed {delta} " + a(b, "rokem", "lety", "lety"); 8754 }, 8755 lessThanMinuteUntil: "za chvÃli", 8756 minuteUntil: "pÅibližnÄ za minutu", 8757 minutesUntil: function (b) { 8758 return "za {delta} " + a(b, "minutu", "minuty", "minut"); 8759 }, 8760 hourUntil: "pÅibližnÄ za hodinu", 8761 hoursUntil: function (b) { 8762 return "za {delta} " + a(b, "hodinu", "hodiny", "hodin"); 8763 }, 8764 dayUntil: "za den", 8765 daysUntil: function (b) { 8766 return "za {delta} " + a(b, "den", "dny", "dnů"); 8767 }, 8768 weekUntil: "za týden", 8769 weeksUntil: function (b) { 8770 return "za {delta} " + a(b, "týden", "týdny", "týdnů"); 8771 }, 8772 monthUntil: "za mÄsÃc", 8773 monthsUntil: function (b) { 8774 return "za {delta} " + a(b, "mÄsÃc", "mÄsÃce", "mÄsÃců"); 8775 }, 8776 yearUntil: "za rok", 8777 yearsUntil: function (b) { 8778 return "za {delta} " + a(b, "rok", "roky", "let"); 8779 }, 8780 }); 8781})(); 8782Locale.define("cs-CZ", "FormValidator", { 8783 required: "Tato položka je povinná.", 8784 minLength: 8785 "Zadejte prosÃm alespoÅ {minLength} znaků (napsáno {length} znaků).", 8786 maxLength: 8787 "Zadejte prosÃm ménÄ než {maxLength} znaků (nápsáno {length} znaků).", 8788 integer: 8789 "Zadejte prosÃm celé ÄÃslo. Desetinná ÄÃsla (napÅ. 1.25) nejsou povolena.", 8790 numeric: 8791 'Zadejte jen ÄÃselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").', 8792 digits: 8793 "Zadejte prosÃm pouze ÄÃsla a interpunkÄnà znaménka(napÅÃklad telefonnà ÄÃslo s pomlÄkami nebo teÄkami je povoleno).", 8794 alpha:
8795 "Zadejte prosÃm pouze pÃsmena (a-z). Mezery nebo jiné znaky nejsou povoleny.", 8796 alphanum: 8797 "Zadejte prosÃm pouze pÃsmena (a-z) nebo ÄÃslice (0-9). Mezery nebo jiné znaky nejsou povoleny.", 8798 dateSuchAs: "Zadejte prosÃm platné datum jako {date}", 8799 dateInFormatMDY: 8800 'Zadejte prosÃm platné datum jako MM / DD / RRRR (tj. "12/31/1999")', 8801 email: 8802 'Zadejte prosÃm platnou e-mailovou adresu. NapÅÃklad "[email protected]".', 8803 url: "Zadejte prosÃm platnou URL adresu jako http://www.example.com.", 8804 currencyDollar: "Zadejte prosÃm platnou Äástku. NapÅÃklad $100.00.", 8805 oneRequired: "Zadejte prosÃm alespoÅ jednu hodnotu pro tyto položky.", 8806 errorPrefix: "Chyba: ", 8807 warningPrefix: "UpozornÄnÃ: ", 8808 noSpace: "V této položce nejsou povoleny mezery", 8809 reqChkByNode: "Nejsou vybrány žádné položky.", 8810 requiredChk: "Tato položka je vyžadována.", 8811 reqChkByName: "ProsÃm vyberte {label}.", 8812 match: "Tato položka se musà shodovat s položkou {matchName}", 8813 startDate: "datum zahájenÃ", 8814 endDate: "datum ukonÄenÃ", 8815 currendDate: "aktuálnà datum", 8816 afterDate: "Datum by mÄlo být stejné nebo vÄtšà než {label}.", 8817 beforeDate: "Datum by mÄlo být stejné nebo menšà než {label}.", 8818 startMonth: "Vyberte poÄáteÄnà mÄsÃc.", 8819 sameMonth: 8820 "Tyto dva datumy musà být ve stejném mÄsÃci - zmÄÅte jeden z nich.", 8821 creditcard: 8822 "Zadané ÄÃslo kreditnà karty je neplatné. ProsÃm opravte ho. Bylo zadáno {length} ÄÃsel.", 8823}); 8824Locale.define("da-DK", "Date", { 8825 months: [ 8826 "Januar", 8827 "Februar", 8828 "Marts", 8829 "April", 8830 "Maj", 8831 "Juni", 8832 "Juli", 8833 "August", 8834 "September", 8835 "Oktober", 8836 "November", 8837 "December", 8838 ], 8839 months_abbr: [ 8840 "jan.", 8841 "feb.", 8842 "mar.", 8843 "apr.", 8844 "maj.", 8845 "jun.", 8846 "jul.", 8847 "aug.", 8848 "sep.", 8849 "okt.", 8850 "nov.", 8851 "dec.", 8852 ], 8853 days: [ 8854 "Søndag", 8855 "Mandag", 8856 "Tirsdag", 8857 "Onsdag", 8858 "Torsdag", 8859 "Fredag", 8860 "Lørdag", 8861 ], 8862 days_abbr: ["søn", "man", "tir", "ons", "tor", "fre", "lør"], 8863 dateOrder: ["date", "month", "year"], 8864 shortDate: "%d-%m-%Y", 8865 shortTime: "%H:%M", 8866 AM: "AM", 8867 PM: "PM", 8868 firstDayOfWeek: 1, 8869 ordinal: ".", 8870 lessThanMinuteAgo: "mindre end et minut siden", 8871 minuteAgo: "omkring et minut siden", 8872 minutesAgo: "{delta} minutter siden", 8873 hourAgo: "omkring en time siden", 8874 hoursAgo: "omkring {delta} timer siden", 8875 dayAgo: "1 dag siden", 8876 daysAgo: "{delta} dage siden", 8877 weekAgo: "1 uge siden", 8878 weeksAgo: "{delta} uger siden", 8879 monthAgo: "1 mÃ¥ned siden", 8880 monthsAgo: "{delta} mÃ¥neder siden", 8881 yearAgo: "1 Ã¥r siden", 8882 yearsAgo: "{delta} Ã¥r siden", 8883 lessThanMinuteUntil: "mindre end et minut fra nu", 8884 minuteUntil: "omkring et minut fra nu", 8885 minutesUntil: "{delta} minutter fra nu", 8886 hourUntil: "omkring en time fra nu", 8887 hoursUntil: "omkring {delta} timer fra nu", 8888 dayUntil: "1 dag fra nu", 8889 daysUntil: "{delta} dage fra nu", 8890 weekUntil: "1 uge fra nu", 8891 weeksUntil: "{delta} uger fra nu", 8892 monthUntil: "1 mÃ¥ned fra nu", 8893 monthsUntil: "{delta} mÃ¥neder fra nu", 8894 yearUntil: "1 Ã¥r fra nu", 8895 yearsUntil: "{delta} Ã¥r fra nu", 8896}); 8897Locale.define("da-DK", "FormValidator", { 8898 required: "Feltet skal udfyldes.", 8899 minLength: "Skriv mindst {minLength} tegn (du skrev {length} tegn).", 8900 maxLength: "Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).", 8901 integer: 8902 "Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.", 8903 numeric: 8904 'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").', 8905 digits: 8906 "Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).", 8907 alpha: 8908 "Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.", 8909 alphanum: 8910 "Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.", 8911 dateSuchAs: "Skriv en gyldig dato som {date}", 8912 dateInFormatMDY: 'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")', 8913 email: 'Skriv en gyldig e-mail adresse. F.eks "[email protected]".', 8914 url: 'Skriv en gyldig URL adresse. F.eks "http://www.example.com".', 8915 currencyDollar: "Skriv et gldigt beløb. F.eks Kr.100.00 .", 8916 oneRequired: "Et eller flere af felterne i denne formular skal udfyldes.", 8917 errorPrefix: "Fejl: ", 8918 warningPrefix: "Advarsel: ", 8919 noSpace: "Der mÃ¥ ikke benyttes mellemrum i dette felt.", 8920 reqChkByNode: "Foretag et valg.", 8921 requiredChk: "Dette felt skal udfyldes.", 8922 reqChkByName: "Vælg en {label}.", 8923 match: "Dette felt skal matche {matchName} feltet", 8924 startDate: "start dato", 8925 endDate: "slut dato", 8926 currendDate: "dags dato", 8927 afterDate: "Datoen skal være større end eller lig med {label}.", 8928 beforeDate: "Datoen skal være mindre end eller lig med {label}.", 8929 startMonth: "Vælg en start mÃ¥ned", 8930 sameMonth: "De valgte datoer skal være i samme mÃ¥ned - skift en af dem.", 8931}); 8932Locale.define("de-DE", "Date", { 8933 months: [ 8934 "Januar", 8935 "Februar", 8936 "März", 8937 "April", 8938 "Mai", 8939 "Juni", 8940 "Juli", 8941 "August", 8942 "September", 8943 "Oktober", 8944 "November", 8945 "Dezember", 8946 ], 8947 months_abbr: [ 8948 "Jan", 8949 "Feb", 8950 "Mär", 8951 "Apr", 8952 "Mai", 8953 "Jun", 8954 "Jul", 8955 "Aug", 8956 "Sep", 8957 "Okt", 8958 "Nov", 8959 "Dez", 8960 ], 8961 days: [ 8962 "Sonntag", 8963 "Montag", 8964 "Dienstag", 8965 "Mittwoch", 8966 "Donnerstag", 8967 "Freitag", 8968 "Samstag", 8969 ], 8970 days_abbr: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], 8971 dateOrder: ["date", "month", "year"], 8972 shortDate: "%d.%m.%Y", 8973 shortTime: "%H:%M", 8974 AM: "vormittags", 8975 PM: "nachmittags", 8976 firstDayOfWeek: 1, 8977 ordinal: ".", 8978 lessThanMinuteAgo: "vor weniger als einer Minute", 8979 minuteAgo: "vor einer Minute", 8980 minutesAgo: "vor {delta} Minuten", 8981 hourAgo: "vor einer Stunde", 8982 hoursAgo: "vor {delta} Stunden", 8983 dayAgo: "vor einem Tag", 8984 daysAgo: "vor {delta} Tagen", 8985 weekAgo: "vor einer Woche", 8986 weeksAgo: "vor {delta} Wochen", 8987 monthAgo: "vor einem Monat", 8988 monthsAgo: "vor {delta} Monaten", 8989 yearAgo: "vor einem Jahr", 8990 yearsAgo: "vor {delta} Jahren", 8991 lessThanMinuteUntil: "in weniger als einer Minute", 8992 minuteUntil: "in einer Minute", 8993 minutesUntil: "in {delta} Minuten", 8994 hourUntil: "in ca. einer Stunde", 8995 hoursUntil: "in ca. {delta} Stunden", 8996 dayUntil: "in einem Tag", 8997 daysUntil: "in {delta} Tagen", 8998 weekUntil: "in einer Woche", 8999 weeksUntil: "in {delta} Wochen", 9000 monthUntil: "in einem Monat", 9001 monthsUntil: "in {delta} Monaten", 9002 yearUntil: "in einem Jahr", 9003 yearsUntil: "in {delta} Jahren", 9004}); 9005Locale.define("de-CH").inherit("de-DE", "Date"); 9006Locale.define("de-CH", "FormValidator", { 9007 required: "Dieses Feld ist obligatorisch.", 9008 minLength: 9009 "Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", 9010 maxLength: 9011 "Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", 9012 integer: 9013 "Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.", 9014 numeric: 9015 "Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").", 9016 digits: 9017 "Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).", 9018 alpha: 9019 "Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.", 9020 alphanum: 9021 "Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.", 9022 dateSuchAs: 9023 "Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}", 9024 dateInFormatMDY: 9025 "Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")", 9026 email: 9027 "Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "[email protected]".", 9028 url: "Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.example.com.", 9029 currencyDollar: 9030 "Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .", 9031 oneRequired: 9032 "Machen Sie für mindestens eines der Eingabefelder einen Eintrag.", 9033 errorPrefix: "Fehler: ", 9034 warningPrefix: "Warnung: ", 9035 noSpace: "In diesem Eingabefeld darf kein Leerzeichen sein.", 9036 reqChkByNode: "Es wurden keine Elemente gewählt.", 9037 requiredChk: "Dieses Feld ist obligatorisch.", 9038 reqChkByName: "Bitte wählen Sie ein {label}.", 9039 match: 9040 "Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.", 9041 startDate: "Das Anfangsdatum", 9042 endDate: "Das Enddatum", 9043 currendDate: "Das aktuelle Datum", 9044 afterDate: 9045 "Das Datum sollte zur gleichen Zeit oder später sein {label}.", 9046 beforeDate: 9047 "Das Datum sollte zur gleichen Zeit oder früher sein {label}.", 9048 startMonth: "Wählen Sie bitte einen Anfangsmonat", 9049 sameMonth: 9050 "Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.", 9051 creditcard: 9052 "Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.", 9053}); 9054Locale.define("de-DE", "FormValidator", { 9055 required: "Dieses Eingabefeld muss ausgefüllt werden.", 9056 minLength: 9057 "Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).", 9058 maxLength: 9059 "Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).", 9060 integer: 9061 'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.', 9062 numeric: 9063 'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.', 9064 digits: 9065 "Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).", 9066 alpha: 9067 "Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.", 9068 alphanum: 9069 "Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.", 9070 dateSuchAs: 'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").', 9071 dateInFormatMDY: 9072 'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").', 9073 email: 9074 'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "[email protected]").', 9075 url: 'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").', 9076 currencyDollar: 9077 "Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00â¬).", 9078 oneRequired: "Bitte füllen Sie mindestens ein Eingabefeld aus.", 9079 errorPrefix: "Fehler: ", 9080 warningPrefix: "Warnung: ", 9081 noSpace: "Es darf kein Leerzeichen in diesem Eingabefeld sein.", 9082 reqChkByNode: "Es wurden keine Elemente gewählt.", 9083 requiredChk: "Dieses Feld muss ausgefüllt werden.", 9084 reqChkByName: "Bitte wählen Sie ein {label}.", 9085 match: 9086 "Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.", 9087 startDate: "Das Anfangsdatum", 9088 endDate: "Das Enddatum", 9089 currendDate: "Das aktuelle Datum", 9090 afterDate: "Das Datum sollte zur gleichen Zeit oder später sein als {label}.", 9091 beforeDate: 9092 "Das Datum sollte zur gleichen Zeit oder früher sein als {label}.", 9093 startMonth: "Wählen Sie bitte einen Anfangsmonat", 9094 sameMonth: 9095 "Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.", 9096 creditcard: 9097 "Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.", 9098}); 9099Locale.define("EU", "Number", {
9100 decimal: ",", 9101 group: ".", 9102 currency: { prefix: "⬠" }, 9103}); 9104Locale.define("de-DE").inherit("EU", "Number"); 9105Locale.define("en-GB", "Date", { 9106 dateOrder: ["date", "month", "year"], 9107 shortDate: "%d/%m/%Y", 9108 shortTime: "%H:%M", 9109}).inherit("en-US", "Date"); 9110Locale.define("es-ES", "Date", { 9111 months: [ 9112 "Enero", 9113 "Febrero", 9114 "Marzo", 9115 "Abril", 9116 "Mayo", 9117 "Junio", 9118 "Julio", 9119 "Agosto", 9120 "Septiembre", 9121 "Octubre", 9122 "Noviembre", 9123 "Diciembre", 9124 ], 9125 months_abbr: [ 9126 "ene", 9127 "feb", 9128 "mar", 9129 "abr", 9130 "may", 9131 "jun", 9132 "jul", 9133 "ago", 9134 "sep", 9135 "oct", 9136 "nov", 9137 "dic", 9138 ], 9139 days: [ 9140 "Domingo", 9141 "Lunes", 9142 "Martes", 9143 "Miércoles", 9144 "Jueves", 9145 "Viernes", 9146 "Sábado", 9147 ], 9148 days_abbr: ["dom", "lun", "mar", "mié", "juv", "vie", "sáb"], 9149 dateOrder: ["date", "month", "year"], 9150 shortDate: "%d/%m/%Y", 9151 shortTime: "%H:%M", 9152 AM: "AM", 9153 PM: "PM", 9154 firstDayOfWeek: 1, 9155 ordinal: "", 9156 lessThanMinuteAgo: "hace menos de un minuto", 9157 minuteAgo: "hace un minuto", 9158 minutesAgo: "hace {delta} minutos", 9159 hourAgo: "hace una hora", 9160 hoursAgo: "hace unas {delta} horas", 9161 dayAgo: "hace un dÃa", 9162 daysAgo: "hace {delta} dÃas", 9163 weekAgo: "hace una semana", 9164 weeksAgo: "hace unas {delta} semanas", 9165 monthAgo: "hace un mes", 9166 monthsAgo: "hace {delta} meses", 9167 yearAgo: "hace un año", 9168 yearsAgo: "hace {delta} años", 9169 lessThanMinuteUntil: "menos de un minuto desde ahora", 9170 minuteUntil: "un minuto desde ahora", 9171 minutesUntil: "{delta} minutos desde ahora", 9172 hourUntil: "una hora desde ahora", 9173 hoursUntil: "unas {delta} horas desde ahora", 9174 dayUntil: "un dÃa desde ahora", 9175 daysUntil: "{delta} dÃas desde ahora", 9176 weekUntil: "una semana desde ahora", 9177 weeksUntil: "unas {delta} semanas desde ahora", 9178 monthUntil: "un mes desde ahora", 9179 monthsUntil: "{delta} meses desde ahora", 9180 yearUntil: "un año desde ahora", 9181 yearsUntil: "{delta} años desde ahora", 9182}); 9183Locale.define("es-AR").inherit("es-ES", "Date"); 9184Locale.define("es-AR", "FormValidator", { 9185 required: "Este campo es obligatorio.", 9186 minLength: 9187 "Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).", 9188 maxLength: 9189 "Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).", 9190 integer: 9191 "Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.", 9192 numeric: 9193 'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").', 9194 digits: 9195 "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).", 9196 alpha: 9197 "Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.", 9198 alphanum: 9199 "Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.", 9200 dateSuchAs: "Por favor ingrese una fecha válida como {date}", 9201 dateInFormatMDY: 9202 'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")', 9203 email: 9204 'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "[email protected]".', 9205 url: "Por favor ingrese una URL válida como http://www.example.com.", 9206 currencyDollar: 9207 "Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .", 9208 oneRequired: 9209 "Por favor ingrese algo para por lo menos una de estas entradas.", 9210 errorPrefix: "Error: ", 9211 warningPrefix: "Advertencia: ", 9212 noSpace: "No se permiten espacios en este campo.", 9213 reqChkByNode: "No hay elementos seleccionados.", 9214 requiredChk: "Este campo es obligatorio.", 9215 reqChkByName: "Por favor selecciona una {label}.", 9216 match: "Este campo necesita coincidir con el campo {matchName}", 9217 startDate: "la fecha de inicio", 9218 endDate: "la fecha de fin", 9219 currendDate: "la fecha actual", 9220 afterDate: "La fecha debe ser igual o posterior a {label}.", 9221 beforeDate: "La fecha debe ser igual o anterior a {label}.", 9222 startMonth: "Por favor selecciona un mes de origen", 9223 sameMonth: 9224 "Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.", 9225}); 9226Locale.define("es-ES", "FormValidator", { 9227 required: "Este campo es obligatorio.", 9228 minLength: 9229 "Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).", 9230 maxLength: 9231 "Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).", 9232 integer: 9233 "Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.", 9234 numeric: 9235 'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").', 9236 digits: 9237 "Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).", 9238 alpha: 9239 "Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.", 9240 alphanum: 9241 "Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.", 9242 dateSuchAs: "Por favor introduce una fecha válida como {date}", 9243 dateInFormatMDY: 9244 'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")', 9245 email: 9246 'Por favor, introduce una dirección de email válida. Por ejemplo, "[email protected]".', 9247 url: "Por favor introduce una URL válida como http://www.example.com.", 9248 currencyDollar: 9249 "Por favor introduce una cantidad válida de â¬. Por ejemplo â¬100,00 .", 9250 oneRequired: 9251 "Por favor introduce algo para por lo menos una de estas entradas.", 9252 errorPrefix: "Error: ", 9253 warningPrefix: "Aviso: ", 9254 noSpace: "No pueden haber espacios en esta entrada.", 9255 reqChkByNode: "No hay elementos seleccionados.", 9256 requiredChk: "Este campo es obligatorio.", 9257 reqChkByName: "Por favor selecciona una {label}.", 9258 match: "Este campo necesita coincidir con el campo {matchName}", 9259 startDate: "la fecha de inicio", 9260 endDate: "la fecha de fin", 9261 currendDate: "la fecha actual", 9262 afterDate: "La fecha debe ser igual o posterior a {label}.", 9263 beforeDate: "La fecha debe ser igual o anterior a {label}.", 9264 startMonth: "Por favor selecciona un mes de origen", 9265 sameMonth: 9266 "Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.", 9267}); 9268Locale.define("et-EE", "Date", { 9269 months: [ 9270 "jaanuar", 9271 "veebruar", 9272 "märts", 9273 "aprill", 9274 "mai", 9275 "juuni", 9276 "juuli", 9277 "august", 9278 "september", 9279 "oktoober", 9280 "november", 9281 "detsember", 9282 ], 9283 months_abbr: [ 9284 "jaan", 9285 "veebr", 9286 "märts", 9287 "apr", 9288 "mai", 9289 "juuni", 9290 "juuli", 9291 "aug", 9292 "sept", 9293 "okt", 9294 "nov", 9295 "dets", 9296 ], 9297 days: [ 9298 "pühapäev", 9299 "esmaspäev", 9300 "teisipäev", 9301 "kolmapäev", 9302 "neljapäev", 9303 "reede", 9304 "laupäev", 9305 ], 9306 days_abbr: ["pühap", "esmasp", "teisip", "kolmap", "neljap", "reede", "laup"], 9307 dateOrder: ["month", "date", "year"], 9308 shortDate: "%m.%d.%Y", 9309 shortTime: "%H:%M", 9310 AM: "AM", 9311 PM: "PM", 9312 firstDayOfWeek: 1, 9313 ordinal: "", 9314 lessThanMinuteAgo: "vähem kui minut aega tagasi", 9315 minuteAgo: "umbes minut aega tagasi", 9316 minutesAgo: "{delta} minutit tagasi", 9317 hourAgo: "umbes tund aega tagasi", 9318 hoursAgo: "umbes {delta} tundi tagasi", 9319 dayAgo: "1 päev tagasi", 9320 daysAgo: "{delta} päeva tagasi", 9321 weekAgo: "1 nädal tagasi", 9322 weeksAgo: "{delta} nädalat tagasi", 9323 monthAgo: "1 kuu tagasi", 9324 monthsAgo: "{delta} kuud tagasi", 9325 yearAgo: "1 aasta tagasi", 9326 yearsAgo: "{delta} aastat tagasi", 9327 lessThanMinuteUntil: "vähem kui minuti aja pärast", 9328 minuteUntil: "umbes minuti aja pärast", 9329 minutesUntil: "{delta} minuti pärast", 9330 hourUntil: "umbes tunni aja pärast", 9331 hoursUntil: "umbes {delta} tunni pärast", 9332 dayUntil: "1 päeva pärast", 9333 daysUntil: "{delta} päeva pärast", 9334 weekUntil: "1 nädala pärast", 9335 weeksUntil: "{delta} nädala pärast", 9336 monthUntil: "1 kuu pärast", 9337 monthsUntil: "{delta} kuu pärast", 9338 yearUntil: "1 aasta pärast", 9339 yearsUntil: "{delta} aasta pärast", 9340}); 9341Locale.define("et-EE", "FormValidator", { 9342 required: "Väli peab olema täidetud.", 9343 minLength: 9344 "Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).", 9345 maxLength: 9346 "Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).", 9347 integer: 9348 "Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.", 9349 numeric: 9350 'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").', 9351 digits: 9352 "Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).", 9353 alpha: 9354 "Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.", 9355 alphanum: 9356 "Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.", 9357 dateSuchAs: "Palun sisestage kehtiv kuupäev kujul {date}", 9358 dateInFormatMDY: 9359 'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").', 9360 email: 'Palun sisestage kehtiv e-maili aadress (näiteks: "[email protected]").', 9361 url: "Palun sisestage kehtiv URL (näiteks: http://www.example.com).", 9362 currencyDollar: "Palun sisestage kehtiv $ summa (näiteks: $100.00).", 9363 oneRequired: "Palun sisestage midagi vähemalt ühele antud väljadest.", 9364 errorPrefix: "Viga: ", 9365 warningPrefix: "Hoiatus: ", 9366 noSpace: "Väli ei tohi sisaldada tühikuid.", 9367 reqChkByNode: "Ãkski väljadest pole valitud.", 9368 requiredChk: "Välja täitmine on vajalik.", 9369 reqChkByName: "Palun valige üks {label}.", 9370 match: "Väli peab sobima {matchName} väljaga", 9371 startDate: "algkuupäev", 9372 endDate: "lõppkuupäev", 9373 currendDate: "praegune kuupäev", 9374 afterDate: "Kuupäev peab olema võrdne või pärast {label}.", 9375 beforeDate: "Kuupäev peab olema võrdne või enne {label}.", 9376 startMonth: "Palun valige algkuupäev.", 9377 sameMonth: 9378 "Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva.", 9379}); 9380Locale.define("fa", "Date", { 9381 months: [ 9382 "ÚØ§ÙÙÛÙ", 9383 "ÙÙØ±ÛÙ", 9384 "٠ارس", 9385 "آپرÛÙ", 9386 "Ù Ù", 9387 "ÚÙØ¦Ù", 9388 "ÚÙØ¦ÛÙ", 9389 "Ø¢Ú¯ÙØ³Øª", 9390 "سپتا٠بر", 9391 "اکتبر", 9392 "ÙÙØ§Ù بر", 9393 "دسا٠بر", 9394 ], 9395 months_abbr: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], 9396 days: ["ÛÚ©Ø´ÙØ¨Ù", "Ø¯ÙØ´ÙبÙ", "Ø³Ù Ø´ÙØ¨Ù", "ÚÙØ§Ø±Ø´ÙبÙ", "Ù¾ÙØ¬Ø´ÙبÙ", "ج٠عÙ", "Ø´ÙØ¨Ù"], 9397 days_abbr: ["Ù", "د", "س", "Ú", "Ù¾", "ج", "Ø´"], 9398 dateOrder: ["month", "date", "year"], 9399 shortDate: "%m/%d/%Y", 9400 shortTime: "%I:%M%p", 9401 AM: "Ù.ظ", 9402 PM: "ب.ظ", 9403 ordinal: "ا٠", 9404 lessThanMinuteAgo: "ک٠تر از ÛÚ© دÙÛÙÙ Ù¾ÛØ´", 9405 minuteAgo: "ØØ¯Ùد ÛÚ© دÙÛÙÙ Ù¾ÛØ´", 9406 minutesAgo: "{delta} دÙÛÙÙ Ù¾ÛØ´", 9407 hourAgo: "ØØ¯Ùد ÛÚ© ساعت Ù¾ÛØ´", 9408 hoursAgo: "ØØ¯Ùد {delta} ساعت Ù¾ÛØ´", 9409 dayAgo: "1 Ø±ÙØ² Ù¾ÛØ´", 9410 daysAgo: "{delta} Ø±ÙØ² Ù¾ÛØ´", 9411 weekAgo: "1 ÙÙØªÙ Ù¾ÛØ´", 9412 weeksAgo: "{delta} ÙÙØªÙ Ù¾ÛØ´", 9413 monthAgo: "1 Ù Ø§Ù Ù¾ÛØ´", 9414 monthsAgo: "{delta} Ù Ø§Ù Ù¾ÛØ´", 9415 yearAgo: "1 Ø³Ø§Ù Ù¾ÛØ´", 9416 yearsAgo: "{delta} Ø³Ø§Ù Ù¾ÛØ´", 9417 lessThanMinuteUntil: "ک٠تر از ÛÚ© دÙÛÙ٠از ØØ§Ùا", 9418 minuteUntil: "ØØ¯Ùد ÛÚ© دÙÛÙ٠از ØØ§Ùا", 9419 minutesUntil: "{delta} دÙÛÙ٠از ØØ§Ùا", 9420 hourUntil: "ØØ¯Ùد ÛÚ© ساعت از ØØ§Ùا", 9421 hoursUntil: "ØØ¯Ùد {delta} ساعت از ØØ§Ùا", 9422 dayUntil: "1 Ø±ÙØ² از ØØ§Ùا", 9423 daysUntil: "{delta} Ø±ÙØ² از ØØ§Ùا", 9424 weekUntil: "1 ÙÙØªÙ از ØØ§Ùا", 9425 weeksUntil: "{delta} ÙÙØªÙ از ØØ§Ùا", 9426 monthUntil: "1 ٠ا٠از ØØ§Ùا", 9427 monthsUntil: "{delta} ٠ا٠از ØØ§Ùا", 9428 yearUntil: "1 سا٠از ØØ§Ùا", 9429 yearsUntil: "{delta} سا٠از ØØ§Ùا", 9430}); 9431Locale.define("fa", "FormValidator", { 9432 required: "اÛÙ ÙÛÙØ¯ Ø§ÙØ²Ø§Ù Û Ø§Ø³Øª.", 9433 minLength: 9434 "ش٠ا Ø¨Ø§ÛØ¯ ØØ¯Ø§ÙÙ {minLength} ØØ±Ù ÙØ§Ø±Ø¯ Ú©ÙÛØ¯ ({length} ØØ±Ù ÙØ§Ø±Ø¯ Ú©Ø±Ø¯Ù Ø§ÛØ¯).", 9435 maxLength: 9436 "ÙØ·Ùا ØØ¯Ø§Ú©Ø«Ø± {maxLength} ØØ±Ù ÙØ§Ø±Ø¯ Ú©ÙÛØ¯ (ش٠ا {length} ØØ±Ù ÙØ§Ø±Ø¯ Ú©Ø±Ø¯Ù Ø§ÛØ¯).", 9437 integer: 9438 "ÙØ·Ùا از عدد صØÛØ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. اعداد Ø§Ø¹Ø´Ø§Ø±Û (٠اÙÙØ¯ 1.25) ٠جاز ÙÛØ³ØªÙد.", 9439 numeric:
9440 'ÙØ·Ùا ÙÙØ· Ø¯Ø§Ø¯Ù Ø¹Ø¯Ø¯Û ÙØ§Ø±Ø¯ Ú©ÙÛØ¯ (٠اÙÙØ¯ "1" ÛØ§ "1.1" ÛØ§ "1-" ÛØ§ "1.1-").', 9441 digits: 9442 "ÙØ·Ùا ÙÙØ· از اعداد Ù Ø¹ÙØ§Ù ØªÙØ§ در اÛÙ ÙÛÙØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯ (Ø¨Ø±Ø§Û Ù Ø«Ø§Ù Ø´Ù Ø§Ø±Ù ØªÙÙ٠با خط ØªÛØ±Ù Ù ÙÙØ·Ù ÙØ§Ø¨Ù ÙØ¨Ù٠است).", 9443 alpha: 9444 "ÙØ·Ùا ÙÙØ· از ØØ±Ù٠اÙÙØ¨Ø§Ø¡ Ø¨Ø±Ø§Û Ø§Û٠بخش Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. Ú©Ø§Ø±Ø§Ú©ØªØ±ÙØ§Û دÛگر Ù ÙØ§ØµÙ٠٠جاز ÙÛØ³ØªÙد.", 9445 alphanum: 9446 "ÙØ·Ùا ÙÙØ· از ØØ±Ù٠اÙÙØ¨Ø§Ø¡ ٠اعداد در اÛ٠بخش Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. Ú©Ø§Ø±Ø§Ú©ØªØ±ÙØ§Û دÛگر Ù ÙØ§ØµÙ٠٠جاز ÙÛØ³ØªÙد.", 9447 dateSuchAs: "ÙØ·Ùا ÛÚ© ØªØ§Ø±ÛØ® ٠عتبر ٠اÙÙØ¯ {date} ÙØ§Ø±Ø¯ Ú©ÙÛØ¯.", 9448 dateInFormatMDY: 9449 'ÙØ·Ùا ÛÚ© ØªØ§Ø±ÛØ® ٠عتبر ب٠شک٠MM/DD/YYYY ÙØ§Ø±Ø¯ Ú©ÙÛØ¯ (٠اÙÙØ¯ "12/31/1999").', 9450 email: 'ÙØ·Ùا ÛÚ© آدرس اÛÙ Û٠٠عتبر ÙØ§Ø±Ø¯ Ú©ÙÛØ¯. Ø¨Ø±Ø§Û Ù Ø«Ø§Ù "[email protected]".', 9451 url: "ÙØ·Ùا ÛÚ© URL ٠عتبر ٠اÙÙØ¯ http://www.example.com ÙØ§Ø±Ø¯ Ú©ÙÛØ¯.", 9452 currencyDollar: "ÙØ·Ùا ÛÚ© Ù ØØ¯Ùد٠٠عتبر Ø¨Ø±Ø§Û Ø§Û٠بخش ÙØ§Ø±Ø¯ Ú©ÙÛØ¯ ٠اÙÙØ¯ 100.00$ .", 9453 oneRequired: "ÙØ·Ùا ØØ¯Ø§ÙÙ ÛÚ©Û Ø§Ø² ÙÛÙØ¯Ùا را پر Ú©ÙÛØ¯.", 9454 errorPrefix: "خطا: ", 9455 warningPrefix: "ÙØ´Ø¯Ø§Ø±: ", 9456 noSpace: "Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§ØµÙ٠در اÛ٠بخش ٠جاز ÙÛØ³Øª.", 9457 reqChkByNode: "Ù ÙØ±Ø¯Û Ø§ÙØªØ®Ø§Ø¨ ÙØ´Ø¯Ù است.", 9458 requiredChk: "اÛÙ ÙÛÙØ¯ Ø§ÙØ²Ø§Ù Û Ø§Ø³Øª.", 9459 reqChkByName: "ÙØ·Ùا ÛÚ© {label} را Ø§ÙØªØ®Ø§Ø¨ Ú©ÙÛØ¯.", 9460 match: "اÛÙ ÙÛÙØ¯ Ø¨Ø§ÛØ¯ با ÙÛÙØ¯ {matchName} Ù Ø·Ø§Ø¨ÙØª داشت٠باشد.", 9461 startDate: "ØªØ§Ø±ÛØ® Ø´Ø±ÙØ¹", 9462 endDate: "ØªØ§Ø±ÛØ® Ù¾Ø§ÛØ§Ù", 9463 currendDate: "ØªØ§Ø±ÛØ® Ú©ÙÙÙÛ", 9464 afterDate: "ØªØ§Ø±ÛØ® Ù ÛØ¨Ø§Ûست برابر ÛØ§ بعد از {label} باشد", 9465 beforeDate: "ØªØ§Ø±ÛØ® Ù ÛØ¨Ø§Ûست برابر ÛØ§ ÙØ¨Ù از {label} باشد", 9466 startMonth: "ÙØ·Ùا Ù Ø§Ù Ø´Ø±ÙØ¹ را Ø§ÙØªØ®Ø§Ø¨ Ú©ÙÛØ¯", 9467 sameMonth: 9468 "اÛÙ Ø¯Ù ØªØ§Ø±ÛØ® Ø¨Ø§ÛØ¯ در ÛÚ© Ù Ø§Ù Ø¨Ø§Ø´ÙØ¯ - ش٠ا Ø¨Ø§ÛØ¯ ÛÚ©Û ÛØ§ ÙØ± د٠را تغÛÛØ± دÙÛØ¯.", 9469 creditcard: 9470 "ش٠ار٠کارت Ø§Ø¹ØªØ¨Ø§Ø±Û Ú©Ù ÙØ§Ø±Ø¯ Ú©Ø±Ø¯Ù Ø§ÛØ¯ ٠عتبر ÙÛØ³Øª. ÙØ·Ùا ش٠ار٠را Ø¨Ø±Ø±Ø³Û Ú©ÙÛØ¯ ٠٠جددا ØªÙØ§Ø´ Ú©ÙÛØ¯. {length} رÙÙ ÙØ§Ø±Ø¯ شد٠است.", 9471}); 9472Locale.define("fi-FI", "Date", { 9473 months: [ 9474 "tammikuu", 9475 "helmikuu", 9476 "maaliskuu", 9477 "huhtikuu", 9478 "toukokuu", 9479 "kesäkuu", 9480 "heinäkuu", 9481 "elokuu", 9482 "syyskuu", 9483 "lokakuu", 9484 "marraskuu", 9485 "joulukuu", 9486 ], 9487 months_abbr: [ 9488 "tammik.", 9489 "helmik.", 9490 "maalisk.", 9491 "huhtik.", 9492 "toukok.", 9493 "kesäk.", 9494 "heinäk.", 9495 "elok.", 9496 "syysk.", 9497 "lokak.", 9498 "marrask.", 9499 "jouluk.", 9500 ], 9501 days: [ 9502 "sunnuntai", 9503 "maanantai", 9504 "tiistai", 9505 "keskiviikko", 9506 "torstai", 9507 "perjantai", 9508 "lauantai", 9509 ], 9510 days_abbr: ["su", "ma", "ti", "ke", "to", "pe", "la"], 9511 dateOrder: ["date", "month", "year"], 9512 shortDate: "%d.%m.%Y", 9513 shortTime: "%H:%M", 9514 AM: "AM", 9515 PM: "PM", 9516 firstDayOfWeek: 1, 9517 ordinal: ".", 9518 lessThanMinuteAgo: "vajaa minuutti sitten", 9519 minuteAgo: "noin minuutti sitten", 9520 minutesAgo: "{delta} minuuttia sitten", 9521 hourAgo: "noin tunti sitten", 9522 hoursAgo: "noin {delta} tuntia sitten", 9523 dayAgo: "päivä sitten", 9524 daysAgo: "{delta} päivää sitten", 9525 weekAgo: "viikko sitten", 9526 weeksAgo: "{delta} viikkoa sitten", 9527 monthAgo: "kuukausi sitten", 9528 monthsAgo: "{delta} kuukautta sitten", 9529 yearAgo: "vuosi sitten", 9530 yearsAgo: "{delta} vuotta sitten", 9531 lessThanMinuteUntil: "vajaan minuutin kuluttua", 9532 minuteUntil: "noin minuutin kuluttua", 9533 minutesUntil: "{delta} minuutin kuluttua", 9534 hourUntil: "noin tunnin kuluttua", 9535 hoursUntil: "noin {delta} tunnin kuluttua", 9536 dayUntil: "päivän kuluttua", 9537 daysUntil: "{delta} päivän kuluttua", 9538 weekUntil: "viikon kuluttua", 9539 weeksUntil: "{delta} viikon kuluttua", 9540 monthUntil: "kuukauden kuluttua", 9541 monthsUntil: "{delta} kuukauden kuluttua", 9542 yearUntil: "vuoden kuluttua", 9543 yearsUntil: "{delta} vuoden kuluttua", 9544}); 9545Locale.define("fi-FI", "FormValidator", { 9546 required: "Tämä kenttä on pakollinen.", 9547 minLength: 9548 "Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).", 9549 maxLength: 9550 "Ãlä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).", 9551 integer: 9552 "Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.", 9553 numeric: 9554 'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").', 9555 digits: 9556 "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).", 9557 alpha: 9558 "Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.", 9559 alphanum: 9560 "Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.", 9561 dateSuchAs: 9562 "Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}", 9563 dateInFormatMDY: 9564 'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")', 9565 email: 9566 'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "[email protected]").', 9567 url: "Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.", 9568 currencyDollar: 9569 "Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .", 9570 oneRequired: "Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.", 9571 errorPrefix: "Virhe: ", 9572 warningPrefix: "Varoitus: ", 9573 noSpace: "Tässä syötteessä ei voi olla välilyöntejä", 9574 reqChkByNode: "Ei valintoja.", 9575 requiredChk: "Tämä kenttä on pakollinen.", 9576 reqChkByName: "Ole hyvä ja valitse {label}.", 9577 match: "Tämän kentän tulee vastata kenttää {matchName}", 9578 startDate: "alkupäivämäärä", 9579 endDate: "loppupäivämäärä", 9580 currendDate: "nykyinen päivämäärä", 9581 afterDate: 9582 "Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.", 9583 beforeDate: 9584 "Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.", 9585 startMonth: "Ole hyvä ja valitse aloituskuukausi", 9586 sameMonth: 9587 "Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.", 9588 creditcard: 9589 "Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty.", 9590}); 9591Locale.define("fi-FI", "Number", { group: " " }).inherit("EU", "Number"); 9592Locale.define("fr-FR", "Date", { 9593 months: [ 9594 "Janvier", 9595 "Février", 9596 "Mars", 9597 "Avril", 9598 "Mai", 9599 "Juin", 9600 "Juillet", 9601 "Août", 9602 "Septembre", 9603 "Octobre", 9604 "Novembre", 9605 "Décembre", 9606 ], 9607 months_abbr: [ 9608 "janv.", 9609 "févr.", 9610 "mars", 9611 "avr.", 9612 "mai", 9613 "juin", 9614 "juil.", 9615 "août", 9616 "sept.", 9617 "oct.", 9618 "nov.", 9619 "déc.", 9620 ], 9621 days: [ 9622 "Dimanche", 9623 "Lundi", 9624 "Mardi", 9625 "Mercredi", 9626 "Jeudi", 9627 "Vendredi", 9628 "Samedi", 9629 ], 9630 days_abbr: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], 9631 dateOrder: ["date", "month", "year"], 9632 shortDate: "%d/%m/%Y", 9633 shortTime: "%H:%M", 9634 AM: "AM", 9635 PM: "PM", 9636 firstDayOfWeek: 1, 9637 ordinal: function (a) { 9638 return a > 1 ? "" : "er"; 9639 }, 9640 lessThanMinuteAgo: "il y a moins d'une minute", 9641 minuteAgo: "il y a une minute", 9642 minutesAgo: "il y a {delta} minutes", 9643 hourAgo: "il y a une heure", 9644 hoursAgo: "il y a {delta} heures", 9645 dayAgo: "il y a un jour", 9646 daysAgo: "il y a {delta} jours", 9647 weekAgo: "il y a une semaine", 9648 weeksAgo: "il y a {delta} semaines", 9649 monthAgo: "il y a 1 mois", 9650 monthsAgo: "il y a {delta} mois", 9651 yearthAgo: "il y a 1 an", 9652 yearsAgo: "il y a {delta} ans", 9653 lessThanMinuteUntil: "dans moins d'une minute", 9654 minuteUntil: "dans une minute", 9655 minutesUntil: "dans {delta} minutes", 9656 hourUntil: "dans une heure", 9657 hoursUntil: "dans {delta} heures", 9658 dayUntil: "dans un jour", 9659 daysUntil: "dans {delta} jours", 9660 weekUntil: "dans 1 semaine", 9661 weeksUntil: "dans {delta} semaines", 9662 monthUntil: "dans 1 mois", 9663 monthsUntil: "dans {delta} mois", 9664 yearUntil: "dans 1 an", 9665 yearsUntil: "dans {delta} ans", 9666}); 9667Locale.define("fr-FR", "FormValidator", { 9668 required: "Ce champ est obligatoire.", 9669 length: 9670 "Veuillez saisir {length} caractère(s) (vous avez saisi {elLength} caractère(s)", 9671 minLength: 9672 "Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).", 9673 maxLength: 9674 "Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).", 9675 integer: 9676 'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.', 9677 numeric: 9678 'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").', 9679 digits: 9680 "Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).", 9681 alpha: 9682 "Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.", 9683 alphanum: 9684 "Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.", 9685 dateSuchAs: "Veuillez saisir une date correcte comme {date}", 9686 dateInFormatMDY: 9687 'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").', 9688 email: 9689 'Veuillez saisir une adresse de courrier électronique. Par example "[email protected]".', 9690 url: "Veuillez saisir une URL, comme http://www.example.com.", 9691 currencyDollar: 9692 "Veuillez saisir une quantité correcte. Par example 100,00€.", 9693 oneRequired: "Veuillez sélectionner au moins une de ces options.", 9694 errorPrefix: "Erreur : ", 9695 warningPrefix: "Attention : ", 9696 noSpace: "Ce champ n'accepte pas les espaces.", 9697 reqChkByNode: "Aucun élément n'est sélectionné.", 9698 requiredChk: "Ce champ est obligatoire.", 9699 reqChkByName: "Veuillez sélectionner un(e) {label}.", 9700 match: "Ce champ doit correspondre avec le champ {matchName}.", 9701 startDate: "date de début", 9702 endDate: "date de fin", 9703 currendDate: "date actuelle", 9704 afterDate: 9705 "La date doit être identique ou postérieure à {label}.", 9706 beforeDate: 9707 "La date doit être identique ou antérieure à {label}.", 9708 startMonth: "Veuillez sélectionner un mois de début.", 9709 sameMonth: 9710 "Ces deux dates doivent être dans le même mois - vous devez en modifier une.", 9711 creditcard: 9712 "Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s).", 9713}); 9714Locale.define("fr-FR", "Number", { group: " " }).inherit("EU", "Number"); 9715Locale.define("he-IL", "Date", { 9716 months: [ 9717 "×× ××ר", 9718 "פ×ר××ר", 9719 "×רץ", 9720 "×פר××", 9721 "×××", 9722 "××× ×", 9723 "××××", 9724 "××××ס×", 9725 "ספ×××ר", 9726 "×××§×××ר", 9727 "× ××××ר", 9728 "×צ××ר", 9729 ], 9730 months_abbr: [ 9731 "×× ××ר", 9732 "פ×ר××ר", 9733 "×רץ", 9734 "×פר××", 9735 "×××", 9736 "××× ×", 9737 "××××", 9738 "××××ס×", 9739 "ספ×××ר", 9740 "×××§×××ר", 9741 "× ××××ר", 9742 "×צ××ר", 9743 ], 9744 days: ["ר×ש××", "×©× ×", "ש××ש×", "ר×××¢×", "×××ש×", "ש×ש×", "ש×ת"], 9745 days_abbr: ["ר×ש××", "×©× ×", "ש××ש×", "ר×××¢×", "×××ש×", "ש×ש×", "ש×ת"], 9746 dateOrder: ["date", "month", "year"], 9747 shortDate: "%d/%m/%Y", 9748 shortTime: "%H:%M", 9749 AM: "AM", 9750 PM: "PM", 9751 firstDayOfWeek: 0, 9752 ordinal: "", 9753 lessThanMinuteAgo: "××¤× × ×¤××ת ×××§×", 9754 minuteAgo: "××¤× × ×××§×", 9755 minutesAgo: "××¤× × {delta} ××§×ת", 9756 hourAgo: "××¤× × ×שע×", 9757 hoursAgo: "××¤× × {delta} שע×ת", 9758 dayAgo: "××¤× × ×××", 9759 daysAgo: "××¤× × {delta} ××××", 9760 weekAgo: "××¤× × ×©×××¢", 9761 weeksAgo: "××¤× × {delta} ש×××¢×ת", 9762 monthAgo: "××¤× × ×××ש", 9763 monthsAgo: "××¤× × {delta} ×××ש××", 9764 yearAgo: "××¤× × ×©× ×", 9765 yearsAgo: "××¤× × {delta} ×©× ××", 9766 lessThanMinuteUntil: "××¢×× ×¤××ת ×××§×", 9767 minuteUntil: "××¢×× ×××§×", 9768 minutesUntil: "××¢×× {delta} ××§×ת", 9769 hourUntil: "××¢×× ×שע×", 9770 hoursUntil: "××¢×× {delta} שע×ת", 9771 dayUntil: "××¢×× ×××", 9772 daysUntil: "××¢×× {delta} ××××", 9773 weekUntil: "××¢×× ×©×××¢", 9774 weeksUntil: "××¢×× {delta} ש×××¢×ת", 9775 monthUntil: "××¢×× ×××ש", 9776 monthsUntil: "××¢×× {delta} ×××ש××", 9777 yearUntil: "××¢×× ×©× ×", 9778 yearsUntil: "××¢×× {delta} ×©× ××", 9779}); 9780Locale.define("he-IL", "FormValidator", { 9781 required: "× × ×××× ×©×× ××.", 9782 minLength: "× × ××××× ×פ××ת {minLength} ת×××× (××× ×ª {length} ת××××).", 9783 maxLength: "× × ××××× ×¢× {maxLength} ת×××× (××× ×ª {length} ת××××).", 9784 integer: "× × ××××× ×ספר ש×× ×ש×× ××. ×ספר×× ×¢×©×¨×× ××× (××× 1.25) ××× × ×××§×××.", 9785 numeric: '× × ××××× ×¢×¨× ××¡×¤×¨× ×××× ×ש×× ×× (××× "1", "1.1", "-1" ×× "-1.1").', 9786 digits: 9787 "× × ××××× ×¨×§ ספר×ת ×ס××× × ×פר×× ×ש×× ×× (××ש×, ×ספר ××פ×× ×¢× ×קפ×× ×× × ×§×××ת ××× ×××§×).", 9788 alpha: 9789 "× × ××××× ×¨×§ ××ת××ת ××× ×××ת (a-z) ×ש×× ××. ר××××× ×× ×ª×××× ××ר×× ××× × ×××§×××.", 9790 alphanum: 9791 "× × ××××× ×¨×§ ××תר××ת ××× ×××ת (a-z) ×× ×¡×¤×¨×ת (0-9) ×ש×× ××. ××××ר×× ×× ×ª×××× ××ר×× ××× × ×××§×××.", 9792 dateSuchAs: "× × ××××× ×ª×ר×× ×××§×, ××× {date}", 9793 dateInFormatMDY: '× × ××××× ×ª×ר×× ×××§× ×פ×ר×× MM/DD/YYYY (××× "12/31/1999")', 9794 email: '× × ××××× ×ת××ת ×××××× ×××§×ת. ××××××: "[email protected]".', 9795 url: "× × ××××× ×ת××ת ×תר ×××§×ת, ××× http://www.example.com.", 9796 currencyDollar: "× × ××××× ×¡××× ××××¨× ×××§×. ×××××× $100.00.", 9797 oneRequired: "× × ××××ר ×פ××ת ×ש×× ×××.", 9798 errorPrefix: "ש××××: ", 9799 warningPrefix: "×××ר×: ", 9800 noSpace: "××× ××××× ×¨××××× ×ש×× ××.", 9801 reqChkByNode: "× × ××××ר ××ת ×××פשר×××ת.", 9802 requiredChk: "ש×× ×× × ×רש.", 9803 reqChkByName: "× × ××××ר {label}.", 9804 match: "ש×× ×× ×¦×¨×× ××ת××× ×ש×× {matchName}", 9805 startDate: "ת×ר×× ××ת×××", 9806 endDate: "ת×ר×× ×ס×××", 9807 currendDate: "×ת×ר×× ×× ××××", 9808 afterDate: "×ת×ר×× ×¦×¨×× ××××ת ××× ×× ×××¨× {label}.", 9809 beforeDate: "×ת×ר×× ×¦×¨×× ××××ת ××× ×× ××¤× × {label}.", 9810 startMonth: "× × ××××ר ×××ש ×ת×××", 9811 sameMonth: "×©× × ×ª×ר×××× ××× ×¦×¨×××× ××××ת ××××ª× ×××ש - × × ××©× ×ת ××× ×ת×ר××××.", 9812 creditcard: 9813 "×ספר ×ר××ס ××שר×× ×©×××× ××× × ×××§×. × × ×××××§ ×©× ×ת. ×××× × {length} ספר×ת.", 9814}); 9815Locale.define("he-IL", "Number", {
9816 decimal: ".", 9817 group: ",", 9818 currency: { suffix: " âª" }, 9819}); 9820Locale.define("hu-HU", "Date", { 9821 months: [ 9822 "Január", 9823 "Február", 9824 "Március", 9825 "Ãprilis", 9826 "Május", 9827 "Június", 9828 "Július", 9829 "Augusztus", 9830 "Szeptember", 9831 "Október", 9832 "November", 9833 "December", 9834 ], 9835 months_abbr: [ 9836 "jan.", 9837 "febr.", 9838 "márc.", 9839 "ápr.", 9840 "máj.", 9841 "jún.", 9842 "júl.", 9843 "aug.", 9844 "szept.", 9845 "okt.", 9846 "nov.", 9847 "dec.", 9848 ], 9849 days: [ 9850 "Vasárnap", 9851 "HétfÅ", 9852 "Kedd", 9853 "Szerda", 9854 "Csütörtök", 9855 "Péntek", 9856 "Szombat", 9857 ], 9858 days_abbr: ["V", "H", "K", "Sze", "Cs", "P", "Szo"], 9859 dateOrder: ["year", "month", "date"], 9860 shortDate: "%Y.%m.%d.", 9861 shortTime: "%I:%M", 9862 AM: "de.", 9863 PM: "du.", 9864 firstDayOfWeek: 1, 9865 ordinal: ".", 9866 lessThanMinuteAgo: "alig egy perce", 9867 minuteAgo: "egy perce", 9868 minutesAgo: "{delta} perce", 9869 hourAgo: "egy órája", 9870 hoursAgo: "{delta} órája", 9871 dayAgo: "1 napja", 9872 daysAgo: "{delta} napja", 9873 weekAgo: "1 hete", 9874 weeksAgo: "{delta} hete", 9875 monthAgo: "1 hónapja", 9876 monthsAgo: "{delta} hónapja", 9877 yearAgo: "1 éve", 9878 yearsAgo: "{delta} éve", 9879 lessThanMinuteUntil: "alig egy perc múlva", 9880 minuteUntil: "egy perc múlva", 9881 minutesUntil: "{delta} perc múlva", 9882 hourUntil: "egy óra múlva", 9883 hoursUntil: "{delta} óra múlva", 9884 dayUntil: "1 nap múlva", 9885 daysUntil: "{delta} nap múlva", 9886 weekUntil: "1 hét múlva", 9887 weeksUntil: "{delta} hét múlva", 9888 monthUntil: "1 hónap múlva", 9889 monthsUntil: "{delta} hónap múlva", 9890 yearUntil: "1 év múlva", 9891 yearsUntil: "{delta} év múlva", 9892}); 9893Locale.define("hu-HU", "FormValidator", { 9894 required: "A mezÅ kitöltése kötelezÅ.", 9895 minLength: 9896 "Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).", 9897 maxLength: 9898 "Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).", 9899 integer: 9900 "Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.", 9901 numeric: 9902 'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").', 9903 digits: 9904 "Csak számok és Ãrásjelek megadása lehetséges (pl. telefonszám kötÅjelek és/vagy perjelekkel).", 9905 alpha: 9906 "Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.", 9907 alphanum: 9908 "Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.", 9909 dateSuchAs: "Valós dátum megadása szükséges (pl. {date}).", 9910 dateInFormatMDY: 9911 'Valós dátum megadása szükséges ÃÃÃÃ.HH.NN. formában. (pl. "1999.12.31.")', 9912 email: 'Valós e-mail cÃm megadása szükséges (pl. "[email protected]").', 9913 url: "Valós URL megadása szükséges (pl. http://www.example.com).", 9914 currencyDollar: "Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).", 9915 oneRequired: "Az alábbi mezÅk legalább egyikének kitöltése kötelezÅ.", 9916 errorPrefix: "Hiba: ", 9917 warningPrefix: "Figyelem: ", 9918 noSpace: "A mezÅ nem tartalmazhat szóközöket.", 9919 reqChkByNode: "Nincs egyetlen kijelölt elem sem.", 9920 requiredChk: "A mezÅ kitöltése kötelezÅ.", 9921 reqChkByName: "Egy {label} kiválasztása szükséges.", 9922 match: "A mezÅnek egyeznie kell a(z) {matchName} mezÅvel.", 9923 startDate: "a kezdet dátuma", 9924 endDate: "a vég dátuma", 9925 currendDate: "jelenlegi dátum", 9926 afterDate: "A dátum nem lehet kisebb, mint {label}.", 9927 beforeDate: "A dátum nem lehet nagyobb, mint {label}.", 9928 startMonth: "Kezdeti hónap megadása szükséges.", 9929 sameMonth: "A két dátumnak ugyanazon hónapban kell lennie.", 9930 creditcard: 9931 "A megadott bankkártyaszám nem valódi (megadva {length} számjegy).", 9932}); 9933Locale.define("it-IT", "Date", { 9934 months: [ 9935 "Gennaio", 9936 "Febbraio", 9937 "Marzo", 9938 "Aprile", 9939 "Maggio", 9940 "Giugno", 9941 "Luglio", 9942 "Agosto", 9943 "Settembre", 9944 "Ottobre", 9945 "Novembre", 9946 "Dicembre", 9947 ], 9948 months_abbr: [ 9949 "gen", 9950 "feb", 9951 "mar", 9952 "apr", 9953 "mag", 9954 "giu", 9955 "lug", 9956 "ago", 9957 "set", 9958 "ott", 9959 "nov", 9960 "dic", 9961 ], 9962 days: [ 9963 "Domenica", 9964 "Lunedì", 9965 "Martedì", 9966 "Mercoledì", 9967 "Giovedì", 9968 "Venerdì", 9969 "Sabato", 9970 ], 9971 days_abbr: ["dom", "lun", "mar", "mer", "gio", "ven", "sab"], 9972 dateOrder: ["date", "month", "year"], 9973 shortDate: "%d/%m/%Y", 9974 shortTime: "%H.%M", 9975 AM: "AM", 9976 PM: "PM", 9977 firstDayOfWeek: 1, 9978 ordinal: "º", 9979 lessThanMinuteAgo: "meno di un minuto fa", 9980 minuteAgo: "circa un minuto fa", 9981 minutesAgo: "circa {delta} minuti fa", 9982 hourAgo: "circa un'ora fa", 9983 hoursAgo: "circa {delta} ore fa", 9984 dayAgo: "circa 1 giorno fa", 9985 daysAgo: "circa {delta} giorni fa", 9986 weekAgo: "una settimana fa", 9987 weeksAgo: "{delta} settimane fa", 9988 monthAgo: "un mese fa", 9989 monthsAgo: "{delta} mesi fa", 9990 yearAgo: "un anno fa", 9991 yearsAgo: "{delta} anni fa", 9992 lessThanMinuteUntil: "tra meno di un minuto", 9993 minuteUntil: "tra circa un minuto", 9994 minutesUntil: "tra circa {delta} minuti", 9995 hourUntil: "tra circa un'ora", 9996 hoursUntil: "tra circa {delta} ore", 9997 dayUntil: "tra circa un giorno", 9998 daysUntil: "tra circa {delta} giorni", 9999 weekUntil: "tra una settimana", 10000 weeksUntil: "tra {delta} settimane", 10001 monthUntil: "tra un mese", 10002 monthsUntil: "tra {delta} mesi", 10003 yearUntil: "tra un anno", 10004 yearsUntil: "tra {delta} anni", 10005}); 10006Locale.define("it-IT", "FormValidator", { 10007 required: "Il campo è obbligatorio.", 10008 minLength: 10009 "Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).", 10010 maxLength: 10011 "Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).", 10012 integer: 10013 "Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).", 10014 numeric: 10015 'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").', 10016 digits: 10017 "Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.", 10018 alpha: 10019 "Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.", 10020 alphanum: 10021 "Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.", 10022 dateSuchAs: "Inserire una data valida del tipo {date}", 10023 dateInFormatMDY: 10024 'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")', 10025 email: 'Inserire un indirizzo email valido. Per esempio "[email protected]".', 10026 url: 'Inserire un indirizzo valido. Per esempio "http://www.example.com".', 10027 currencyDollar: 'Inserire un importo valido. Per esempio "$100.00".', 10028 oneRequired: "Completare almeno uno dei campi richiesti.", 10029 errorPrefix: "Errore: ", 10030 warningPrefix: "Attenzione: ", 10031 noSpace: "Non sono consentiti spazi.", 10032 reqChkByNode: "Nessuna voce selezionata.", 10033 requiredChk: "Il campo è obbligatorio.", 10034 reqChkByName: "Selezionare un(a) {label}.", 10035 match: "Il valore deve corrispondere al campo {matchName}", 10036 startDate: "data d'inizio", 10037 endDate: "data di fine", 10038 currendDate: "data attuale", 10039 afterDate: "La data deve corrispondere o essere successiva al {label}.", 10040 beforeDate: "La data deve corrispondere o essere precedente al {label}.", 10041 startMonth: "Selezionare un mese d'inizio", 10042 sameMonth: 10043 "Le due date devono essere dello stesso mese - occorre modificarne una.", 10044}); 10045Locale.define("ja-JP", "Date", { 10046 months: [ 10047 "1æ", 10048 "2æ", 10049 "3æ", 10050 "4æ", 10051 "5æ", 10052 "6æ", 10053 "7æ", 10054 "8æ", 10055 "9æ", 10056 "10æ", 10057 "11æ", 10058 "12æ", 10059 ], 10060 months_abbr: [ 10061 "1æ", 10062 "2æ", 10063 "3æ", 10064 "4æ", 10065 "5æ", 10066 "6æ", 10067 "7æ", 10068 "8æ", 10069 "9æ", 10070 "10æ", 10071 "11æ", 10072 "12æ", 10073 ],
10074 days: ["æ¥ææ¥", "æææ¥", "ç«ææ¥", "æ°´ææ¥", "æ¨ææ¥", "éææ¥", "åææ¥"], 10075 days_abbr: ["æ¥", "æ", "ç«", "æ°´", "æ¨", "é", "å"], 10076 dateOrder: ["year", "month", "date"], 10077 shortDate: "%Y/%m/%d", 10078 shortTime: "%H:%M", 10079 AM: "åå", 10080 PM: "åå¾", 10081 firstDayOfWeek: 0, 10082 ordinal: "", 10083 lessThanMinuteAgo: "1å以å å", 10084 minuteAgo: "ç´1åå", 10085 minutesAgo: "ç´{delta}åå", 10086 hourAgo: "ç´1æéå", 10087 hoursAgo: "ç´{delta}æéå", 10088 dayAgo: "1æ¥å", 10089 daysAgo: "{delta}æ¥å", 10090 weekAgo: "1é±éå", 10091 weeksAgo: "{delta}é±éå", 10092 monthAgo: "1ã¶æå", 10093 monthsAgo: "{delta}ã¶æå", 10094 yearAgo: "1å¹´å", 10095 yearsAgo: "{delta}å¹´å", 10096 lessThanMinuteUntil: "ä»ããç´1å以å ", 10097 minuteUntil: "ä»ããç´1å", 10098 minutesUntil: "ä»ããç´{delta}å", 10099 hourUntil: "ä»ããç´1æé", 10100 hoursUntil: "ä»ããç´{delta}æé", 10101 dayUntil: "ä»ãã1æ¥é", 10102 daysUntil: "ä»ãã{delta}æ¥é", 10103 weekUntil: "ä»ãã1é±é", 10104 weeksUntil: "ä»ãã{delta}é±é", 10105 monthUntil: "ä»ãã1ã¶æ", 10106 monthsUntil: "ä»ãã{delta}ã¶æ", 10107 yearUntil: "ä»ãã1å¹´", 10108 yearsUntil: "ä»ãã{delta}å¹´", 10109}); 10110Locale.define("ja-JP", "FormValidator", { 10111 required: "å ¥åã¯å¿ é ã§ãã", 10112 minLength: "å ¥åæåæ°ã¯{minLength}以ä¸ã«ãã¦ãã ããã({length}æå)", 10113 maxLength: "å ¥åæåæ°ã¯{maxLength}以ä¸ã«ãã¦ãã ããã({length}æå)", 10114 integer: "æ´æ°ãå ¥åãã¦ãã ããã", 10115 numeric: 'å ¥åã§ããã®ã¯æ°å¤ã ãã§ãã(ä¾: "1", "1.1", "-1", "-1.1"....)', 10116 digits: "å ¥åã§ããã®ã¯æ°å¤ã¨å¥èªè¨å·ã§ãã (ä¾: -ã+ãå«ãé»è©±çªå·ãªã©).", 10117 alpha: "å ¥åã§ããã®ã¯åè§è±åã ãã§ãããã以å¤ã®æåã¯å ¥åã§ãã¾ããã", 10118 alphanum: 10119 "å ¥åã§ããã®ã¯åè§è±æ°åã ãã§ãããã以å¤ã®æåã¯å ¥åã§ãã¾ããã", 10120 dateSuchAs: "æå¹ãªæ¥ä»ãå ¥åãã¦ãã ããã{date}", 10121 dateInFormatMDY: 'æ¥ä»ã®æ¸å¼ã«èª¤ããããã¾ããYYYY/MM/DD (i.e. "1999/12/31")', 10122 email: "ã¡ã¼ã«ã¢ãã¬ã¹ã«èª¤ããããã¾ãã", 10123 url: "URLã¢ãã¬ã¹ã«èª¤ããããã¾ãã", 10124 currencyDollar: "éé¡ã«èª¤ããããã¾ãã", 10125 oneRequired: "ã²ã¨ã¤ä»¥ä¸å ¥åãã¦ãã ããã", 10126 errorPrefix: "ã¨ã©ã¼: ", 10127 warningPrefix: "è¦å: ", 10128 noSpace: "ã¹ãã¼ã¹ã¯å ¥åã§ãã¾ããã", 10129 reqChkByNode: "鏿ããã¦ãã¾ããã", 10130 requiredChk: "ãã®é ç®ã¯å¿ é ã§ãã", 10131 reqChkByName: "{label}ã鏿ãã¦ãã ããã", 10132 match: "{matchName}ãå ¥åããã¦ããå ´åå¿ é ã§ãã", 10133 startDate: "éå§æ¥", 10134 endDate: "çµäºæ¥", 10135 currendDate: "仿¥", 10136 afterDate: "{label}以éã®æ¥ä»ã«ãã¦ãã ããã", 10137 beforeDate: "{label}以åã®æ¥ä»ã«ãã¦ãã ããã", 10138 startMonth: "éå§æã鏿ãã¦ãã ããã", 10139 sameMonth: "æ¥ä»ãåä¸ã§ããã©ã¡ããã夿´ãã¦ãã ããã", 10140}); 10141Locale.define("ja-JP", "Number", { 10142 decimal: ".", 10143 group: ",", 10144 currency: { decimals: 0, prefix: "\\" }, 10145}); 10146Locale.define("nl-NL", "Date", { 10147 months: [ 10148 "januari", 10149 "februari", 10150 "maart", 10151 "april", 10152 "mei", 10153 "juni", 10154 "juli", 10155 "augustus", 10156 "september", 10157 "oktober", 10158 "november", 10159 "december", 10160 ], 10161 months_abbr: [ 10162 "jan", 10163 "feb", 10164 "mrt", 10165 "apr", 10166 "mei", 10167 "jun", 10168 "jul", 10169 "aug", 10170 "sep", 10171 "okt", 10172 "nov", 10173 "dec", 10174 ], 10175 days: [ 10176 "zondag", 10177 "maandag", 10178 "dinsdag", 10179 "woensdag", 10180 "donderdag", 10181 "vrijdag", 10182 "zaterdag", 10183 ], 10184 days_abbr: ["zo", "ma", "di", "wo", "do", "vr", "za"], 10185 dateOrder: ["date", "month", "year"], 10186 shortDate: "%d-%m-%Y", 10187 shortTime: "%H:%M", 10188 AM: "AM", 10189 PM: "PM", 10190 firstDayOfWeek: 1, 10191 ordinal: "e", 10192 lessThanMinuteAgo: "minder dan een minuut geleden", 10193 minuteAgo: "ongeveer een minuut geleden", 10194 minutesAgo: "{delta} minuten geleden", 10195 hourAgo: "ongeveer een uur geleden", 10196 hoursAgo: "ongeveer {delta} uur geleden", 10197 dayAgo: "een dag geleden", 10198 daysAgo: "{delta} dagen geleden", 10199 weekAgo: "een week geleden", 10200 weeksAgo: "{delta} weken geleden", 10201 monthAgo: "een maand geleden", 10202 monthsAgo: "{delta} maanden geleden", 10203 yearAgo: "een jaar geleden", 10204 yearsAgo: "{delta} jaar geleden", 10205 lessThanMinuteUntil: "over minder dan een minuut", 10206 minuteUntil: "over ongeveer een minuut", 10207 minutesUntil: "over {delta} minuten", 10208 hourUntil: "over ongeveer een uur", 10209 hoursUntil: "over {delta} uur", 10210 dayUntil: "over ongeveer een dag", 10211 daysUntil: "over {delta} dagen", 10212 weekUntil: "over een week", 10213 weeksUntil: "over {delta} weken", 10214 monthUntil: "over een maand", 10215 monthsUntil: "over {delta} maanden", 10216 yearUntil: "over een jaar", 10217 yearsUntil: "over {delta} jaar", 10218}); 10219Locale.define("nl-NL", "FormValidator", { 10220 required: "Dit veld is verplicht.", 10221 length: 10222 "Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).", 10223 minLength: 10224 "Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).", 10225 maxLength: 10226 "Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).", 10227 integer: 10228 "Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.", 10229 numeric: 10230 'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").', 10231 digits: 10232 "Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).", 10233 alpha: 10234 "Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.", 10235 alphanum: 10236 "Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.", 10237 dateSuchAs: "Vul een geldige datum in, zoals {date}", 10238 dateInFormatMDY: 10239 'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")', 10240 email: 'Vul een geldig e-mailadres in. Bijvoorbeeld "[email protected]".', 10241 url: "Vul een geldige URL in, zoals http://www.example.com.", 10242 currencyDollar: "Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .",
10243 oneRequired: "Vul iets in bij in ieder geval een van deze velden.", 10244 warningPrefix: "Waarschuwing: ", 10245 errorPrefix: "Fout: ", 10246 noSpace: "Spaties zijn niet toegestaan in dit veld.", 10247 reqChkByNode: "Er zijn geen items geselecteerd.", 10248 requiredChk: "Dit veld is verplicht.", 10249 reqChkByName: "Selecteer een {label}.", 10250 match: "Dit veld moet overeen komen met het {matchName} veld", 10251 startDate: "de begin datum", 10252 endDate: "de eind datum", 10253 currendDate: "de huidige datum", 10254 afterDate: "De datum moet hetzelfde of na {label} zijn.", 10255 beforeDate: "De datum moet hetzelfde of voor {label} zijn.", 10256 startMonth: "Selecteer een begin maand", 10257 sameMonth: 10258 "Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.", 10259 creditcard: 10260 "Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld.", 10261}); 10262Locale.define("nl-NL").inherit("EU", "Number"); 10263Locale.define("no-NO", "Date", { 10264 dateOrder: ["date", "month", "year"], 10265 shortDate: "%d.%m.%Y", 10266 shortTime: "%H:%M", 10267 AM: "AM", 10268 PM: "PM", 10269 firstDayOfWeek: 1, 10270 lessThanMinuteAgo: "kortere enn et minutt siden", 10271 minuteAgo: "omtrent et minutt siden", 10272 minutesAgo: "{delta} minutter siden", 10273 hourAgo: "omtrent en time siden", 10274 hoursAgo: "omtrent {delta} timer siden", 10275 dayAgo: "{delta} dag siden", 10276 daysAgo: "{delta} dager siden", 10277}); 10278Locale.define("no-NO", "FormValidator", { 10279 required: "Dette feltet er pÃÂ¥krevd.", 10280 minLength: 10281 "Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).", 10282 maxLength: 10283 "Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).", 10284 integer: 10285 "Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.", 10286 numeric: 10287 'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").', 10288 digits: "Vennligst bruk kun nummer og skilletegn i dette feltet.", 10289 alpha: 10290 "Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.", 10291 alphanum: 10292 "Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.", 10293 dateSuchAs: "Vennligst skriv inn en gyldig dato, som {date}", 10294 dateInFormatMDY: 10295 'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")', 10296 email: 10297 'Vennligst skriv inn en gyldig epost-adresse. For eksempel "[email protected]".', 10298 url: "Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.", 10299 currencyDollar: 10300 "Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .", 10301 oneRequired: "Vennligst fyll ut noe i minst ett av disse feltene.", 10302 errorPrefix: "Feil: ", 10303 warningPrefix: "Advarsel: ", 10304}); 10305Locale.define("pl-PL", "Date", { 10306 months: [ 10307 "StyczeÅ", 10308 "Luty", 10309 "Marzec", 10310 "KwiecieÅ", 10311 "Maj", 10312 "Czerwiec", 10313 "Lipiec", 10314 "SierpieÅ", 10315 "WrzesieÅ", 10316 "Październik", 10317 "Listopad", 10318 "GrudzieÅ", 10319 ], 10320 months_abbr: [ 10321 "sty", 10322 "lut", 10323 "mar", 10324 "kwi", 10325 "maj", 10326 "cze", 10327 "lip", 10328 "sie", 10329 "wrz", 10330 "paź", 10331 "lis", 10332 "gru", 10333 ], 10334 days: [ 10335 "Niedziela", 10336 "PoniedziaÅek", 10337 "Wtorek", 10338 "Åroda", 10339 "Czwartek", 10340 "PiÄ tek", 10341 "Sobota", 10342 ], 10343 days_abbr: ["niedz.", "pon.", "wt.", "År.", "czw.", "pt.", "sob."], 10344 dateOrder: ["year", "month", "date"], 10345 shortDate: "%Y-%m-%d", 10346 shortTime: "%H:%M", 10347 AM: "nad ranem", 10348 PM: "po poÅudniu", 10349 firstDayOfWeek: 1, 10350 ordinal: function (a) { 10351 return a > 3 && a < 21 10352 ? "ty" 10353 : ["ty", "szy", "gi", "ci", "ty"][Math.min(a % 10, 4)]; 10354 }, 10355 lessThanMinuteAgo: "mniej niż minute temu", 10356 minuteAgo: "okoÅo minutÄ temu", 10357 minutesAgo: "{delta} minut temu", 10358 hourAgo: "okoÅo godzinÄ temu", 10359 hoursAgo: "okoÅo {delta} godzin temu", 10360 dayAgo: "Wczoraj", 10361 daysAgo: "{delta} dni temu", 10362 lessThanMinuteUntil: "za niecaÅÄ minutÄ", 10363 minuteUntil: "za okoÅo minutÄ", 10364 minutesUntil: "za {delta} minut", 10365 hourUntil: "za okoÅo godzinÄ", 10366 hoursUntil: "za okoÅo {delta} godzin", 10367 dayUntil: "za 1 dzieÅ", 10368 daysUntil: "za {delta} dni", 10369}); 10370Locale.define("pl-PL", "FormValidator", { 10371 required: "To pole jest wymagane.", 10372 minLength: 10373 "Wymagane jest przynajmniej {minLength} znaków (wpisanych zostaÅo tylko {length}).", 10374 maxLength: 10375 "Dozwolone jest nie wiÄcej niż {maxLength} znaków (wpisanych zostaÅo {length})", 10376 integer: 10377 "To pole wymaga liczb caÅych. Liczby dziesiÄtne (np. 1.25) sÄ niedozwolone.", 10378 numeric: 10379 'Prosimy używaÄ tylko numerycznych wartoÅci w tym polu (np. "1", "1.1", "-1" lub "-1.1").', 10380 digits: 10381 "Prosimy używaÄ liczb oraz zankow punktuacyjnych w typ polu (dla przykÅadu, przy numerze telefonu myÅlniki i kropki sÄ dozwolone).", 10382 alpha: 10383 "Prosimy używaÄ tylko liter (a-z) w tym polu. Spacje oraz inne znaki sÄ niedozwolone.", 10384 alphanum: 10385 "Prosimy używaÄ tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki sÄ niedozwolone.",
10386 dateSuchAs: "Prosimy podaÄ prawidÅowÄ datÄ w formacie: {date}", 10387 dateInFormatMDY: 10388 'Prosimy podaÄ poprawnÄ date w formacie DD.MM.RRRR (i.e. "12.01.2009")', 10389 email: 'Prosimy podaÄ prawidÅowy adres e-mail, np. "[email protected]".', 10390 url: "Prosimy podaÄ prawidÅowy adres URL, np. http://www.example.com.", 10391 currencyDollar: 10392 "Prosimy podaÄ prawidÅowÄ sumÄ w PLN. Dla przykÅadu: 100.00 PLN.", 10393 oneRequired: "Prosimy wypeÅniÄ chociaż jedno z pól.", 10394 errorPrefix: "BÅÄ d: ", 10395 warningPrefix: "Uwaga: ", 10396 noSpace: "W tym polu nie mogÄ znajdowaÄ siÄ spacje.", 10397 reqChkByNode: "Brak zaznaczonych elementów.", 10398 requiredChk: "To pole jest wymagane.", 10399 reqChkByName: "Prosimy wybraÄ z {label}.", 10400 match: "To pole musi byÄ takie samo jak {matchName}", 10401 startDate: "data poczÄ tkowa", 10402 endDate: "data koÅcowa", 10403 currendDate: "aktualna data", 10404 afterDate: "Podana data poinna byÄ taka sama lub po {label}.", 10405 beforeDate: "Podana data poinna byÄ taka sama lub przed {label}.", 10406 startMonth: "Prosimy wybraÄ poczÄ tkowy miesiÄ c.", 10407 sameMonth: 10408 "Te dwie daty muszÄ byÄ w zakresie tego samego miesiÄ ca - wymagana jest zmiana któregoÅ z pól.", 10409}); 10410Locale.define("pt-PT", "Date", { 10411 months: [ 10412 "Janeiro", 10413 "Fevereiro", 10414 "Março", 10415 "Abril", 10416 "Maio", 10417 "Junho", 10418 "Julho", 10419 "Agosto", 10420 "Setembro", 10421 "Outubro", 10422 "Novembro", 10423 "Dezembro", 10424 ], 10425 months_abbr: [ 10426 "Jan", 10427 "Fev", 10428 "Mar", 10429 "Abr", 10430 "Mai", 10431 "Jun", 10432 "Jul", 10433 "Ago", 10434 "Set", 10435 "Out", 10436 "Nov", 10437 "Dez", 10438 ], 10439 days: [ 10440 "Domingo", 10441 "Segunda-feira", 10442 "Terça-feira", 10443 "Quarta-feira", 10444 "Quinta-feira", 10445 "Sexta-feira", 10446 "Sábado", 10447 ], 10448 days_abbr: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], 10449 dateOrder: ["date", "month", "year"], 10450 shortDate: "%d-%m-%Y", 10451 shortTime: "%H:%M", 10452 AM: "AM", 10453 PM: "PM", 10454 firstDayOfWeek: 1, 10455 ordinal: "º", 10456 lessThanMinuteAgo: "há menos de um minuto", 10457 minuteAgo: "há cerca de um minuto", 10458 minutesAgo: "há {delta} minutos", 10459 hourAgo: "há cerca de uma hora", 10460 hoursAgo: "há cerca de {delta} horas", 10461 dayAgo: "há um dia", 10462 daysAgo: "há {delta} dias", 10463 weekAgo: "há uma semana", 10464 weeksAgo: "há {delta} semanas", 10465 monthAgo: "há um mês", 10466 monthsAgo: "há {delta} meses", 10467 yearAgo: "há um ano", 10468 yearsAgo: "há {delta} anos", 10469 lessThanMinuteUntil: "em menos de um minuto", 10470 minuteUntil: "em um minuto", 10471 minutesUntil: "em {delta} minutos", 10472 hourUntil: "em uma hora", 10473 hoursUntil: "em {delta} horas", 10474 dayUntil: "em um dia", 10475 daysUntil: "em {delta} dias", 10476 weekUntil: "em uma semana", 10477 weeksUntil: "em {delta} semanas", 10478 monthUntil: "em um mês", 10479 monthsUntil: "em {delta} meses", 10480 yearUntil: "em um ano", 10481 yearsUntil: "em {delta} anos", 10482}); 10483Locale.define("pt-BR", "Date", { shortDate: "%d/%m/%Y" }).inherit( 10484 "pt-PT", 10485 "Date" 10486); 10487Locale.define("pt-BR", "FormValidator", { 10488 required: "Este campo é obrigatório.", 10489 minLength: 10490 "Digite pelo menos {minLength} caracteres (tamanho atual: {length}).", 10491 maxLength: 10492 "Não digite mais de {maxLength} caracteres (tamanho atual: {length}).", 10493 integer: 10494 "Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).", 10495 numeric: 10496 'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").', 10497 digits: 10498 "Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).", 10499 alpha: 10500 "Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.", 10501 alphanum: 10502 "Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.", 10503 dateSuchAs: "Digite uma data válida, como {date}", 10504 dateInFormatMDY: 10505 'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")', 10506 email: 'Digite um endereço de email válido. Por exemplo "[email protected]".', 10507 url: "Digite uma URL válida. Exemplo: http://www.example.com.", 10508 currencyDollar: "Digite um valor em dinheiro válido. Exemplo: R$100,00 .", 10509 oneRequired: "Digite algo para pelo menos um desses campos.", 10510 errorPrefix: "Erro: ", 10511 warningPrefix: "Aviso: ", 10512 noSpace: "Não é possÃvel digitar espaços neste campo.", 10513 reqChkByNode: "Não foi selecionado nenhum item.", 10514 requiredChk: "Este campo é obrigatório.", 10515 reqChkByName: "Por favor digite um {label}.", 10516 match: "Este campo deve ser igual ao campo {matchName}.", 10517 startDate: "a data inicial", 10518 endDate: "a data final", 10519 currendDate: "a data atual", 10520 afterDate: "A data deve ser igual ou posterior a {label}.", 10521 beforeDate: "A data deve ser igual ou anterior a {label}.", 10522 startMonth: "Por favor selecione uma data inicial.", 10523 sameMonth: 10524 "Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.", 10525 creditcard: 10526 "O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados.", 10527}); 10528Locale.define("pt-PT", "FormValidator", { 10529 required: "Este campo é necessário.", 10530 minLength: 10531 "Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).", 10532 maxLength: 10533 "Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).", 10534 integer: 10535 "Digite um número inteiro neste domÃnio. Com números decimais (por exemplo, 1,25), não são permitidas.", 10536 numeric: 10537 'Digite apenas valores numéricos neste domÃnio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").', 10538 digits: 10539 "Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).", 10540 alpha: 10541 "Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.", 10542 alphanum: 10543 "Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.", 10544 dateSuchAs: "Digite uma data válida, como {date}", 10545 dateInFormatMDY: 10546 'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")', 10547 email: 'Digite um endereço de email válido. Por exemplo "[email protected]".', 10548 url: "Digite uma URL válida, como http://www.example.com.", 10549 currencyDollar: "Digite um valor válido $. Por exemplo $ 100,00. ", 10550 oneRequired: "Digite algo para pelo menos um desses insumos.", 10551 errorPrefix: "Erro: ", 10552 warningPrefix: "Aviso: ", 10553}); 10554(function () { 10555 var a = function (h, e, d, g, b) { 10556 var c = h % 10, 10557 f = h % 100; 10558 if (c == 1 && f != 11) { 10559 return e; 10560 } else { 10561 if ((c == 2 || c == 3 || c == 4) && !(f == 12 || f == 13 || f == 14)) { 10562 return d; 10563 } else { 10564 if ( 10565 c == 0 || 10566 c == 5 || 10567 c == 6 || 10568 c == 7 || 10569 c == 8 || 10570 c == 9 || 10571 f == 11 || 10572 f == 12 || 10573 f == 13 || 10574 f == 14 10575 ) { 10576 return g; 10577 } else { 10578 return b; 10579 } 10580 } 10581 } 10582 }; 10583 Locale.define("ru-RU", "Date", { 10584 months: [ 10585 "ЯнваÑÑ", 10586 "ФевÑалÑ", 10587 "ÐаÑÑ", 10588 "ÐпÑелÑ", 10589 "Ðай", 10590 "ÐÑнÑ", 10591 "ÐÑлÑ", 10592 "ÐвгÑÑÑ", 10593 "СенÑÑбÑÑ", 10594 "ÐкÑÑбÑÑ", 10595 "ÐоÑбÑÑ", 10596 "ÐекабÑÑ", 10597 ], 10598 months_abbr: [ 10599 "Ñнв", 10600 "ÑевÑ", 10601 "маÑÑ", 10602 "апÑ", 10603 "май", 10604 "иÑнÑ", 10605 "иÑлÑ", 10606 "авг", 10607 "ÑенÑ", 10608 "окÑ", 10609 "ноÑб", 10610 "дек", 10611 ], 10612 days: [ 10613 "ÐоÑкÑеÑенÑе", 10614 "ÐонеделÑник", 10615 "ÐÑоÑник", 10616 "СÑеда", 10617 "ЧеÑвеÑг", 10618 "ÐÑÑниÑа", 10619 "СÑббоÑа", 10620 ], 10621 days_abbr: ["ÐÑ", "Ðн", "ÐÑ", "СÑ", "ЧÑ", "ÐÑ", "Сб"], 10622 dateOrder: ["date", "month", "year"], 10623 shortDate: "%d.%m.%Y", 10624 shortTime: "%H:%M", 10625 AM: "AM", 10626 PM: "PM", 10627 firstDayOfWeek: 1, 10628 ordinal: "", 10629 lessThanMinuteAgo: "менÑÑе минÑÑÑ Ð½Ð°Ð·Ð°Ð´", 10630 minuteAgo: "минÑÑÑ Ð½Ð°Ð·Ð°Ð´", 10631 minutesAgo: function (b) { 10632 return "{delta} " + a(b, "минÑÑÑ", "минÑÑÑ", "минÑÑ") + " назад"; 10633 }, 10634 hourAgo: "ÑÐ°Ñ Ð½Ð°Ð·Ð°Ð´", 10635 hoursAgo: function (b) { 10636 return "{delta} " + a(b, "ÑаÑ", "ÑаÑа", "ÑаÑов") + " назад"; 10637 }, 10638 dayAgo: "вÑеÑа", 10639 daysAgo: function (b) { 10640 return "{delta} " + a(b, "денÑ", "днÑ", "дней") + " назад"; 10641 }, 10642 weekAgo: "Ð½ÐµÐ´ÐµÐ»Ñ Ð½Ð°Ð·Ð°Ð´", 10643 weeksAgo: function (b) { 10644 return "{delta} " + a(b, "неделÑ", "недели", "неделÑ") + " назад"; 10645 }, 10646 monthAgo: "меÑÑÑ Ð½Ð°Ð·Ð°Ð´", 10647 monthsAgo: function (b) { 10648 return "{delta} " + a(b, "меÑÑÑ", "меÑÑÑа", "меÑеÑев") + " назад"; 10649 },
10650 yearAgo: "год назад", 10651 yearsAgo: function (b) { 10652 return "{delta} " + a(b, "год", "года", "леÑ") + " назад"; 10653 }, 10654 lessThanMinuteUntil: "менÑÑе Ñем ÑеÑез минÑÑÑ", 10655 minuteUntil: "ÑеÑез минÑÑÑ", 10656 minutesUntil: function (b) { 10657 return "ÑеÑез {delta} " + a(b, "ÑаÑ", "ÑаÑа", "ÑаÑов") + ""; 10658 }, 10659 hourUntil: "ÑеÑез ÑаÑ", 10660 hoursUntil: function (b) { 10661 return "ÑеÑез {delta} " + a(b, "ÑаÑ", "ÑаÑа", "ÑаÑов") + ""; 10662 }, 10663 dayUntil: "завÑÑа", 10664 daysUntil: function (b) { 10665 return "ÑеÑез {delta} " + a(b, "денÑ", "днÑ", "дней") + ""; 10666 }, 10667 weekUntil: "ÑеÑез неделÑ", 10668 weeksUntil: function (b) { 10669 return "ÑеÑез {delta} " + a(b, "неделÑ", "недели", "неделÑ") + ""; 10670 }, 10671 monthUntil: "ÑеÑез меÑÑÑ", 10672 monthsUntil: function (b) { 10673 return "ÑеÑез {delta} " + a(b, "меÑÑÑ", "меÑÑÑа", "меÑеÑев") + ""; 10674 }, 10675 yearUntil: "ÑеÑез", 10676 yearsUntil: function (b) { 10677 return "ÑеÑез {delta} " + a(b, "год", "года", "леÑ") + ""; 10678 }, 10679 }); 10680})(); 10681Locale.define("ru-RU", "FormValidator", { 10682 required: "ÐÑо поле обÑзаÑелÑно к заполнениÑ.", 10683 minLength: 10684 "ÐожалÑйÑÑа, введиÑе Ñ Ð¾ÑÑ Ð±Ñ {minLength} Ñимволов (ÐÑ Ð²Ð²ÐµÐ»Ð¸ {length}).", 10685 maxLength: 10686 "ÐожалÑйÑÑа, введиÑе не болÑÑе {maxLength} Ñимволов (ÐÑ Ð²Ð²ÐµÐ»Ð¸ {length}).", 10687 integer: 10688 "ÐожалÑйÑÑа, введиÑе в ÑÑо поле ÑиÑло. ÐÑобнÑе ÑиÑла (напÑÐ¸Ð¼ÐµÑ 1.25) ÑÑÑ Ð½Ðµ ÑазÑеÑенÑ.", 10689 numeric: 10690 'ÐожалÑйÑÑа, введиÑе в ÑÑо поле ÑиÑло (напÑÐ¸Ð¼ÐµÑ "1" или "1.1", или "-1", или "-1.1").', 10691 digits: 10692 "Ð ÑÑом поле ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑолÑко ÑиÑÑÑ Ð¸ знаки пÑнкÑÑаÑии (напÑимеÑ, ÑелеÑоннÑй Ð½Ð¾Ð¼ÐµÑ Ñо знаками деÑиÑа или Ñ ÑоÑками).", 10693 alpha: 10694 "Ð ÑÑом поле можно иÑполÑзоваÑÑ ÑолÑко лаÑинÑкие бÑÐºÐ²Ñ (a-z). ÐÑÐ¾Ð±ÐµÐ»Ñ Ð¸ дÑÑгие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð·Ð°Ð¿ÑеÑенÑ.", 10695 alphanum: 10696 "Ð ÑÑом поле можно иÑполÑзоваÑÑ ÑолÑко лаÑинÑкие бÑÐºÐ²Ñ (a-z) и ÑиÑÑÑ (0-9). ÐÑÐ¾Ð±ÐµÐ»Ñ Ð¸ дÑÑгие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð·Ð°Ð¿ÑеÑенÑ.", 10697 dateSuchAs: "ÐожалÑйÑÑа, введиÑе коÑÑекÑнÑÑ Ð´Ð°ÑÑ {date}", 10698 dateInFormatMDY: 10699 'ÐожалÑйÑÑа, введиÑе даÑÑ Ð² ÑоÑмаÑе ÐÐ/ÐÐ/ÐÐÐÐ (напÑÐ¸Ð¼ÐµÑ "12/31/1999")', 10700 email: 10701 'ÐожалÑйÑÑа, введиÑе коÑÑекÑнÑй емейл-адÑеÑ. ÐÐ»Ñ Ð¿ÑимеÑа "[email protected]".', 10702 url: "ÐожалÑйÑÑа, введиÑе пÑавилÑнÑÑ ÑÑÑÐ»ÐºÑ Ð²Ð¸Ð´Ð° http://www.example.com.", 10703 currencyDollar: "ÐожалÑйÑÑа, введиÑе ÑÑÐ¼Ð¼Ñ Ð² доллаÑÐ°Ñ . ÐапÑимеÑ: $100.00 .", 10704 oneRequired: "ÐожалÑйÑÑа, вÑбеÑиÑе Ñ Ð¾ÑÑ ÑÑо-нибÑÐ´Ñ Ð² одном из ÑÑÐ¸Ñ Ð¿Ð¾Ð»ÐµÐ¹.", 10705 errorPrefix: "ÐÑибка: ", 10706 warningPrefix: "Ðнимание: ", 10707}); 10708(function () { 10709 var a = function (f, d, c, e, b) { 10710 return f >= 1 && f <= 3 ? arguments[f] : b; 10711 }; 10712 Locale.define("si-SI", "Date", { 10713 months: [ 10714 "januar", 10715 "februar", 10716 "marec", 10717 "april", 10718 "maj", 10719 "junij", 10720 "julij", 10721 "avgust", 10722 "september", 10723 "oktober", 10724 "november", 10725 "december", 10726 ], 10727 months_abbr: [ 10728 "jan", 10729 "feb", 10730 "mar", 10731 "apr", 10732 "maj", 10733 "jun", 10734 "jul", 10735 "avg", 10736 "sep", 10737 "okt", 10738 "nov", 10739 "dec", 10740 ], 10741 days: [ 10742 "nedelja", 10743 "ponedeljek", 10744 "torek", 10745 "sreda", 10746 "Äetrtek", 10747 "petek", 10748 "sobota", 10749 ], 10750 days_abbr: ["ned", "pon", "tor", "sre", "Äet", "pet", "sob"], 10751 dateOrder: ["date", "month", "year"], 10752 shortDate: "%d.%m.%Y", 10753 shortTime: "%H.%M", 10754 AM: "AM", 10755 PM: "PM", 10756 firstDayOfWeek: 1, 10757 ordinal: ".",
10758 lessThanMinuteAgo: "manj kot minuto nazaj", 10759 minuteAgo: "minuto nazaj", 10760 minutesAgo: function (b) { 10761 return ( 10762 "{delta} " + a(b, "minuto", "minuti", "minute", "minut") + " nazaj" 10763 ); 10764 }, 10765 hourAgo: "uro nazaj", 10766 hoursAgo: function (b) { 10767 return "{delta} " + a(b, "uro", "uri", "ure", "ur") + " nazaj"; 10768 }, 10769 dayAgo: "dan nazaj", 10770 daysAgo: function (b) { 10771 return "{delta} " + a(b, "dan", "dneva", "dni", "dni") + " nazaj"; 10772 }, 10773 weekAgo: "teden nazaj", 10774 weeksAgo: function (b) { 10775 return "{delta} " + a(b, "teden", "tedna", "tedne", "tednov") + " nazaj"; 10776 }, 10777 monthAgo: "mesec nazaj", 10778 monthsAgo: function (b) { 10779 return ( 10780 "{delta} " + a(b, "mesec", "meseca", "mesece", "mesecov") + " nazaj" 10781 ); 10782 }, 10783 yearthAgo: "leto nazaj", 10784 yearsAgo: function (b) { 10785 return "{delta} " + a(b, "leto", "leti", "leta", "let") + " nazaj"; 10786 }, 10787 lessThanMinuteUntil: "Å¡e manj kot minuto", 10788 minuteUntil: "Å¡e minuta", 10789 minutesUntil: function (b) { 10790 return "Å¡e {delta} " + a(b, "minuta", "minuti", "minute", "minut"); 10791 }, 10792 hourUntil: "Å¡e ura", 10793 hoursUntil: function (b) { 10794 return "Å¡e {delta} " + a(b, "ura", "uri", "ure", "ur"); 10795 }, 10796 dayUntil: "Å¡e dan", 10797 daysUntil: function (b) { 10798 return "Å¡e {delta} " + a(b, "dan", "dneva", "dnevi", "dni"); 10799 }, 10800 weekUntil: "Å¡e tedn", 10801 weeksUntil: function (b) { 10802 return "Å¡e {delta} " + a(b, "teden", "tedna", "tedni", "tednov"); 10803 }, 10804 monthUntil: "Å¡e mesec", 10805 monthsUntil: function (b) { 10806 return "Å¡e {delta} " + a(b, "mesec", "meseca", "meseci", "mesecov"); 10807 }, 10808 yearUntil: "Å¡e leto", 10809 yearsUntil: function (b) { 10810 return "Å¡e {delta} " + a(b, "leto", "leti", "leta", "let"); 10811 }, 10812 }); 10813})(); 10814Locale.define("si-SI", "FormValidator", { 10815 required: "To polje je obvezno", 10816 minLength: 10817 "Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).", 10818 maxLength: 10819 "Prosim, ne vnesite veÄ kot {maxLength} znakov (vnesli ste {length} znakov).", 10820 integer: 10821 "Prosim, vnesite celo Å¡tevilo. Decimalna Å¡tevila (kot 1,25) niso dovoljena.", 10822 numeric: 10823 'Prosim, vnesite samo numeriÄne vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").', 10824 digits: 10825 "Prosim, uporabite Å¡tevilke in loÄila le na tem polju (na primer, dovoljena je telefonska Å¡tevilka z pomiÅ¡laji ali pikami).", 10826 alpha: 10827 "Prosim, uporabite le Ärke v tem plju. Presledki in drugi znaki niso dovoljeni.", 10828 alphanum: 10829 "Prosim, uporabite samo Ärke ali Å¡tevilke v tem polju. Presledki in drugi znaki niso dovoljeni.", 10830 dateSuchAs: "Prosim, vnesite pravilen datum kot {date}", 10831 dateInFormatMDY: 10832 'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")', 10833 email: 'Prosim, vnesite pravilen email naslov. Na primer "[email protected]".', 10834 url: "Prosim, vnesite pravilen URL kot http://www.example.com.", 10835 currencyDollar: "Prosim, vnesit epravilno vrednost â¬. Primer 100,00⬠.", 10836 oneRequired: "Prosimo, vnesite nekaj za vsaj eno izmed teh polj.", 10837 errorPrefix: "Napaka: ", 10838 warningPrefix: "Opozorilo: ", 10839 noSpace: "To vnosno polje ne dopuÅ¡Äa presledkov.", 10840 reqChkByNode: "NiÄ niste izbrali.", 10841 requiredChk: "To polje je obvezno", 10842 reqChkByName: "Prosim, izberite {label}.", 10843 match: "To polje se mora ujemati z poljem {matchName}", 10844 startDate: "datum zaÄetka", 10845 endDate: "datum konca", 10846 currendDate: "trenuten datum", 10847 afterDate: "Datum bi moral biti isti ali po {label}.", 10848 beforeDate: "Datum bi moral biti isti ali pred {label}.", 10849 startMonth: "Prosim, vnesite zaÄetni datum", 10850 sameMonth: 10851 "Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.", 10852 creditcard: 10853 "Å tevilka kreditne kartice ni pravilna. Preverite Å¡tevilko ali poskusite Å¡e enkrat. VneÅ¡enih {length} znakov.", 10854}); 10855Locale.define("sv-SE", "Date", { 10856 months: [ 10857 "januari", 10858 "februari", 10859 "mars", 10860 "april", 10861 "maj", 10862 "juni", 10863 "juli", 10864 "augusti", 10865 "september", 10866 "oktober", 10867 "november", 10868 "december", 10869 ], 10870 months_abbr: [ 10871 "jan", 10872 "feb", 10873 "mar", 10874 "apr", 10875 "maj", 10876 "jun", 10877 "jul", 10878 "aug", 10879 "sep", 10880 "okt", 10881 "nov", 10882 "dec", 10883 ], 10884 days: ["söndag", "mÃ¥ndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"], 10885 days_abbr: ["sön", "mÃ¥n", "tis", "ons", "tor", "fre", "lör"], 10886 dateOrder: ["year", "month", "date"], 10887 shortDate: "%Y-%m-%d", 10888 shortTime: "%H:%M", 10889 AM: "", 10890 PM: "", 10891 firstDayOfWeek: 1, 10892 ordinal: "", 10893 lessThanMinuteAgo: "mindre än en minut sedan", 10894 minuteAgo: "ungefär en minut sedan", 10895 minutesAgo: "{delta} minuter sedan", 10896 hourAgo: "ungefär en timme sedan", 10897 hoursAgo: "ungefär {delta} timmar sedan", 10898 dayAgo: "1 dag sedan", 10899 daysAgo: "{delta} dagar sedan", 10900 lessThanMinuteUntil: "mindre än en minut sedan", 10901 minuteUntil: "ungefär en minut sedan", 10902 minutesUntil: "{delta} minuter sedan", 10903 hourUntil: "ungefär en timme sedan", 10904 hoursUntil: "ungefär {delta} timmar sedan", 10905 dayUntil: "1 dag sedan", 10906 daysUntil: "{delta} dagar sedan", 10907}); 10908Locale.define("sv-SE", "FormValidator", { 10909 required: "Fältet är obligatoriskt.", 10910 minLength: "Ange minst {minLength} tecken (du angav {length} tecken).", 10911 maxLength: "Ange högst {maxLength} tecken (du angav {length} tecken). ", 10912 integer: 10913 "Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillÃ¥tna.", 10914 numeric: 10915 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").', 10916 digits: 10917 "Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillÃ¥tet).", 10918 alpha: 10919 "Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillÃ¥tna.", 10920 alphanum: 10921 "Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillÃ¥tna.", 10922 dateSuchAs: "Ange ett giltigt datum som t.ex. {date}", 10923 dateInFormatMDY: 10924 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")', 10925 email: 'Ange en giltig e-postadress. Till exempel "[email protected]".', 10926 url: "Ange en giltig webbadress som http://www.example.com.", 10927 currencyDollar: "Ange en giltig belopp. Exempelvis 100,00.", 10928 oneRequired: "Vänligen ange minst ett av dessa alternativ.", 10929 errorPrefix: "Fel: ", 10930 warningPrefix: "Varning: ", 10931 noSpace: "Det fÃ¥r inte finnas nÃ¥gra mellanslag i detta fält.", 10932 reqChkByNode: "Inga objekt är valda.", 10933 requiredChk: "Detta är ett obligatoriskt fält.", 10934 reqChkByName: "Välj en {label}.", 10935 match: "Detta fält mÃ¥ste matcha {matchName}", 10936 startDate: "startdatumet", 10937 endDate: "slutdatum", 10938 currendDate: "dagens datum", 10939 afterDate: "Datumet bör vara samma eller senare än {label}.", 10940 beforeDate: "Datumet bör vara samma eller tidigare än {label}.", 10941 startMonth: "Välj en start mÃ¥nad", 10942 sameMonth: 10943 "Dessa tvÃ¥ datum mÃ¥ste vara i samma mÃ¥nad - du mÃ¥ste ändra det ena eller det andra.", 10944}); 10945(function () { 10946 var a = function (j, e, c, i, b) { 10947 var h = (j / 10).toInt(), 10948 g = j % 10, 10949 f = (j / 100).toInt(); 10950 if (h == 1 && j > 10) { 10951 return i; 10952 } 10953 if (g == 1) { 10954 return e; 10955 } 10956 if (g > 0 && g < 5) { 10957 return c; 10958 } 10959 return i; 10960 }; 10961 Locale.define("uk-UA", "Date", { 10962 months: [ 10963 "СÑÑенÑ", 10964 "ÐÑÑий", 10965 "ÐеÑезенÑ", 10966 "ÐвÑÑенÑ", 10967 "ТÑавенÑ", 10968 "ЧеÑвенÑ", 10969 "ÐипенÑ", 10970 "СеÑпенÑ", 10971 "ÐеÑеÑенÑ", 10972 "ÐовÑенÑ", 10973 "ÐиÑÑопад", 10974 "ÐÑÑденÑ", 10975 ], 10976 months_abbr: [ 10977 "СÑÑ", 10978 "ÐÑÑ", 10979 "ÐеÑ", 10980 "ÐвÑÑ", 10981 "ТÑав", 10982 "ЧеÑв", 10983 "Ðип", 10984 "СеÑп", 10985 "ÐеÑ", 10986 "ÐовÑ", 10987 "ÐиÑÑ", 10988 "ÐÑÑд", 10989 ], 10990 days: [ 10991 "ÐедÑлÑ", 10992 "ÐонедÑлок", 10993 "ÐÑвÑоÑок", 10994 "СеÑеда", 10995 "ЧеÑвеÑ", 10996 "Ð'ÑÑниÑÑ", 10997 "СÑбоÑа", 10998 ], 10999 days_abbr: ["Ðд", "Ðн", "ÐÑ", "СÑ", "ЧÑ", "ÐÑ", "Сб"], 11000 dateOrder: ["date", "month", "year"], 11001 shortDate: "%d/%m/%Y", 11002 shortTime: "%H:%M", 11003 AM: "до полÑднÑ", 11004 PM: "по полÑднÑ", 11005 firstDayOfWeek: 1, 11006 ordinal: "", 11007 lessThanMinuteAgo: "менÑÑе Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸ ÑомÑ", 11008 minuteAgo: "Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ ÑомÑ", 11009 minutesAgo: function (b) { 11010 return "{delta} " + a(b, "Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ", "Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸", "Ñ Ð²Ð¸Ð»Ð¸Ð½") + " ÑомÑ"; 11011 }, 11012 hourAgo: "Ð³Ð¾Ð´Ð¸Ð½Ñ ÑомÑ", 11013 hoursAgo: function (b) { 11014 return "{delta} " + a(b, "годинÑ", "години", "годин") + " ÑомÑ"; 11015 }, 11016 dayAgo: "вÑоÑа", 11017 daysAgo: function (b) { 11018 return "{delta} " + a(b, "денÑ", "днÑ", "днÑв") + " ÑомÑ"; 11019 }, 11020 weekAgo: "ÑÐ¸Ð¶Ð´ÐµÐ½Ñ ÑомÑ", 11021 weeksAgo: function (b) { 11022 return "{delta} " + a(b, "ÑижденÑ", "ÑижнÑ", "ÑижнÑв") + " ÑомÑ"; 11023 }, 11024 monthAgo: "мÑÑÑÑÑ ÑомÑ", 11025 monthsAgo: function (b) { 11026 return "{delta} " + a(b, "мÑÑÑÑÑ", "мÑÑÑÑÑ", "мÑÑÑÑÑв") + " ÑомÑ"; 11027 }, 11028 yearAgo: "ÑÑк ÑомÑ", 11029 yearsAgo: function (b) { 11030 return "{delta} " + a(b, "ÑÑк", "Ñоки", "ÑокÑв") + " ÑомÑ"; 11031 }, 11032 lessThanMinuteUntil: "за миÑÑ", 11033 minuteUntil: "ÑеÑез Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ", 11034 minutesUntil: function (b) { 11035 return "ÑеÑез {delta} " + a(b, "Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ", "Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸", "Ñ Ð²Ð¸Ð»Ð¸Ð½"); 11036 }, 11037 hourUntil: "ÑеÑез годинÑ", 11038 hoursUntil: function (b) { 11039 return "ÑеÑез {delta} " + a(b, "годинÑ", "години", "годин"); 11040 }, 11041 dayUntil: "завÑÑа", 11042 daysUntil: function (b) { 11043 return "ÑеÑез {delta} " + a(b, "денÑ", "днÑ", "днÑв"); 11044 }, 11045 weekUntil: "ÑеÑез ÑижденÑ", 11046 weeksUntil: function (b) { 11047 return "ÑеÑез {delta} " + a(b, "ÑижденÑ", "ÑижнÑ", "ÑижнÑв"); 11048 }, 11049 monthUntil: "ÑеÑез мÑÑÑÑÑ", 11050 monthesUntil: function (b) { 11051 return "ÑеÑез {delta} " + a(b, "мÑÑÑÑÑ", "мÑÑÑÑÑ", "мÑÑÑÑÑв"); 11052 }, 11053 yearUntil: "ÑеÑез ÑÑк", 11054 yearsUntil: function (b) { 11055 return "ÑеÑез {delta} " + a(b, "ÑÑк", "Ñоки", "ÑокÑв"); 11056 }, 11057 }); 11058})(); 11059Locale.define("uk-UA", "FormValidator", { 11060 required: "Це поле повинне бÑÑи заповненим.", 11061 minLength: "ÐведÑÑÑ Ñ Ð¾Ñа б {minLength} ÑимволÑв (Ðи ввели {length}).", 11062 maxLength: 11063 "ÐÑлÑкÑÑÑÑ ÑимволÑв не може бÑÑи бÑлÑÑе {maxLength} (Ðи ввели {length}).", 11064 integer: 11065 "ÐведÑÑÑ Ð² Ñе поле ÑиÑло. ÐÑÐ¾Ð±Ð¾Ð²Ñ ÑиÑла (напÑиклад 1.25) не дозволенÑ.", 11066 numeric: 11067 'ÐведÑÑÑ Ð² Ñе поле ÑиÑло (напÑиклад "1" або "1.1", або "-1", або "-1.1").', 11068 digits: 11069 "Ð ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð²Ð¸ можеÑе викоÑиÑÑовÑваÑи лиÑе ÑиÑÑи Ñ Ð·Ð½Ð°ÐºÐ¸ пÑнкÑÑаÑÑÑ (напÑиклад, ÑелеÑонний Ð½Ð¾Ð¼ÐµÑ Ð· знаками деÑÑÐ·Ñ Ð°Ð±Ð¾ з кÑапками).", 11070 alpha: 11071 "Ð ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð° викоÑиÑÑовÑваÑи лиÑе лаÑинÑÑÐºÑ Ð»ÑÑеÑи (a-z). ÐÑобÑли Ñ ÑнÑÑ Ñимволи забоÑоненÑ.", 11072 alphanum: 11073 "Ð ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð° викоÑиÑÑовÑваÑи лиÑе лаÑинÑÑÐºÑ Ð»ÑÑеÑи (a-z) Ñ ÑиÑÑи (0-9). ÐÑобÑли Ñ ÑнÑÑ Ñимволи забоÑоненÑ.", 11074 dateSuchAs: "ÐведÑÑÑ ÐºÐ¾ÑекÑÐ½Ñ Ð´Ð°ÑÑ {date}.", 11075 dateInFormatMDY: 11076 'ÐведÑÑÑ Ð´Ð°ÑÑ Ð² ÑоÑмаÑÑ ÐÐ/ÐÐ/Ð Ð Ð Ð (напÑиклад "12/31/2009").', 11077 email: 11078 'ÐведÑÑÑ ÐºÐ¾ÑекÑÐ½Ñ Ð°Ð´ÑеÑÑ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи (напÑиклад "[email protected]").', 11079 url: "ÐведÑÑÑ ÐºÐ¾ÑекÑне ÑнÑеÑнеÑ-поÑÐ¸Ð»Ð°Ð½Ð½Ñ (напÑиклад http://www.example.com).", 11080 currencyDollar: 'ÐведÑÑÑ ÑÑÐ¼Ñ Ð² долаÑÐ°Ñ (напÑиклад "$100.00").', 11081 oneRequired: "ÐаповнÑÑÑ Ð¾Ð´Ð½Ðµ з полÑв.", 11082 errorPrefix: "Ðомилка: ", 11083 warningPrefix: "Увага: ", 11084 noSpace: "ÐÑобÑли забоÑоненÑ.", 11085 reqChkByNode: "Ðе вÑдмÑÑено жодного ваÑÑанÑÑ.", 11086 requiredChk: "Це поле повинне бÑÑи вÑмÑÑеним.", 11087 reqChkByName: "ÐÑÐ´Ñ Ð»Ð°Ñка, вÑдмÑÑÑÑе {label}.", 11088 match: "Це поле повинно вÑдповÑдаÑи {matchName}", 11089 startDate: "поÑаÑкова даÑа", 11090 endDate: "кÑнÑева даÑа", 11091 currendDate: "ÑÑогоднÑÑÐ½Ñ Ð´Ð°Ñа", 11092 afterDate: "Ð¦Ñ Ð´Ð°Ñа повинна бÑÑи ÑÐ°ÐºÐ¾Ñ Ð¶, або пÑзнÑÑÐ¾Ñ Ð·Ð° {label}.", 11093 beforeDate: "Ð¦Ñ Ð´Ð°Ñа повинна бÑÑи ÑÐ°ÐºÐ¾Ñ Ð¶, або ÑанÑÑÐ¾Ñ Ð·Ð° {label}.", 11094 startMonth: "ÐÑÐ´Ñ Ð»Ð°Ñка, вибеÑÑÑÑ Ð¿Ð¾ÑаÑковий мÑÑÑÑÑ", 11095 sameMonth: 11096 "Ð¦Ñ Ð´Ð°Ñи Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð²ÑдноÑиÑиÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ Ñого ж мÑÑÑÑÑ. ÐÑÐ´Ñ Ð»Ð°Ñка, змÑнÑÑÑ Ð¾Ð´Ð½Ñ Ð· Ð½Ð¸Ñ .", 11097 creditcard: 11098 "ÐÐ¾Ð¼ÐµÑ ÐºÑедиÑÐ½Ð¾Ñ ÐºÐ°ÑÑи введений непÑавилÑно. ÐÑÐ´Ñ Ð»Ð°Ñка, пеÑевÑÑÑе його. Ðведено {length} ÑимволÑв.", 11099}); 11100Locale.define("zh-CHS", "Date", { 11101 months: [ 11102 "䏿", 11103 "äºæ", 11104 "䏿", 11105 "åæ", 11106 "äºæ", 11107 "å æ", 11108 "䏿", 11109 "å «æ", 11110 "乿", 11111 "åæ", 11112 "å䏿", 11113 "åäºæ", 11114 ], 11115 months_abbr: [ 11116 "ä¸", 11117 "äº", 11118 "ä¸", 11119 "å", 11120 "äº", 11121 "å ", 11122 "ä¸", 11123 "å «", 11124 "ä¹", 11125 "å", 11126 "åä¸", 11127 "åäº", 11128 ], 11129 days: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå "], 11130 days_abbr: ["æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å "], 11131 dateOrder: ["year", "month", "date"], 11132 shortDate: "%Y-%m-%d", 11133 shortTime: "%I:%M%p", 11134 AM: "AM", 11135 PM: "PM", 11136 firstDayOfWeek: 1, 11137 ordinal: "", 11138 lessThanMinuteAgo: "ä¸å°1åéå", 11139 minuteAgo: "大约1åéå", 11140 minutesAgo: "{delta}åéä¹å", 11141 hourAgo: "大约1å°æ¶å", 11142 hoursAgo: "大约{delta}å°æ¶å", 11143 dayAgo: "1天å", 11144 daysAgo: "{delta}天å", 11145 weekAgo: "1ææå", 11146 weeksAgo: "{delta}ææå", 11147 monthAgo: "1个æå", 11148 monthsAgo: "{delta}个æå", 11149 yearAgo: "1å¹´å", 11150 yearsAgo: "{delta}å¹´å", 11151 lessThanMinuteUntil: "ä»ç°å¨å¼å§ä¸å°1åé", 11152 minuteUntil: "ä»ç°å¨å¼å§ç´1åé", 11153 minutesUntil: "ä»ç°å¨å¼å§çº¦{delta}åé", 11154 hourUntil: "ä»ç°å¨å¼å§1å°æ¶", 11155 hoursUntil: "ä»ç°å¨å¼å§çº¦{delta}å°æ¶", 11156 dayUntil: "ä»ç°å¨å¼å§1天", 11157 daysUntil: "ä»ç°å¨å¼å§{delta}天", 11158 weekUntil: "ä»ç°å¨å¼å§1ææ", 11159 weeksUntil: "ä»ç°å¨å¼å§{delta}ææ", 11160 monthUntil: "ä»ç°å¨å¼å§ä¸ä¸ªæ", 11161 monthsUntil: "ä»ç°å¨å¼å§{delta}个æ", 11162 yearUntil: "ä»ç°å¨å¼å§1å¹´", 11163 yearsUntil: "ä»ç°å¨å¼å§{delta}å¹´", 11164}); 11165Locale.define("zh-CHT", "Date", { 11166 months: [ 11167 "䏿", 11168 "äºæ", 11169 "䏿", 11170 "åæ", 11171 "äºæ", 11172 "å æ", 11173 "䏿", 11174 "å «æ", 11175 "乿", 11176 "åæ", 11177 "å䏿", 11178 "åäºæ", 11179 ], 11180 months_abbr: [ 11181 "ä¸", 11182 "äº", 11183 "ä¸", 11184 "å", 11185 "äº", 11186 "å ", 11187 "ä¸", 11188 "å «", 11189 "ä¹", 11190 "å", 11191 "åä¸", 11192 "åäº", 11193 ], 11194 days: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå "], 11195 days_abbr: ["æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å "], 11196 dateOrder: ["year", "month", "date"], 11197 shortDate: "%Y-%m-%d", 11198 shortTime: "%I:%M%p", 11199 AM: "AM", 11200 PM: "PM", 11201 firstDayOfWeek: 1, 11202 ordinal: "", 11203 lessThanMinuteAgo: "ä¸å°1åéå", 11204 minuteAgo: "大ç´1åéå", 11205 minutesAgo: "{delta}åéä¹å", 11206 hourAgo: "大ç´1å°æå", 11207 hoursAgo: "大ç´{delta}å°æå", 11208 dayAgo: "1天å", 11209 daysAgo: "{delta}天å", 11210 weekAgo: "1ææå", 11211 weeksAgo: "{delta}ææå", 11212 monthAgo: "1个æå", 11213 monthsAgo: "{delta}个æå", 11214 yearAgo: "1å¹´å", 11215 yearsAgo: "{delta}å¹´å", 11216 lessThanMinuteUntil: "å¾ç¾å¨éå§ä¸å°1åé", 11217 minuteUntil: "å¾ç¾å¨éå§ç´1åé", 11218 minutesUntil: "å¾ç¾å¨é
11218å§ç´{delta}åé", 11219 hourUntil: "å¾ç¾å¨éå§1å°æ", 11220 hoursUntil: "å¾ç¾å¨éå§ç´{delta}å°æ", 11221 dayUntil: "å¾ç¾å¨éå§1天", 11222 daysUntil: "å¾ç¾å¨éå§{delta}天", 11223 weekUntil: "å¾ç¾å¨éå§1ææ", 11224 weeksUntil: "å¾ç¾å¨éå§{delta}ææ", 11225 monthUntil: "å¾ç¾å¨éå§ä¸åæ", 11226 monthsUntil: "å¾ç¾å¨éå§{delta}åæ", 11227 yearUntil: "å¾ç¾å¨éå§1å¹´", 11228 yearsUntil: "å¾ç¾å¨éå§{delta}å¹´", 11229}); 11230Locale.define("zh-CHS", "FormValidator", { 11231 required: "æ¤é¡¹å¿ å¡«ã", 11232 minLength: "请è³å°è¾å ¥ {minLength} 个å符 (å·²è¾å ¥ {length} 个)ã", 11233 maxLength: "æå¤åªè½è¾å ¥ {maxLength} 个å符 (å·²è¾å ¥ {length} 个)ã", 11234 integer: '请è¾å ¥ä¸ä¸ªæ´æ°ï¼ä¸è½å å«å°æ°ç¹ãä¾å¦ï¼"1", "200"ã', 11235 numeric: '请è¾å ¥ä¸ä¸ªæ°åï¼ä¾å¦ï¼"1", "1.1", "-1", "-1.1"ã', 11236 digits: "请è¾å ¥ç±æ°ååæ ç¹ç¬¦å·ç»æçå 容ãä¾å¦çµè¯å·ç ã", 11237 alpha: "请è¾å ¥ A-Z ç 26 ä¸ªåæ¯ï¼ä¸è½å å«ç©ºæ ¼æä»»ä½å ¶ä»å符ã", 11238 alphanum: 11239 "请è¾å ¥ A-Z ç 26 ä¸ªåæ¯æ 0-9 ç 10 个æ°åï¼ä¸è½å å«ç©ºæ ¼æä»»ä½å ¶ä»å符ã", 11240 dateSuchAs: "请è¾å ¥åæ³çæ¥ææ ¼å¼ï¼å¦ï¼{date}ã", 11241 dateInFormatMDY: '请è¾å ¥åæ³çæ¥ææ ¼å¼ï¼ä¾å¦ï¼YYYY-MM-DD ("2010-12-31")ã', 11242 email: '请è¾å ¥åæ³ççµåä¿¡ç®±å°åï¼ä¾å¦ï¼"[email protected]"ã', 11243 url: "请è¾å ¥åæ³ç Url å°åï¼ä¾å¦ï¼http://www.example.comã", 11244 currencyDollar: "请è¾å ¥åæ³çè´§å¸ç¬¦å·ï¼ä¾å¦ï¼ï¿¥100.0", 11245 oneRequired: "请è³å°éæ©ä¸é¡¹ã", 11246 errorPrefix: "é误ï¼", 11247 warningPrefix: "è¦åï¼", 11248 noSpace: "ä¸è½å å«ç©ºæ ¼ã", 11249 reqChkByNode: "æªéæ©ä»»ä½å 容ã", 11250 requiredChk: "æ¤é¡¹å¿ å¡«ã", 11251 reqChkByName: "è¯·éæ© {label}.", 11252 match: "å¿ é¡»ä¸{matchName}ç¸å¹é ", 11253 startDate: "èµ·å§æ¥æ", 11254 endDate: "ç»ææ¥æ", 11255 currendDate: "å½åæ¥æ", 11256 afterDate: "æ¥æå¿ é¡»çäºææäº {label}.", 11257 beforeDate: "æ¥æå¿ é¡»æ©äºæçäº {label}.", 11258 startMonth: "è¯·éæ©èµ·å§æä»½", 11259 sameMonth: "æ¨å¿ 须修æ¹ä¸¤ä¸ªæ¥æä¸çä¸ä¸ªï¼ä»¥ç¡®ä¿å®ä»¬å¨å䏿份ã", 11260 creditcard: "æ¨è¾å ¥çä¿¡ç¨å¡å·ç 䏿£ç¡®ãå½åå·²è¾å ¥{length}个å符ã", 11261}); 11262Locale.define("zh-CHT", "FormValidator", { 11263 required: "æ¤é å¿ å¡«ã ", 11264 minLength: "è«è³å°è¼¸å ¥{minLength} åå符(å·²è¼¸å ¥{length} å)ã ", 11265 maxLength: "æå¤åªè½è¼¸å ¥{maxLength} åå符(å·²è¼¸å ¥{length} å)ã ", 11266 integer: 'è«è¼¸å ¥ä¸åæ´æ¸ï¼ä¸è½å å«å°æ¸é»ãä¾å¦ï¼"1", "200"ã ', 11267 numeric: 'è«è¼¸å ¥ä¸åæ¸åï¼ä¾å¦ï¼"1", "1.1", "-1", "-1.1"ã ', 11268 digits: "è«è¼¸å ¥ç±æ¸å忍é»ç¬¦èçµæçå §å®¹ãä¾å¦é»è©±è碼ã ", 11269 alpha: "è«è¼¸å ¥AZ ç26 å忝ï¼ä¸è½å å«ç©ºæ ¼æä»»ä½å ¶ä»å符ã ", 11270 alphanum: 11271 "è«è¼¸å ¥AZ ç26 å忝æ0-9 ç10 忏åï¼ä¸è½å å«ç©ºæ ¼æä»»ä½å ¶ä»å符ã ", 11272 dateSuchAs: "è«è¼¸å ¥åæ³çæ¥ææ ¼å¼ï¼å¦ï¼{date}ã ", 11273 dateInFormatMDY: 'è«è¼¸å ¥åæ³çæ¥ææ ¼å¼ï¼ä¾å¦ï¼YYYY-MM-DD ("2010-12-31")ã ', 11274 email: 'è«è¼¸å ¥åæ³çé»åä¿¡ç®±å°åï¼ä¾å¦ï¼"[email protected]"ã ', 11275 url: "è«è¼¸å ¥åæ³çUrl å°åï¼ä¾å¦ï¼http://www.example.comã ", 11276 currencyDollar: "è«è¼¸å ¥åæ³ç貨幣符èï¼ä¾å¦ï¼ï¿¥100.0", 11277 oneRequired: "è«è³å°é¸æä¸é ã ", 11278 errorPrefix: "é¯èª¤ï¼", 11279 warningPrefix: "è¦åï¼", 11280 noSpace: "ä¸è½å å«ç©ºæ ¼ã ", 11281 reqChkByNode: "æªé¸æä»»ä½å §å®¹ã ", 11282 requiredChk: "æ¤é å¿ å¡«ã ", 11283 reqChkByName: "è«é¸æ {label}.", 11284 match: "å¿ é è{matchName}ç¸å¹é ", 11285 startDate: "èµ·å§æ¥æ", 11286 endDate: "çµææ¥æ", 11287 currendDate: "ç¶åæ¥æ", 11288 afterDate: "æ¥æå¿ é çæ¼æææ¼{label}.", 11289 beforeDate: "æ¥æå¿ é æ©æ¼æçæ¼{label}.", 11290 startMonth: "è«é¸æèµ·å§æä»½", 11291 sameMonth: "æ¨å¿ é ä¿®æ¹å ©åæ¥æä¸çä¸åï¼ä»¥ç¢ºä¿å®åå¨å䏿份ã ", 11292 creditcard: "æ¨è¼¸å ¥çä¿¡ç¨å¡èç¢¼ä¸æ£ç¢ºãç¶åå·²è¼¸å ¥{length}åå符ã ", 11293}); 11294Form.Validator.add("validate-currency-yuan", { 11295 errorMsg: function () { 11296 return Form.Validator.getMsg("currencyYuan"); 11297 }, 11298 test: function (a) { 11299 return ( 11300 Form.Validator.getValidator("IsEmpty").test(a) || 11301 /^ï¿¥?\-?([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( 11302 a.get("value") 11303 ) 11304 ); 11305 }, 11306});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.