right-rails 1.0.10 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/README.rdoc +4 -4
  2. data/Rakefile +4 -4
  3. data/lib/right_rails.rb +1 -1
  4. data/public/javascripts/right/autocompleter-src.js +115 -106
  5. data/public/javascripts/right/autocompleter.js +3 -14
  6. data/public/javascripts/right/billboard-src.js +58 -38
  7. data/public/javascripts/right/billboard.js +3 -13
  8. data/public/javascripts/right/calendar-src.js +136 -133
  9. data/public/javascripts/right/calendar.js +4 -33
  10. data/public/javascripts/right/colorpicker-src.js +128 -125
  11. data/public/javascripts/right/colorpicker.js +4 -23
  12. data/public/javascripts/right/dialog-src.js +67 -37
  13. data/public/javascripts/right/dialog.js +3 -17
  14. data/public/javascripts/right/dnd-src.js +44 -43
  15. data/public/javascripts/right/dnd.js +3 -16
  16. data/public/javascripts/right/effects-src.js +125 -98
  17. data/public/javascripts/right/effects.js +3 -13
  18. data/public/javascripts/right/in-edit-src.js +54 -38
  19. data/public/javascripts/right/in-edit.js +4 -10
  20. data/public/javascripts/right/jquerysh-src.js +344 -20
  21. data/public/javascripts/right/jquerysh.js +3 -3
  22. data/public/javascripts/right/json-src.js +22 -35
  23. data/public/javascripts/right/json.js +4 -7
  24. data/public/javascripts/right/keys-src.js +87 -0
  25. data/public/javascripts/right/keys.js +7 -0
  26. data/public/javascripts/right/lightbox-src.js +76 -58
  27. data/public/javascripts/right/lightbox.js +3 -20
  28. data/public/javascripts/right/rails-src.js +108 -107
  29. data/public/javascripts/right/rails.js +4 -11
  30. data/public/javascripts/right/rater-src.js +47 -31
  31. data/public/javascripts/right/rater.js +3 -9
  32. data/public/javascripts/right/resizable-src.js +60 -33
  33. data/public/javascripts/right/resizable.js +3 -11
  34. data/public/javascripts/right/selectable-src.js +87 -51
  35. data/public/javascripts/right/selectable.js +3 -18
  36. data/public/javascripts/right/sizzle-src.js +15 -10
  37. data/public/javascripts/right/sizzle.js +4 -27
  38. data/public/javascripts/right/slider-src.js +49 -33
  39. data/public/javascripts/right/slider.js +3 -10
  40. data/public/javascripts/right/sortable-src.js +46 -32
  41. data/public/javascripts/right/sortable.js +4 -13
  42. data/public/javascripts/right/table-src.js +19 -10
  43. data/public/javascripts/right/table.js +4 -6
  44. data/public/javascripts/right/tabs-src.js +69 -47
  45. data/public/javascripts/right/tabs.js +4 -26
  46. data/public/javascripts/right/tooltips-src.js +78 -56
  47. data/public/javascripts/right/tooltips.js +4 -9
  48. data/public/javascripts/right/uploader-src.js +50 -34
  49. data/public/javascripts/right/uploader.js +3 -9
  50. data/public/javascripts/right-olds-src.js +528 -355
  51. data/public/javascripts/right-olds.js +4 -13
  52. data/public/javascripts/right-safe-src.js +4 -99
  53. data/public/javascripts/right-safe.js +3 -4
  54. data/public/javascripts/right-src.js +1618 -1245
  55. data/public/javascripts/right.js +4 -91
  56. metadata +8 -6
@@ -1,38 +1,362 @@
1
1
  /**
2
- * jQuery-like '$' function behavior for RightJS
2
+ * jQuery-like interfaces v2.2.0
3
3
  * http://rightjs.org/plugins/jquerysh
4
4
  *
5
- * Copyright (C) 2010 Nikolay Nemshilov
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
6
  */
7
+ (function(RightJS) {
7
8
  /**
8
- * jQuery-like '$' function behavior
9
+ * jquerysh initialization script
9
10
  *
10
- * Copyright (C) 2010 Nikolay Nemshilov
11
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
11
12
  */
13
+ var rjs_$ = RightJS.$,
14
+ $$ = RightJS.$$,
15
+ $E = RightJS.$E,
16
+ $A = RightJS.$A,
17
+ $ext = RightJS.$ext,
18
+ Xhr = RightJS.Xhr,
19
+ Browser = RightJS.Browser,
20
+ Object = RightJS.Object;
21
+
22
+
23
+
12
24
 
13
25
  /**
14
- * jquerysh initialization script
26
+ * The plugin's definition
15
27
  *
16
- * Copyright (C) 2010 Nikolay Nemshilov
28
+ * Copyright (C) 2011 Nikolay Nemshilov
17
29
  */
30
+ RightJS.jQuerysh = {
31
+ version: '2.2.0',
18
32
 
33
+ // collection methods
34
+ collectionMethods: {
35
+ live: function(event, callback) {
36
+ this.cssRule.on(event, callback);
37
+ return this;
38
+ },
19
39
 
20
- $ = function(something) {
40
+ die: function(event, callback) {
41
+ this.cssRule.stopObserving(event, callback);
42
+ return this;
43
+ }
44
+ }
45
+ };
46
+
47
+ /**
48
+ * jQuery-like '$' function behavior
49
+ *
50
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
51
+ */
52
+ var $ = function(something) {
21
53
  switch(typeof something) {
22
54
  case 'string':
23
- var hash = something[0], id = something.substr(1);
24
- something = (hash === '#' && (/^[\w\-]+$/).test(id)) ?
25
- RightJS.$(id) : RightJS.$$(something);
26
- break;
27
-
55
+ var hash = something[0], id = something.substr(1);
56
+
57
+ if (hash === '#' && (/^[\w\-]+$/).test(id)) {
58
+ return rjs_$(id);
59
+ } else if (hash === '<') {
60
+ return $E('div', {html: something}).first();
61
+ } else {
62
+ hash = $$(something);
63
+ hash.cssRule = RightJS(something);
64
+ return $ext(hash, RightJS.jQuerysh.collectionMethods);
65
+ }
66
+
28
67
  case 'function':
29
- RightJS.$(document).onReady(something);
30
- break;
31
-
68
+ return rjs_$(document).onReady(something);
69
+
32
70
  default:
33
- something = RightJS.$(something);
34
- break;
71
+ return rjs_$(something);
72
+ }
73
+ };
74
+
75
+ /**
76
+ * jQuery core methods emulation
77
+ *
78
+ * Copyright (C) 2011 Nikolay Nemshilov
79
+ */
80
+ $ext($, {
81
+
82
+ browser: {
83
+ webkit: Browser.WebKit,
84
+ opera: Browser.Opera,
85
+ msie: Browser.IE,
86
+ mozilla: Browser.Gecko
87
+ },
88
+
89
+ // Type checks
90
+
91
+ isFunction: function(value) {
92
+ return RightJS.isFunction(value);
93
+ },
94
+
95
+ isArray: function(value) {
96
+ return RightJS.isArray(value);
97
+ },
98
+
99
+ isPlainObject: function(value) {
100
+ return RightJS.isHash(value);
101
+ },
102
+
103
+ isEmptyObject: function(value) {
104
+ return Object.empty(value);
105
+ },
106
+
107
+ globalEval: function(script) {
108
+ return RightJS.$eval(script);
109
+ },
110
+
111
+ // Array stuff
112
+
113
+ makeArray: function(value) {
114
+ return $A(value);
115
+ },
116
+
117
+ each: function(list, callback) {
118
+ return $A(list, function(item, index) {
119
+ callback(index, item);
120
+ });
121
+ },
122
+
123
+ map: function(callback) {
124
+ return $A(value).map(callback);
125
+ },
126
+
127
+ unique: function(array) {
128
+ return $A(array).uniq();
129
+ },
130
+
131
+ merge: function(first, second) {
132
+ return $A(first).merge(second);
133
+ },
134
+
135
+
136
+ // the rest of the things
137
+
138
+ extend: function() {
139
+ return Object.merge.apply(Object, arguments);
140
+ },
141
+
142
+ proxy: function(func, context) {
143
+ return RightJS(func).bind(context);
144
+ },
145
+
146
+ noop: function() {
147
+ return RightJS(function() {});
35
148
  }
36
-
37
- return something;
38
- };
149
+
150
+ });
151
+
152
+ /**
153
+ * Element level jQuery like aliases
154
+ *
155
+ * Copyright (C) 2011 Nikolay Nemshilov
156
+ */
157
+ RightJS.Element.include({
158
+
159
+ appendTo: function(target) {
160
+ return this.insertTo(target);
161
+ },
162
+
163
+ prepend: function(content) {
164
+ return this.insert(content, 'top');
165
+ },
166
+
167
+ before: function(content) {
168
+ return this.insert(content, 'before');
169
+ },
170
+
171
+ after: function(content) {
172
+ return this.insert(content, 'after');
173
+ },
174
+
175
+ insertBefore: function(target) {
176
+ return this.insertTo(target, 'before');
177
+ },
178
+
179
+ attr: function(name, value) {
180
+ return value === undefined ? this.get(name) : this.set(name, value);
181
+ },
182
+
183
+ css: function(name, value) {
184
+ return (typeof(name) === 'string' && value === undefined) ?
185
+ this.getStyle(name) : this.setStyle(name, value);
186
+ },
187
+
188
+ offset: function() {
189
+ var position = this.position();
190
+ return {
191
+ left: position.x,
192
+ top: position.y
193
+ };
194
+ },
195
+
196
+ width: function() {
197
+ return this.size().x;
198
+ },
199
+
200
+ height: function() {
201
+ return this.size().y;
202
+ },
203
+
204
+ scrollLeft: function() {
205
+ return this.scrolls().x;
206
+ },
207
+
208
+ scrollTop: function() {
209
+ return this.scrolls().y;
210
+ },
211
+
212
+ bind: function() {
213
+ return this.on.apply(this, arguments);
214
+ },
215
+
216
+ unbind: function() {
217
+ return this.stopObserving.apply(this, arguments);
218
+ },
219
+
220
+ trigger: function(name, options) {
221
+ return this.fire(name, options);
222
+ },
223
+
224
+ animate: function(style, time, finish) {
225
+ return this.morph(style, {duration: time, onFinish: finish});
226
+ },
227
+
228
+ fadeIn: function() {
229
+ return this.fade('in');
230
+ },
231
+
232
+ fadeOut: function() {
233
+ return this.fade('out');
234
+ },
235
+
236
+ slideIn: function() {
237
+ return this.slide('in');
238
+ },
239
+
240
+ slideOut: function() {
241
+ return this.slide('out');
242
+ }
243
+
244
+ });
245
+
246
+ /**
247
+ * jQuery like ajax interfaces
248
+ *
249
+ * Copyright (C) 2011 Nikolay Nemshilov
250
+ */
251
+ $ext($, {
252
+
253
+ param: function(object) {
254
+ return Object.toQueryString(object);
255
+ },
256
+
257
+ ajax: function(url, options) {
258
+ options = options || {};
259
+
260
+ if (typeof(url) === 'string') {
261
+ options.url = url;
262
+ } else {
263
+ options = url;
264
+ }
265
+
266
+ var xhr_options = {};
267
+
268
+ function callback(original, xhr) {
269
+ original(
270
+ options.dataType === 'json' ? xhr.json : xhr.text,
271
+ xhr.successful() ? 'success' : 'error',
272
+ xhr
273
+ );
274
+ }
275
+
276
+ if (options.success) {
277
+ xhr_options.onSuccess = function() {
278
+ callback(options.success, this);
279
+ };
280
+ }
281
+
282
+ if (options.error) {
283
+ xhr_options.onFailure = function() {
284
+ callback(options.error, this);
285
+ };
286
+ }
287
+
288
+ if (options.complete) {
289
+ xhr_options.onComplete = function() {
290
+ callback(options.complete, this);
291
+ };
292
+ }
293
+
294
+ xhr_options.method = options.type;
295
+
296
+ if (options.headers) {
297
+ xhr_options.headers = options.headers;
298
+ }
299
+ if (options.jsonp) {
300
+ xhr_options.jsonp = options.jsonp;
301
+ }
302
+ if (options.url.indexOf('callback=?') > 0) {
303
+ xhr_options.jsonp = true;
304
+ options.url = options.url.replace(/(\?|\&)callback=\?/, '');
305
+ }
306
+
307
+ return new Xhr(options.url, xhr_options).send(options.data);
308
+ },
309
+
310
+ get: function() {
311
+ return make_ajax_call({type: 'get'}, arguments);
312
+ },
313
+
314
+ post: function(url, data, success, data_type) {
315
+ return make_ajax_call({type: 'post'}, arguments);
316
+ },
317
+
318
+ getJSON: function(url, data, success) {
319
+ return make_ajax_call({dataType: 'json'}, arguments);
320
+ },
321
+
322
+ getScript: function(url, success) {
323
+ return make_ajax_call({dataType: 'script'}, arguments);
324
+ }
325
+
326
+ });
327
+
328
+ function make_ajax_call(opts, args) {
329
+ return $.ajax($ext(ajax_options.apply(this, args), opts));
330
+ }
331
+
332
+ function ajax_options(url, data, success, data_type) {
333
+ if (typeof(data) === 'function') {
334
+ data_type = success;
335
+ success = data;
336
+ data = undefined;
337
+ }
338
+
339
+ return {
340
+ url: url,
341
+ data: data,
342
+ success: success,
343
+ dataType: data_type
344
+ };
345
+ }
346
+
347
+ Xhr.include({
348
+ success: function(callback) {
349
+ return this.on('success', callback);
350
+ },
351
+
352
+ error: function(callback) {
353
+ return this.on('failure', callback);
354
+ },
355
+
356
+ complete: function(callback) {
357
+ return this.on('complete', callback);
358
+ }
359
+ });
360
+
361
+ window.$ = window.jQuery = $;
362
+ })(RightJS);
@@ -1,7 +1,7 @@
1
1
  /**
2
- * jQuery-like '$' function behavior for RightJS
2
+ * jQuery-like interfaces v2.2.0
3
3
  * http://rightjs.org/plugins/jquerysh
4
4
  *
5
- * Copyright (C) 2010 Nikolay Nemshilov
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
6
  */
7
- $=function(a){switch(typeof a){case "string":var c=a[0],b=a.substr(1);a=c==="#"&&/^[\w\-]+$/.test(b)?RightJS.$(b):RightJS.$$(a);break;case "function":RightJS.$(document).onReady(a);break;default:a=RightJS.$(a);break}return a};
7
+ (function(a){function l(a,b,c,d){typeof b==="function"&&(d=c,c=b,b=undefined);return{url:a,data:b,success:c,dataType:d}}function k(a,b){return j.ajax(f(l.apply(this,b),a))}var b=a.$,c=a.$$,d=a.$E,e=a.$A,f=a.$ext,g=a.Xhr,h=a.Browser,i=a.Object;a.jQuerysh={version:"2.2.0",collectionMethods:{live:function(a,b){this.cssRule.on(a,b);return this},die:function(a,b){this.cssRule.stopObserving(a,b);return this}}};var j=function(e){switch(typeof e){case"string":var g=e[0],h=e.substr(1);if(g==="#"&&/^[\w\-]+$/.test(h))return b(h);if(g==="<")return d("div",{html:e}).first();g=c(e),g.cssRule=a(e);return f(g,a.jQuerysh.collectionMethods);case"function":return b(document).onReady(e);default:return b(e)}};f(j,{browser:{webkit:h.WebKit,opera:h.Opera,msie:h.IE,mozilla:h.Gecko},isFunction:function(b){return a.isFunction(b)},isArray:function(b){return a.isArray(b)},isPlainObject:function(b){return a.isHash(b)},isEmptyObject:function(a){return i.empty(a)},globalEval:function(b){return a.$eval(b)},makeArray:function(a){return e(a)},each:function(a,b){return e(a,function(a,c){b(c,a)})},map:function(a){return e(value).map(a)},unique:function(a){return e(a).uniq()},merge:function(a,b){return e(a).merge(b)},extend:function(){return i.merge.apply(i,arguments)},proxy:function(b,c){return a(b).bind(c)},noop:function(){return a(function(){})}}),a.Element.include({appendTo:function(a){return this.insertTo(a)},prepend:function(a){return this.insert(a,"top")},before:function(a){return this.insert(a,"before")},after:function(a){return this.insert(a,"after")},insertBefore:function(a){return this.insertTo(a,"before")},attr:function(a,b){return b===undefined?this.get(a):this.set(a,b)},css:function(a,b){return typeof a==="string"&&b===undefined?this.getStyle(a):this.setStyle(a,b)},offset:function(){var a=this.position();return{left:a.x,top:a.y}},width:function(){return this.size().x},height:function(){return this.size().y},scrollLeft:function(){return this.scrolls().x},scrollTop:function(){return this.scrolls().y},bind:function(){return this.on.apply(this,arguments)},unbind:function(){return this.stopObserving.apply(this,arguments)},trigger:function(a,b){return this.fire(a,b)},animate:function(a,b,c){return this.morph(a,{duration:b,onFinish:c})},fadeIn:function(){return this.fade("in")},fadeOut:function(){return this.fade("out")},slideIn:function(){return this.slide("in")},slideOut:function(){return this.slide("out")}}),f(j,{param:function(a){return i.toQueryString(a)},ajax:function(a,b){function d(a,c){a(b.dataType==="json"?c.json:c.text,c.successful()?"success":"error",c)}b=b||{},typeof a==="string"?b.url=a:b=a;var c={};b.success&&(c.onSuccess=function(){d(b.success,this)}),b.error&&(c.onFailure=function(){d(b.error,this)}),b.complete&&(c.onComplete=function(){d(b.complete,this)}),c.method=b.type,b.headers&&(c.headers=b.headers),b.jsonp&&(c.jsonp=b.jsonp),b.url.indexOf("callback=?")>0&&(c.jsonp=!0,b.url=b.url.replace(/(\?|\&)callback=\?/,""));return(new g(b.url,c)).send(b.data)},get:function(){return k({type:"get"},arguments)},post:function(a,b,c,d){return k({type:"post"},arguments)},getJSON:function(a,b,c){return k({dataType:"json"},arguments)},getScript:function(a,b){return k({dataType:"script"},arguments)}}),g.include({success:function(a){return this.on("success",a)},error:function(a){return this.on("failure",a)},complete:function(a){return this.on("complete",a)}}),window.$=window.jQuery=j})(RightJS)
@@ -1,37 +1,41 @@
1
1
  /**
2
- * The JSON encode/decode feature for RightJS
3
- * See http://rightjs.org/plugins/json
2
+ * JSON support module v2.2.1
3
+ * http://rightjs.org/plugins/json
4
4
  *
5
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
6
  */
7
7
  var JSON = function(RightJS, window) {
8
8
 
9
9
  /**
10
+ * Initialization script
11
+ *
12
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
13
+ */
14
+ RightJS.JSON = window.JSON || {};
15
+
16
+ RightJS.JSON.version = '2.2.1';
17
+
18
+
19
+
20
+ /**
10
21
  * The generic JSON interface
11
22
  *
12
23
  * Credits:
13
24
  * Based on the original JSON escaping implementation
14
25
  * http://www.json.org/json2.js
15
26
  *
16
- * @copyright (C) 2009-2010 Nikolay V. Nemshilov
17
- */
18
-
19
- /**
20
- * Initialization script
21
- *
22
- * Copyright (C) 2010 Nikolay Nemshilov
27
+ * @copyright (C) 2009-2011 Nikolay V. Nemshilov
23
28
  */
24
-
25
29
  var
26
30
 
27
- JSON = window.JSON || {},
31
+ JSON = RightJS.JSON,
28
32
 
29
33
  // see the original JSON decoder implementation for descriptions http://www.json.org/json2.js
30
34
  cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
31
35
  specials = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
32
36
  quotables = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
33
-
34
-
37
+
38
+
35
39
  // quotes the string
36
40
  function quote(string) {
37
41
  return string.replace(quotables, function(chr) {
@@ -101,7 +105,7 @@ if (!('parse' in JSON)) {
101
105
  if (/^[\],:{}\s]*$/.test(string.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
102
106
  .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
103
107
  .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
104
- return eval('('+string+')');
108
+ return new Function('return '+string)();
105
109
  }
106
110
  }
107
111
 
@@ -126,35 +130,18 @@ RightJS.$alias(JSON, {
126
130
  if (RightJS.Cookie) {
127
131
  var old_set = RightJS.Cookie.prototype.set,
128
132
  old_get = RightJS.Cookie.prototype.get;
129
-
133
+
130
134
  RightJS.Cookie.include({
131
135
  set: function(value) {
132
136
  return old_set.call(this, JSON.stringify(value));
133
137
  },
134
-
138
+
135
139
  get: function() {
136
- return JSON.parse(old_get.call(this));
140
+ return JSON.parse(old_get.call(this) || 'null');
137
141
  }
138
142
  });
139
143
  }
140
144
 
141
-
142
- /**
143
- * Better JSON sanitizing for the Xhr requests
144
- *
145
- * Copyright (C) 2009-2010 Nikolay Nemshilov
146
- */
147
- if (RightJS.Xhr) {
148
- RightJS.Xhr.prototype.sanitizedJSON = function() {
149
- try {
150
- return JSON.decode(this.text);
151
- } catch(e) {
152
- if (this.secureJSON) { throw e; }
153
- return null;
154
- }
155
- };
156
- }
157
-
158
145
 
159
146
  return JSON;
160
147
  }(RightJS, window);
@@ -1,10 +1,7 @@
1
1
  /**
2
- * The JSON encode/decode feature for RightJS
3
- * See http://rightjs.org/plugins/json
2
+ * JSON support module v2.2.1
3
+ * http://rightjs.org/plugins/json
4
4
  *
5
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
6
  */
7
- var JSON=function(c,g){function h(a){return a.replace(i,function(d){return j[d]||"\\u"+("0000"+d.charCodeAt(0).toString(16)).slice(-4)})}function e(a){return(a<10?"0":"")+a}var b=g.JSON||{},k=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,j={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
8
- if(!("stringify"in b))b.stringify=function(a){if(a===null)return"null";else if(a.toJSON)return a.toJSON();else switch(typeof a){case "boolean":return String(a);case "number":return String(a+0);case "string":return'"'+h(a)+'"';case "object":if(a instanceof Array)return"["+a.map(b.stringify).join(",")+"]";else if(a instanceof Date)return'"'+a.getUTCFullYear()+"-"+e(a.getUTCMonth()+1)+"-"+e(a.getUTCDate())+"T"+e(a.getUTCHours())+":"+e(a.getUTCMinutes())+":"+e(a.getUTCSeconds())+"."+e(a.getMilliseconds())+
9
- 'Z"';else{var d=[];for(var f in a)d.push(b.encode(f)+":"+b.encode(a[f]));return"{"+d.join(",")+"}"}}};if(!("parse"in b))b.parse=function(a){if(isString(a)&&a){a=a.replace(k,function(d){return"\\u"+("0000"+d.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+a+")")}throw"JSON parse error: "+a;};c.$alias(b,
10
- {encode:"stringify",decode:"parse"});if(c.Cookie){var l=c.Cookie.prototype.set,m=c.Cookie.prototype.get;c.Cookie.include({set:function(a){return l.call(this,b.stringify(a))},get:function(){return b.parse(m.call(this))}})}if(c.Xhr)c.Xhr.prototype.sanitizedJSON=function(){try{return b.decode(this.text)}catch(a){if(this.secureJSON)throw a;return null}};return b}(RightJS,window);
7
+ var JSON=function(a,b){function h(a){return(a<10?"0":"")+a}function g(a){return a.replace(f,function(a){return e[a]||"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}a.JSON=b.JSON||{},a.JSON.version="2.2.1";var c=a.JSON,d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},f=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"stringify"in c||(c.stringify=function(a){if(a===null)return"null";if(a.toJSON)return a.toJSON();switch(typeof a){case"boolean":return String(a);case"number":return String(a+0);case"string":return'"'+g(a)+'"';case"object":if(a instanceof Array)return"["+a.map(c.stringify).join(",")+"]";if(a instanceof Date)return'"'+a.getUTCFullYear()+"-"+h(a.getUTCMonth()+1)+"-"+h(a.getUTCDate())+"T"+h(a.getUTCHours())+":"+h(a.getUTCMinutes())+":"+h(a.getUTCSeconds())+"."+h(a.getMilliseconds())+'Z"';var b=[];for(var d in a)b.push(c.encode(d)+":"+c.encode(a[d]));return"{"+b.join(",")+"}"}}),"parse"in c||(c.parse=function(a){if(isString(a)&&a){a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return(new Function("return "+a))()}throw"JSON parse error: "+a}),a.$alias(c,{encode:"stringify",decode:"parse"});if(a.Cookie){var i=a.Cookie.prototype.set,j=a.Cookie.prototype.get;a.Cookie.include({set:function(a){return i.call(this,c.stringify(a))},get:function(){return c.parse(j.call(this)||"null")}})}return c}(RightJS,window)
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Pretty Keyboard Events v2.2.1
3
+ * http://rightjs.org/plugins/keys
4
+ *
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
+ */
7
+ (function(RightJS) {
8
+ /**
9
+ * The keys plugin initialization
10
+ *
11
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
12
+ */
13
+ RightJS.Keys = {
14
+ version: '2.2.1'
15
+ };
16
+
17
+
18
+
19
+ /**
20
+ * The Event level keyboard keycodes and stuff
21
+ *
22
+ * Copyright (C) 2010 Nikolay Nemshilov
23
+ */
24
+ RightJS.Event.Keys = {
25
+ BACKSPACE: 8,
26
+ TAB: 9,
27
+ ENTER: 13,
28
+ ESC: 27,
29
+ SPACE: 32,
30
+ PAGEUP: 33,
31
+ PAGEDOWN: 34,
32
+ END: 35,
33
+ HOME: 36,
34
+ LEFT: 37,
35
+ UP: 38,
36
+ RIGHT: 39,
37
+ DOWN: 40,
38
+ INSERT: 45,
39
+ DELETE: 46
40
+ };
41
+
42
+
43
+ /**
44
+ * Overloading the Element#on method to handle those fancy names
45
+ *
46
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
47
+ */
48
+ [RightJS.Document, RightJS.Element, RightJS.Window].each('include', {
49
+ on: function() {
50
+ var args = RightJS.$A(arguments), name = args[0];
51
+
52
+ if (typeof(name) === 'string') {
53
+ var key = name.split(/[\+\-\_ ]+/);
54
+ key = (key[key.length - 1] || '').toUpperCase();
55
+
56
+ if (key in RightJS.Event.Keys || /^[A-Z0-9]$/.test(key)) {
57
+ var meta = /(^|\+|\-| )(meta|alt)(\+|\-| )/i.test(name),
58
+ ctrl = /(^|\+|\-| )(ctl|ctrl)(\+|\-| )/i.test(name),
59
+ shift = /(^|\+|\-| )(shift)(\+|\-| )/i.test(name),
60
+ code = RightJS.Event.Keys[key] || key.charCodeAt(0),
61
+ orig = args.slice(1),
62
+ method = orig.shift();
63
+
64
+ if (typeof(method) === 'string') {
65
+ method = this[method] || function() {};
66
+ }
67
+
68
+ // replacing the arguments
69
+ args = ['keydown', function(event) {
70
+ var raw = event._;
71
+ if (
72
+ (raw.keyCode === code) &&
73
+ (!meta || raw.metaKey || raw.altKey) &&
74
+ (!ctrl || raw.ctrlKey) &&
75
+ (!shift || raw.shiftKey)
76
+ ) {
77
+ return method.call(this, [event].concat(orig));
78
+ }
79
+ }];
80
+ }
81
+ }
82
+
83
+ return this.$super.apply(this, args);
84
+ }
85
+ });
86
+
87
+ })(RightJS);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Pretty Keyboard Events v2.2.1
3
+ * http://rightjs.org/plugins/keys
4
+ *
5
+ * Copyright (C) 2009-2011 Nikolay Nemshilov
6
+ */
7
+ (function(a){a.Keys={version:"2.2.1"},a.Event.Keys={BACKSPACE:8,TAB:9,ENTER:13,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46},[a.Document,a.Element,a.Window].each("include",{on:function(){var b=a.$A(arguments),c=b[0];if(typeof c==="string"){var d=c.split(/[\+\-\_ ]+/);d=(d[d.length-1]||"").toUpperCase();if(d in a.Event.Keys||/^[A-Z0-9]$/.test(d)){var e=/(^|\+|\-| )(meta|alt)(\+|\-| )/i.test(c),f=/(^|\+|\-| )(ctl|ctrl)(\+|\-| )/i.test(c),g=/(^|\+|\-| )(shift)(\+|\-| )/i.test(c),h=a.Event.Keys[d]||d.charCodeAt(0),i=b.slice(1),j=i.shift();typeof j==="string"&&(j=this[j]||function(){}),b=["keydown",function(a){var b=a._;if(b.keyCode===h&&(!e||b.metaKey||b.altKey)&&(!f||b.ctrlKey)&&(!g||b.shiftKey))return j.call(this,[a].concat(i))}]}}return this.$super.apply(this,b)}})})(RightJS)