right-rails 1.0.10 → 1.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -4
- data/Rakefile +4 -4
- data/lib/right_rails.rb +1 -1
- data/public/javascripts/right/autocompleter-src.js +115 -106
- data/public/javascripts/right/autocompleter.js +3 -14
- data/public/javascripts/right/billboard-src.js +58 -38
- data/public/javascripts/right/billboard.js +3 -13
- data/public/javascripts/right/calendar-src.js +136 -133
- data/public/javascripts/right/calendar.js +4 -33
- data/public/javascripts/right/colorpicker-src.js +128 -125
- data/public/javascripts/right/colorpicker.js +4 -23
- data/public/javascripts/right/dialog-src.js +67 -37
- data/public/javascripts/right/dialog.js +3 -17
- data/public/javascripts/right/dnd-src.js +44 -43
- data/public/javascripts/right/dnd.js +3 -16
- data/public/javascripts/right/effects-src.js +125 -98
- data/public/javascripts/right/effects.js +3 -13
- data/public/javascripts/right/in-edit-src.js +54 -38
- data/public/javascripts/right/in-edit.js +4 -10
- data/public/javascripts/right/jquerysh-src.js +344 -20
- data/public/javascripts/right/jquerysh.js +3 -3
- data/public/javascripts/right/json-src.js +22 -35
- data/public/javascripts/right/json.js +4 -7
- data/public/javascripts/right/keys-src.js +87 -0
- data/public/javascripts/right/keys.js +7 -0
- data/public/javascripts/right/lightbox-src.js +76 -58
- data/public/javascripts/right/lightbox.js +3 -20
- data/public/javascripts/right/rails-src.js +108 -107
- data/public/javascripts/right/rails.js +4 -11
- data/public/javascripts/right/rater-src.js +47 -31
- data/public/javascripts/right/rater.js +3 -9
- data/public/javascripts/right/resizable-src.js +60 -33
- data/public/javascripts/right/resizable.js +3 -11
- data/public/javascripts/right/selectable-src.js +87 -51
- data/public/javascripts/right/selectable.js +3 -18
- data/public/javascripts/right/sizzle-src.js +15 -10
- data/public/javascripts/right/sizzle.js +4 -27
- data/public/javascripts/right/slider-src.js +49 -33
- data/public/javascripts/right/slider.js +3 -10
- data/public/javascripts/right/sortable-src.js +46 -32
- data/public/javascripts/right/sortable.js +4 -13
- data/public/javascripts/right/table-src.js +19 -10
- data/public/javascripts/right/table.js +4 -6
- data/public/javascripts/right/tabs-src.js +69 -47
- data/public/javascripts/right/tabs.js +4 -26
- data/public/javascripts/right/tooltips-src.js +78 -56
- data/public/javascripts/right/tooltips.js +4 -9
- data/public/javascripts/right/uploader-src.js +50 -34
- data/public/javascripts/right/uploader.js +3 -9
- data/public/javascripts/right-olds-src.js +528 -355
- data/public/javascripts/right-olds.js +4 -13
- data/public/javascripts/right-safe-src.js +4 -99
- data/public/javascripts/right-safe.js +3 -4
- data/public/javascripts/right-src.js +1618 -1245
- data/public/javascripts/right.js +4 -91
- metadata +8 -6
data/README.rdoc
CHANGED
@@ -32,7 +32,7 @@ Or you can install it as a rails plugin
|
|
32
32
|
script/plugin install git://github.com/MadRabbit/right-rails.git
|
33
33
|
|
34
34
|
In case of ruby-gem and Rails 3, add the following into your +Gemfile+
|
35
|
-
|
35
|
+
|
36
36
|
gem 'right-rails'
|
37
37
|
|
38
38
|
If you on Rails 2, add the following code into your +environment.rb+
|
@@ -56,16 +56,16 @@ Enjoy!
|
|
56
56
|
|
57
57
|
See the wiki-pages for the documentation
|
58
58
|
|
59
|
-
|
59
|
+
https://github.com/MadRabbit/right-rails/wiki
|
60
60
|
|
61
61
|
See also the demo application for examples
|
62
62
|
|
63
63
|
http://github.com/MadRabbit/right-rails-demo
|
64
64
|
|
65
|
-
|
65
|
+
|
66
66
|
|
67
67
|
|
68
68
|
|
69
69
|
== Copyright
|
70
70
|
|
71
|
-
Copyright (c) 2009-
|
71
|
+
Copyright (c) 2009-2011 Nikolay Nemshilov, released under the MIT license
|
data/Rakefile
CHANGED
@@ -89,9 +89,9 @@ namespace :rjs do
|
|
89
89
|
|
90
90
|
system(%Q{
|
91
91
|
cd #{RIGHTJS_CORE_DIR};
|
92
|
-
|
92
|
+
nake build OPTIONS=no-olds;
|
93
93
|
cp build/*.js #{OUTPUT_JSS_DIR};
|
94
|
-
|
94
|
+
nake build OPTIONS=safe;
|
95
95
|
cp build/right-safe*.js #{OUTPUT_JSS_DIR};
|
96
96
|
})
|
97
97
|
|
@@ -104,7 +104,7 @@ namespace :rjs do
|
|
104
104
|
|
105
105
|
system(%Q{
|
106
106
|
cd #{RIGHTJS_PLUGINS_DIR};
|
107
|
-
|
107
|
+
nake build;
|
108
108
|
cp build/*.js #{OUTPUT_JSS_DIR}/right;
|
109
109
|
})
|
110
110
|
|
@@ -117,7 +117,7 @@ namespace :rjs do
|
|
117
117
|
|
118
118
|
system(%Q{
|
119
119
|
cd #{RIGHTJS_UI_DIR};
|
120
|
-
|
120
|
+
nake build;
|
121
121
|
cp build/*.js #{OUTPUT_JSS_DIR}/right;
|
122
122
|
})
|
123
123
|
|
data/lib/right_rails.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
/**
|
2
|
-
* RightJS-UI
|
2
|
+
* RightJS-UI Autocompleter v2.2.1
|
3
3
|
* http://rightjs.org/ui/autocompleter
|
4
4
|
*
|
5
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
5
|
+
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
6
6
|
*/
|
7
7
|
var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
|
8
8
|
/**
|
@@ -10,29 +10,9 @@ var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
|
|
10
10
|
* it creates an abstract proxy with the common functionality
|
11
11
|
* which then we reuse and override in the actual widgets
|
12
12
|
*
|
13
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
13
|
+
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
14
14
|
*/
|
15
15
|
|
16
|
-
/**
|
17
|
-
* Autocompleter initializer
|
18
|
-
*
|
19
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
20
|
-
*/
|
21
|
-
var R = RightJS,
|
22
|
-
$ = RightJS.$,
|
23
|
-
$w = RightJS.$w,
|
24
|
-
$E = RightJS.$E,
|
25
|
-
Xhr = RightJS.Xhr,
|
26
|
-
RegExp = RightJS.RegExp,
|
27
|
-
isArray = RightJS.isArray;
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
16
|
/**
|
37
17
|
* The widget units constructor
|
38
18
|
*
|
@@ -51,7 +31,7 @@ function Widget(tag_name, methods) {
|
|
51
31
|
*
|
52
32
|
* Copyright (C) 2010 Nikolay Nemshilov
|
53
33
|
*/
|
54
|
-
var AbstractWidget = new RightJS.
|
34
|
+
var AbstractWidget = new RightJS.Class(RightJS.Element.Wrappers[tag_name] || RightJS.Element, {
|
55
35
|
/**
|
56
36
|
* The common constructor
|
57
37
|
*
|
@@ -83,7 +63,8 @@ function Widget(tag_name, methods) {
|
|
83
63
|
options = {};
|
84
64
|
}
|
85
65
|
this.setOptions(options, this);
|
86
|
-
|
66
|
+
|
67
|
+
return (RightJS.Wrapper.Cache[RightJS.$uid(this._)] = this);
|
87
68
|
},
|
88
69
|
|
89
70
|
// protected
|
@@ -96,12 +77,16 @@ function Widget(tag_name, methods) {
|
|
96
77
|
* @return void
|
97
78
|
*/
|
98
79
|
setOptions: function(options, element) {
|
99
|
-
|
100
|
-
|
101
|
-
RightJS.Object.merge(options, eval("("+(
|
80
|
+
if (element) {
|
81
|
+
options = RightJS.Object.merge(options, new Function("return "+(
|
102
82
|
element.get('data-'+ this.key) || '{}'
|
103
|
-
)
|
104
|
-
|
83
|
+
))());
|
84
|
+
}
|
85
|
+
|
86
|
+
if (options) {
|
87
|
+
RightJS.Options.setOptions.call(this, RightJS.Object.merge(this.options, options));
|
88
|
+
}
|
89
|
+
|
105
90
|
return this;
|
106
91
|
}
|
107
92
|
});
|
@@ -110,7 +95,7 @@ function Widget(tag_name, methods) {
|
|
110
95
|
* Creating the actual widget class
|
111
96
|
*
|
112
97
|
*/
|
113
|
-
var Klass = new RightJS.
|
98
|
+
var Klass = new RightJS.Class(AbstractWidget, methods);
|
114
99
|
|
115
100
|
// creating the widget related shortcuts
|
116
101
|
RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
|
@@ -122,9 +107,9 @@ function Widget(tag_name, methods) {
|
|
122
107
|
/**
|
123
108
|
* A shared module to create textual spinners
|
124
109
|
*
|
125
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
110
|
+
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
126
111
|
*/
|
127
|
-
var Spinner = new RightJS.
|
112
|
+
var Spinner = new RightJS.Class(RightJS.Element, {
|
128
113
|
/**
|
129
114
|
* Constructor
|
130
115
|
*
|
@@ -163,30 +148,81 @@ var Spinner = new RightJS.Wrapper(RightJS.Element, {
|
|
163
148
|
* A shared module that toggles a widget visibility status
|
164
149
|
* in a uniformed way according to the options settings
|
165
150
|
*
|
166
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
151
|
+
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
167
152
|
*/
|
153
|
+
var Toggler = {
|
154
|
+
/**
|
155
|
+
* Shows the element
|
156
|
+
*
|
157
|
+
* @param String fx-name
|
158
|
+
* @param Object fx-options
|
159
|
+
* @return Element this
|
160
|
+
*/
|
161
|
+
show: function(fx_name, fx_options) {
|
162
|
+
this.constructor.current = this;
|
163
|
+
return Toggler_toggle(this, 'show', fx_name, fx_options);
|
164
|
+
},
|
165
|
+
|
166
|
+
/**
|
167
|
+
* Hides the element
|
168
|
+
*
|
169
|
+
* @param String fx-name
|
170
|
+
* @param Object fx-options
|
171
|
+
* @return Element this
|
172
|
+
*/
|
173
|
+
hide: function(fx_name, fx_options) {
|
174
|
+
this.constructor.current = null;
|
175
|
+
return Toggler_toggle(this, 'show', fx_name, fx_options);
|
176
|
+
},
|
177
|
+
|
178
|
+
/**
|
179
|
+
* Toggles the widget at the given element
|
180
|
+
*
|
181
|
+
* @param Element the related element
|
182
|
+
* @param String position right/bottom (bottom is the default)
|
183
|
+
* @param Boolean marker if the element should be resized to the element size
|
184
|
+
* @return Widget this
|
185
|
+
*/
|
186
|
+
showAt: function(element, where, resize) {
|
187
|
+
this.hide(null).shownAt = element = RightJS.$(element);
|
188
|
+
|
189
|
+
// moves this element at the given one
|
190
|
+
Toggler_re_position.call(this, element, where, resize);
|
191
|
+
|
192
|
+
return this.show();
|
193
|
+
},
|
194
|
+
|
195
|
+
/**
|
196
|
+
* Toggles the widget at the given element
|
197
|
+
*
|
198
|
+
* @param Element the related element
|
199
|
+
* @param String position top/left/right/bottom (bottom is the default)
|
200
|
+
* @param Boolean marker if the element should be resized to the element size
|
201
|
+
* @return Widget this
|
202
|
+
*/
|
203
|
+
toggleAt: function(element, where, resize) {
|
204
|
+
return this.hidden() ? this.showAt(element, where, resize) : this.hide();
|
205
|
+
}
|
206
|
+
};
|
207
|
+
|
168
208
|
|
169
209
|
/**
|
170
|
-
*
|
171
|
-
*
|
172
|
-
* NOTE: this function getting called in the context
|
173
|
-
* of a widget
|
210
|
+
* toggles the element's state according to the current settings
|
174
211
|
*
|
175
|
-
* @param Element the element to toggle
|
176
212
|
* @param event String 'show' or 'hide' the event name
|
177
213
|
* @param String an optional fx-name
|
178
214
|
* @param Object an optional fx-options hash
|
179
215
|
* @return void
|
180
216
|
*/
|
181
|
-
function
|
217
|
+
function Toggler_toggle(element, event, fx_name, fx_options) {
|
182
218
|
if (RightJS.Fx) {
|
183
219
|
if (fx_name === undefined) {
|
184
|
-
fx_name =
|
220
|
+
fx_name = element.options.fxName;
|
185
221
|
|
186
222
|
if (fx_options === undefined) {
|
187
223
|
fx_options = {
|
188
|
-
duration:
|
189
|
-
onFinish: RightJS(
|
224
|
+
duration: element.options.fxDuration,
|
225
|
+
onFinish: RightJS(element.fire).bind(element, event)
|
190
226
|
};
|
191
227
|
|
192
228
|
// hide on double time
|
@@ -198,12 +234,10 @@ function toggler(element, event, fx_name, fx_options) {
|
|
198
234
|
}
|
199
235
|
}
|
200
236
|
|
201
|
-
RightJS.Element.prototype[event].call(element, fx_name, fx_options);
|
202
|
-
|
203
237
|
// manually trigger the event if no fx were specified
|
204
|
-
if (!RightJS.Fx || !fx_name) {
|
238
|
+
if (!RightJS.Fx || !fx_name) { element.fire(event); }
|
205
239
|
|
206
|
-
return
|
240
|
+
return element.$super(fx_name, fx_options);
|
207
241
|
}
|
208
242
|
|
209
243
|
/**
|
@@ -218,7 +252,7 @@ function toggler(element, event, fx_name, fx_options) {
|
|
218
252
|
* @param Boolean if `true` then the element size will be adjusted
|
219
253
|
* @return void
|
220
254
|
*/
|
221
|
-
function
|
255
|
+
function Toggler_re_position(element, where, resize) {
|
222
256
|
var anchor = this.reAnchor || (this.reAnchor =
|
223
257
|
new RightJS.Element('div', {'class': 'rui-re-anchor'}))
|
224
258
|
.insert(this),
|
@@ -248,7 +282,7 @@ function re_position(element, where, resize) {
|
|
248
282
|
target.moveTo(left, top);
|
249
283
|
|
250
284
|
if (resize) {
|
251
|
-
if (
|
285
|
+
if (where === 'left' || where === 'right') {
|
252
286
|
target.setHeight(height);
|
253
287
|
} else {
|
254
288
|
target.setWidth(width);
|
@@ -260,76 +294,35 @@ function re_position(element, where, resize) {
|
|
260
294
|
}
|
261
295
|
|
262
296
|
/**
|
263
|
-
*
|
297
|
+
* Autocompleter initializer
|
264
298
|
*
|
265
299
|
* Copyright (C) 2010 Nikolay Nemshilov
|
266
300
|
*/
|
267
|
-
var
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
show: function(fx_name, fx_options) {
|
276
|
-
this.constructor.current = this;
|
277
|
-
return toggler.call(this, this, 'show', fx_name, fx_options);
|
278
|
-
},
|
301
|
+
var R = RightJS,
|
302
|
+
$ = RightJS.$,
|
303
|
+
$w = RightJS.$w,
|
304
|
+
$E = RightJS.$E,
|
305
|
+
Xhr = RightJS.Xhr,
|
306
|
+
RegExp = RightJS.RegExp,
|
307
|
+
isArray = RightJS.isArray;
|
308
|
+
|
279
309
|
|
280
|
-
/**
|
281
|
-
* Hides the element
|
282
|
-
*
|
283
|
-
* @param String fx-name
|
284
|
-
* @param Object fx-options
|
285
|
-
* @return Element this
|
286
|
-
*/
|
287
|
-
hide: function(fx_name, fx_options) {
|
288
|
-
this.constructor.current = null;
|
289
|
-
return toggler.call(this, this, 'hide', fx_name, fx_options);
|
290
|
-
},
|
291
310
|
|
292
|
-
/**
|
293
|
-
* Toggles the widget at the given element
|
294
|
-
*
|
295
|
-
* @param Element the related element
|
296
|
-
* @param String position right/bottom (bottom is the default)
|
297
|
-
* @param Boolean marker if the element should be resized to the element size
|
298
|
-
* @return Widget this
|
299
|
-
*/
|
300
|
-
showAt: function(element, where, resize) {
|
301
|
-
this.hide(null).shownAt = element = RightJS.$(element);
|
302
311
|
|
303
|
-
// moves this element at the given one
|
304
|
-
re_position.call(this, element, where, resize);
|
305
312
|
|
306
|
-
return this.show();
|
307
|
-
},
|
308
313
|
|
309
|
-
/**
|
310
|
-
* Toggles the widget at the given element
|
311
|
-
*
|
312
|
-
* @param Element the related element
|
313
|
-
* @param String position top/left/right/bottom (bottom is the default)
|
314
|
-
* @param Boolean marker if the element should be resized to the element size
|
315
|
-
* @return Widget this
|
316
|
-
*/
|
317
|
-
toggleAt: function(element, where, resize) {
|
318
|
-
return this.hidden() ? this.showAt(element, where, resize) : this.hide();
|
319
|
-
}
|
320
|
-
};
|
321
314
|
|
322
315
|
|
323
316
|
/**
|
324
317
|
* The RightJS UI Autocompleter unit base class
|
325
318
|
*
|
326
|
-
* Copyright (C) 2009-
|
319
|
+
* Copyright (C) 2009-2011 Nikolay Nemshilov
|
327
320
|
*/
|
328
321
|
var Autocompleter = new Widget('UL', {
|
329
322
|
include: Toggler,
|
330
323
|
|
331
324
|
extend: {
|
332
|
-
version: '2.
|
325
|
+
version: '2.2.1',
|
333
326
|
|
334
327
|
EVENTS: $w('show hide update load select done'),
|
335
328
|
|
@@ -407,7 +400,8 @@ var Autocompleter = new Widget('UL', {
|
|
407
400
|
current = current || this.first('li.current');
|
408
401
|
|
409
402
|
if (current) {
|
410
|
-
|
403
|
+
current.radioClass('current');
|
404
|
+
this.input.setValue(current._.textContent || current._.innerText);
|
411
405
|
this.fire('done');
|
412
406
|
}
|
413
407
|
|
@@ -492,9 +486,13 @@ var Autocompleter = new Widget('UL', {
|
|
492
486
|
this.cache[search] = result_text;
|
493
487
|
}
|
494
488
|
|
495
|
-
if (!(result_text).blank()) {
|
489
|
+
if (!R(result_text).blank()) {
|
496
490
|
this.update(result_text.replace(/<ul[^>]*>|<\/ul>/im, ''));
|
497
|
-
this.fire('update')
|
491
|
+
this.fire('update');
|
492
|
+
if (!this._connected || this.hidden()) {
|
493
|
+
this.showAt(this.input, 'bottom', 'resize');
|
494
|
+
this._connected = true;
|
495
|
+
}
|
498
496
|
} else {
|
499
497
|
this.hide();
|
500
498
|
}
|
@@ -524,7 +522,7 @@ var Autocompleter = new Widget('UL', {
|
|
524
522
|
|
525
523
|
// positioning the native spinner
|
526
524
|
if (spinner instanceof Spinner) {
|
527
|
-
|
525
|
+
Toggler_re_position.call(spinner, this.input, 'right', 'resize');
|
528
526
|
}
|
529
527
|
|
530
528
|
return spinner;
|
@@ -610,7 +608,18 @@ $(document).on({
|
|
610
608
|
});
|
611
609
|
|
612
610
|
|
613
|
-
|
611
|
+
var embed_style = document.createElement('style'),
|
612
|
+
embed_rules = document.createTextNode("*.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
|
613
|
+
|
614
|
+
embed_style.type = 'text/css';
|
615
|
+
document.getElementsByTagName('head')[0].appendChild(embed_style);
|
616
|
+
|
617
|
+
if(embed_style.styleSheet) {
|
618
|
+
embed_style.styleSheet.cssText = embed_rules.nodeValue;
|
619
|
+
} else {
|
620
|
+
embed_style.appendChild(embed_rules);
|
621
|
+
}
|
622
|
+
|
614
623
|
|
615
624
|
return Autocompleter;
|
616
625
|
})(document, RightJS);
|
@@ -1,18 +1,7 @@
|
|
1
1
|
/**
|
2
|
-
* RightJS-UI
|
2
|
+
* RightJS-UI Autocompleter v2.2.1
|
3
3
|
* http://rightjs.org/ui/autocompleter
|
4
4
|
*
|
5
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
5
|
+
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
6
6
|
*/
|
7
|
-
var Autocompleter=RightJS.Autocompleter=function(
|
8
|
-
f=a.dimensions(),h=parseInt(a.getStyle("borderTopWidth")),i=parseInt(a.getStyle("borderLeftWidth")),q=parseInt(a.getStyle("borderRightWidth")),r=parseInt(a.getStyle("borderBottomWidth"));a=f.top-e.y+h;e=f.left-e.x+i;i=f.width-i-q;f=f.height-h-r;this.setStyle("visibility:hidden").show(null);if(b==="right")e+=i-this.size().x;else a+=f;this.moveTo(e,a);if(d)["left","right"].include(b)?this.setHeight(f):this.setWidth(i);this.setStyle("visibility:visible").hide(null)}var g=c,n=c.$,s=c.$w,t=c.Xhr,o=c.RegExp,
|
9
|
-
u=c.isArray,p=new c.Wrapper(c.Element,{initialize:function(a){this.$super("div",{"class":"rui-spinner"});this.dots=[];for(var b=0;b<(a||4);b++)this.dots.push(new c.Element("div"));this.dots[0].addClass("glowing");this.insert(this.dots);c(this.shift).bind(this).periodical(300)},shift:function(){if(this.visible()){var a=this.dots.pop();this.dots.unshift(a);this.insert(a,"top")}}}),k=new (function(a,b){if(!b){b=a;a="DIV"}var d=new c.Wrapper(c.Element.Wrappers[a]||c.Element,{initialize:function(e,f){this.key=
|
10
|
-
e;var h=[{"class":"rui-"+e}];this instanceof c.Input||this instanceof c.Form||h.unshift(a);this.$super.apply(this,h);if(c.isString(f))f=c.$(f);if(f instanceof c.Element){this._=f._;if("$listeners"in f)f.$listeners=f.$listeners;f={}}this.setOptions(f,this);return this},setOptions:function(e,f){f=f||this;c.Options.setOptions.call(this,c.Object.merge(e,eval("("+(f.get("data-"+this.key)||"{}")+")")));return this}});d=new c.Wrapper(d,b);c.Observer.createShortcuts(d.prototype,d.EVENTS||[]);return d})("UL",
|
11
|
-
{include:{show:function(a,b){this.constructor.current=this;return l.call(this,this,"show",a,b)},hide:function(a,b){this.constructor.current=null;return l.call(this,this,"hide",a,b)},showAt:function(a,b,d){this.hide(null).shownAt=a=c.$(a);m.call(this,a,b,d);return this.show()},toggleAt:function(a,b,d){return this.hidden()?this.showAt(a,b,d):this.hide()}},extend:{version:"2.0.0",EVENTS:s("show hide update load select done"),Options:{url:j.location.href,param:"search",method:"get",minLength:1,threshold:200,
|
12
|
-
cache:true,local:null,fxName:"slide",fxDuration:"short",spinner:"native",cssRule:"input[data-autocompleter]"}},initialize:function(a,b){this.input=n(a);this.$super("autocompleter",b).addClass("rui-dd-menu").onMousedown(this.clicked);this.input.autocompleter=this},destroy:function(){delete this.input.autocompleter;return this},prev:function(){return this.pick("prev")},next:function(){return this.pick("next")},done:function(a){if(a=a||this.first("li.current")){this.input.setValue(g(a.html()).stripTags());
|
13
|
-
this.fire("done")}return this.hide()},setOptions:function(a){this.$super(a,this.input);a=this.options;g(a.url).includes("%{search}")||(a.url+=(g(a.url).includes("?")?"&":"?")+a.param+"=%{search}")},pick:function(a){var b=this.children(),d=b.first("hasClass","current"),e=b.indexOf(d);if(a=="prev")d=e<1?b.last():b[e<0?0:e-1];else if(a=="next")d=e<0||e==b.length-1?b.first():b[e+1];return this.fire("select",{item:d.radioClass("current")})},clicked:function(a){this.done(a.stop().find("li"))},keypressed:function(){if(this.input.value().length>=
|
14
|
-
this.options.minLength){this.timeout&&this.timeout.cancel();this.timeout=g(this.trigger).bind(this).delay(this.options.threshold)}else return this.hide()},trigger:function(){this.timeout=null;this.cache=this.cache||{};var a=this.input.value(),b=this.options;if(a.length<b.minLength)return this.hide();if(this.cache[a])this.suggest(this.cache[a],a);else if(u(b.local))this.suggest(this.findLocal(a),a);else this.request=t.load(b.url.replace("%{search}",encodeURIComponent(a)),{method:b.method,spinner:this.getSpinner(),
|
15
|
-
onComplete:g(function(d){this.fire("load").suggest(d.text,a)}).bind(this)})},suggest:function(a,b){if(this.options.cache)this.cache[b]=a;if(a.blank())this.hide();else{this.update(a.replace(/<ul[^>]*>|<\/ul>/im,""));this.fire("update").showAt(this.input,"bottom","resize")}return this},findLocal:function(a){var b=new o("("+o.escape(a)+")","ig");return g(this.options.local).map(function(d){if(d.match(b))return"<li>"+d.replace(b,"<strong>$1</strong>")+"</li>"}).compact().join("")},getSpinner:function(){var a=
|
16
|
-
this.options,b=a.spinner;if(b=="native"){b=a.spinner=(new p(3)).insertTo(this);b.addClass("rui-autocompleter-spinner")}b instanceof p&&m.call(b,this.input,"right","resize");return b}});n(j).on({focus:function(a){if((a=a.target)&&a instanceof c.Element&&(a.autocompleter||a.match(k.Options.cssRule)))a.autocompleter||new k(a)},blur:function(a){(a=a.target?a.target.autocompleter:null)&&a.visible()&&a.hide()},keydown:function(a){var b=a.target?a.target.autocompleter:null;if(b&&b.visible()){var d={27:"hide",
|
17
|
-
38:"prev",40:"next",13:"done"}[a.keyCode];if(d){a.stop();b[d]()}}},keyup:function(a){var b=a.target?a.target.autocompleter:null;b&&!g([9,27,37,38,39,40,13]).include(a.keyCode)&&b.keypressed(a)}});j.write('<style type="text/css"> *.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}</style>');
|
18
|
-
return k}(document,RightJS);
|
7
|
+
var Autocompleter=RightJS.Autocompleter=function(a,b){function g(a,c,d){var e=this.reAnchor||(this.reAnchor=new b.Element("div",{"class":"rui-re-anchor"})).insert(this),f=e.insertTo(a,"after").position(),g=a.dimensions(),h=this,i=parseInt(a.getStyle("borderTopWidth")),j=parseInt(a.getStyle("borderLeftWidth")),k=parseInt(a.getStyle("borderRightWidth")),l=parseInt(a.getStyle("borderBottomWidth")),m=g.top-f.y+i,n=g.left-f.x+j,o=g.width-j-k,p=g.height-i-l;h.setStyle("visibility:hidden").show(null),c==="right"?n+=o-h.size().x:m+=p,h.moveTo(n,m),d&&(c==="left"||c==="right"?h.setHeight(p):h.setWidth(o)),h.setStyle("visibility:visible").hide(null)}function f(a,c,d,e){b.Fx&&(d===undefined&&(d=a.options.fxName,e===undefined&&(e={duration:a.options.fxDuration,onFinish:b(a.fire).bind(a,c)},c==="hide"&&(e.duration=(b.Fx.Durations[e.duration]||e.duration)/2)))),(!b.Fx||!d)&&a.fire(c);return a.$super(d,e)}function c(a,c){c||(c=a,a="DIV");var d=new b.Class(b.Element.Wrappers[a]||b.Element,{initialize:function(c,d){this.key=c;var e=[{"class":"rui-"+c}];this instanceof b.Input||this instanceof b.Form||e.unshift(a),this.$super.apply(this,e),b.isString(d)&&(d=b.$(d)),d instanceof b.Element&&(this._=d._,"$listeners"in d&&(d.$listeners=d.$listeners),d={}),this.setOptions(d,this);return b.Wrapper.Cache[b.$uid(this._)]=this},setOptions:function(a,c){c&&(a=b.Object.merge(a,(new Function("return "+(c.get("data-"+this.key)||"{}")))())),a&&b.Options.setOptions.call(this,b.Object.merge(this.options,a));return this}}),e=new b.Class(d,c);b.Observer.createShortcuts(e.prototype,e.EVENTS||[]);return e}var d=new b.Class(b.Element,{initialize:function(a){this.$super("div",{"class":"rui-spinner"}),this.dots=[];for(var c=0;c<(a||4);c++)this.dots.push(new b.Element("div"));this.dots[0].addClass("glowing"),this.insert(this.dots),b(this.shift).bind(this).periodical(300)},shift:function(){if(this.visible()){var a=this.dots.pop();this.dots.unshift(a),this.insert(a,"top")}}}),e={show:function(a,b){this.constructor.current=this;return f(this,"show",a,b)},hide:function(a,b){this.constructor.current=null;return f(this,"show",a,b)},showAt:function(a,c,d){this.hide(null).shownAt=a=b.$(a),g.call(this,a,c,d);return this.show()},toggleAt:function(a,b,c){return this.hidden()?this.showAt(a,b,c):this.hide()}},h=b,i=b.$,j=b.$w,k=b.$E,l=b.Xhr,m=b.RegExp,n=b.isArray,o=new c("UL",{include:e,extend:{version:"2.2.1",EVENTS:j("show hide update load select done"),Options:{url:a.location.href,param:"search",method:"get",minLength:1,threshold:200,cache:!0,local:null,fxName:"slide",fxDuration:"short",spinner:"native",cssRule:"input[data-autocompleter]"}},initialize:function(a,b){this.input=i(a),this.$super("autocompleter",b).addClass("rui-dd-menu").onMousedown(this.clicked),this.input.autocompleter=this},destroy:function(){delete this.input.autocompleter;return this},prev:function(){return this.pick("prev")},next:function(){return this.pick("next")},done:function(a){a=a||this.first("li.current"),a&&(a.radioClass("current"),this.input.setValue(a._.textContent||a._.innerText),this.fire("done"));return this.hide()},setOptions:function(a){this.$super(a,this.input),a=this.options,h(a.url).includes("%{search}")||(a.url+=(h(a.url).includes("?")?"&":"?")+a.param+"=%{search}")},pick:function(a){var b=this.children(),c=b.first("hasClass","current"),d=b.indexOf(c);a=="prev"?c=d<1?b.last():b[d<0?0:d-1]:a=="next"&&(c=d<0||d==b.length-1?b.first():b[d+1]);return this.fire("select",{item:c.radioClass("current")})},clicked:function(a){this.done(a.stop().find("li"))},keypressed:function(a){if(this.input.value().length<this.options.minLength)return this.hide();this.timeout&&this.timeout.cancel(),this.timeout=h(this.trigger).bind(this).delay(this.options.threshold)},trigger:function(){this.timeout=null,this.cache=this.cache||{};var a=this.input.value(),b=this.options;if(a.length<b.minLength)return this.hide();this.cache[a]?this.suggest(this.cache[a],a):n(b.local)?this.suggest(this.findLocal(a),a):this.request=l.load(b.url.replace("%{search}",encodeURIComponent(a)),{method:b.method,spinner:this.getSpinner(),onComplete:h(function(b){this.fire("load").suggest(b.text,a)}).bind(this)})},suggest:function(a,b){this.options.cache&&(this.cache[b]=a);if(h(a).blank())this.hide();else{this.update(a.replace(/<ul[^>]*>|<\/ul>/im,"")),this.fire("update");if(!this._connected||this.hidden())this.showAt(this.input,"bottom","resize"),this._connected=!0}return this},findLocal:function(a){var b=new m("("+m.escape(a)+")","ig");return h(this.options.local).map(function(a){if(a.match(b))return"<li>"+a.replace(b,"<strong>$1</strong>")+"</li>"}).compact().join("")},getSpinner:function(){var a=this.options,b=a.spinner;b=="native"&&(b=a.spinner=(new d(3)).insertTo(this),b.addClass("rui-autocompleter-spinner")),b instanceof d&&g.call(b,this.input,"right","resize");return b}});i(a).on({focus:function(a){var c=a.target;c&&c instanceof b.Element&&(c.autocompleter||c.match(o.Options.cssRule))&&(c.autocompleter||new o(c))},blur:function(a){var b=a.target?a.target.autocompleter:null;b&&b.visible()&&b.hide()},keydown:function(a){var b=a.target?a.target.autocompleter:null;if(b&&b.visible()){var c=({27:"hide",38:"prev",40:"next",13:"done"})[a.keyCode];c&&(a.stop(),b[c]())}},keyup:function(a){var b=a.target?a.target.autocompleter:null;b&&!h([9,27,37,38,39,40,13]).include(a.keyCode)&&b.keypressed(a)}});var p=a.createElement("style"),q=a.createTextNode("*.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");p.type="text/css",a.getElementsByTagName("head")[0].appendChild(p),p.styleSheet?p.styleSheet.cssText=q.nodeValue:p.appendChild(q);return o}(document,RightJS)
|