right-rails 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/init.rb +37 -8
- data/javascripts/right-autocompleter-src.js +55 -41
- data/javascripts/right-autocompleter.js +2 -2
- data/javascripts/right-behavior-src.js +5 -5
- data/javascripts/right-behavior.js +2 -2
- data/javascripts/right-calendar-src.js +139 -67
- data/javascripts/right-calendar.js +2 -2
- data/javascripts/right-dnd-src.js +7 -7
- data/javascripts/right-dnd.js +2 -2
- data/javascripts/right-effects-src.js +9 -9
- data/javascripts/right-effects.js +2 -2
- data/javascripts/right-events-src.js +8 -8
- data/javascripts/right-events.js +2 -2
- data/javascripts/right-in-edit-src.js +10 -8
- data/javascripts/right-in-edit.js +2 -2
- data/javascripts/right-json-src.js +14 -15
- data/javascripts/right-json.js +2 -2
- data/javascripts/right-lightbox-src.js +141 -86
- data/javascripts/right-lightbox.js +3 -3
- data/javascripts/right-olds-src.js +26 -48
- data/javascripts/right-olds.js +2 -2
- data/javascripts/right-rails-src.js +109 -31
- data/javascripts/right-rails.js +2 -2
- data/javascripts/right-rater-src.js +20 -12
- data/javascripts/right-rater.js +2 -2
- data/javascripts/right-selectable-src.js +3 -3
- data/javascripts/right-selectable.js +1 -1
- data/javascripts/right-slider-src.js +3 -3
- data/javascripts/right-slider.js +1 -1
- data/javascripts/right-sortable-src.js +28 -28
- data/javascripts/right-sortable.js +2 -2
- data/javascripts/right-src.js +612 -405
- data/javascripts/right-tabs-src.js +115 -44
- data/javascripts/right-tabs.js +2 -2
- data/javascripts/right-tooltips-src.js +131 -74
- data/javascripts/right-tooltips.js +2 -2
- data/javascripts/right-ui-i18n-fr.js +4 -4
- data/javascripts/right-uploader-src.js +170 -0
- data/javascripts/right-uploader.js +9 -0
- data/javascripts/right.js +2 -4
- data/lib/right_rails.rb +1 -1
- data/lib/right_rails/helpers/basic.rb +10 -2
- data/lib/right_rails/helpers/misc.rb +16 -17
- data/lib/right_rails/helpers/rails.rb +0 -7
- data/spec/lib/right_rails/helpers/basic_spec.rb +0 -1
- data/spec/lib/right_rails/helpers/rails_spec.rb +24 -0
- data/spec/spec_helper.rb +9 -1
- metadata +14 -5
@@ -1,13 +1,13 @@
|
|
1
1
|
/**
|
2
2
|
* Unified tabs engine for RightJS (http://rightjs.org/ui/tabs)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
6
|
if (!RightJS) throw "Gimme RightJS";
|
7
7
|
/**
|
8
8
|
* The basic tabs handling engine
|
9
9
|
*
|
10
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
10
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
11
11
|
*/
|
12
12
|
var Tabs = new Class(Observer, {
|
13
13
|
extend: {
|
@@ -151,7 +151,7 @@ var Tabs = new Class(Observer, {
|
|
151
151
|
/**
|
152
152
|
* A single tab handling object
|
153
153
|
*
|
154
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
154
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
155
155
|
*/
|
156
156
|
Tabs.Tab = new Class({
|
157
157
|
extend: {
|
@@ -261,7 +261,7 @@ Tabs.Tab = new Class({
|
|
261
261
|
/**
|
262
262
|
* The tab panels behavior logic
|
263
263
|
*
|
264
|
-
* Copyright (C) Nikolay V. Nemshilov
|
264
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
265
265
|
*/
|
266
266
|
Tabs.Panel = new Class(Observer, {
|
267
267
|
|
@@ -274,15 +274,26 @@ Tabs.Panel = new Class(Observer, {
|
|
274
274
|
// shows the panel
|
275
275
|
show: function() {
|
276
276
|
return this.resizing(function() {
|
277
|
-
this.
|
277
|
+
this.tab.controller.tabs.each(function(tab) {
|
278
|
+
var element = tab.panel.element;
|
279
|
+
element[element == this.element ?
|
280
|
+
'addClass' : 'removeClass']('right-tabs-panel-current');
|
281
|
+
}, this);
|
278
282
|
});
|
279
283
|
},
|
280
284
|
|
281
285
|
// updates the panel content
|
282
286
|
update: function(content) {
|
283
|
-
|
287
|
+
// don't use resize if it's some other hidden tab was loaded asynch
|
288
|
+
if (this.tab.current()) {
|
289
|
+
this.resizing(function() {
|
290
|
+
this.element.update(content||'');
|
291
|
+
});
|
292
|
+
} else {
|
284
293
|
this.element.update(content||'');
|
285
|
-
}
|
294
|
+
}
|
295
|
+
|
296
|
+
return this;
|
286
297
|
},
|
287
298
|
|
288
299
|
// removes the pannel
|
@@ -293,34 +304,28 @@ Tabs.Panel = new Class(Observer, {
|
|
293
304
|
|
294
305
|
// locks the panel with a spinner locker
|
295
306
|
lock: function() {
|
296
|
-
|
297
|
-
var spinner = $E('div', {'class': 'right-tabs-panel-locker-spinner'}).insertTo(locker);
|
298
|
-
var dots = '1234'.split('').map(function(i) {
|
299
|
-
return $E('div', {'class': i == 1 ? 'glow':null}).insertTo(spinner);
|
300
|
-
});
|
301
|
-
|
302
|
-
(function() {
|
303
|
-
spinner.insert(dots.last(), 'top');
|
304
|
-
dots.unshift(dots.pop());
|
305
|
-
}).periodical(400);
|
306
|
-
|
307
|
-
this.element.insert(locker, 'top');
|
307
|
+
this.element.insert(this.locker(), 'top');
|
308
308
|
},
|
309
309
|
|
310
310
|
// protected
|
311
311
|
|
312
312
|
resizing: function(callback) {
|
313
|
-
if (Tabs.__working) return this.resizing.bind(this, callback).delay(20);
|
314
|
-
|
315
313
|
var controller = this.tab.controller;
|
314
|
+
|
315
|
+
if (controller.__working) return this.resizing.bind(this, callback).delay(100);
|
316
|
+
|
316
317
|
var options = controller.options;
|
317
318
|
var prev_panel = controller.element.first('.right-tabs-panel-current');
|
318
319
|
var this_panel = this.element;
|
319
320
|
var swapping = prev_panel != this_panel;
|
320
321
|
var loading = this.element.first('div.right-tabs-panel-locker');
|
321
322
|
|
323
|
+
// sometimes it looses the parent on remote tabs
|
324
|
+
if (this_panel.parentNode.hasClass('right-tabs-resizer')) this_panel.insertTo(prev_panel.parentNode);
|
325
|
+
|
322
326
|
if (options.resizeFx && self.Fx && prev_panel && (swapping || loading)) {
|
323
|
-
|
327
|
+
controller.__working = true;
|
328
|
+
var unlock = function() { controller.__working = false; };
|
324
329
|
|
325
330
|
// calculating the visual effects durations
|
326
331
|
var fx_name = (options.resizeFx == 'both' && loading) ? 'slide' : options.resizeFx;
|
@@ -339,15 +344,17 @@ Tabs.Panel = new Class(Observer, {
|
|
339
344
|
|
340
345
|
// getting the new size
|
341
346
|
var new_panel_height = this_panel.offsetHeight;
|
347
|
+
var fx_wrapper = null;
|
342
348
|
|
343
349
|
if (fx_name != 'fade' && prev_panel_height != new_panel_height) {
|
344
350
|
// preserving the whole element size so it didn't jump when we are tossing the tabs around
|
345
351
|
controller.element.style.height = controller.element.offsetHeight + 'px';
|
346
352
|
|
347
353
|
// wrapping the element with an overflowed element to visualize the resize
|
348
|
-
|
349
|
-
|
350
|
-
|
354
|
+
fx_wrapper = $E('div', {
|
355
|
+
'class': 'right-tabs-resizer',
|
356
|
+
'style': 'height: '+ prev_panel_height + 'px'
|
357
|
+
});
|
351
358
|
|
352
359
|
// in case of harmonica nicely hidding the previous panel
|
353
360
|
if (controller.isHarmonica && swapping) {
|
@@ -367,24 +374,64 @@ Tabs.Panel = new Class(Observer, {
|
|
367
374
|
// getting back the auto-size so we could resize it
|
368
375
|
controller.element.style.height = 'auto';
|
369
376
|
|
370
|
-
if (hide_wrapper) hide_wrapper.morph({height: '0px'}, {duration: resize_duration, onFinish: prev_back});
|
371
|
-
fx_wrapper.morph({height: new_panel_height + 'px'}, {duration: resize_duration, onFinish: set_back });
|
372
377
|
} else {
|
373
378
|
// removing the resize duration out of the equasion
|
374
379
|
rezise_duration = 0;
|
375
380
|
duration = fade_duration;
|
376
381
|
}
|
377
382
|
|
378
|
-
|
379
|
-
|
383
|
+
var counter = 0;
|
384
|
+
var set_back = function() {
|
385
|
+
if (fx_wrapper) {
|
386
|
+
if (fx_name == 'both' && !counter)
|
387
|
+
return counter ++;
|
388
|
+
|
389
|
+
fx_wrapper.replace(this_panel);
|
390
|
+
}
|
391
|
+
|
392
|
+
unlock();
|
393
|
+
};
|
394
|
+
|
395
|
+
if (hide_wrapper)
|
396
|
+
hide_wrapper.morph({height: '0px'},
|
397
|
+
{duration: resize_duration, onFinish: prev_back});
|
398
|
+
|
399
|
+
if (fx_wrapper)
|
400
|
+
fx_wrapper.morph({height: new_panel_height + 'px'},
|
401
|
+
{duration: resize_duration, onFinish: set_back});
|
380
402
|
|
381
|
-
|
382
|
-
|
403
|
+
if (fx_name != 'slide')
|
404
|
+
this_panel.morph.bind(this_panel, {opacity: 1},
|
405
|
+
{duration: fade_duration, onFinish: set_back}
|
406
|
+
).delay(resize_duration);
|
407
|
+
|
408
|
+
if (!fx_wrapper && fx_name == 'slide')
|
409
|
+
set_back();
|
410
|
+
|
383
411
|
} else {
|
384
412
|
callback.call(this);
|
385
413
|
}
|
386
414
|
|
387
415
|
return this;
|
416
|
+
},
|
417
|
+
|
418
|
+
// builds the locker element
|
419
|
+
locker: function() {
|
420
|
+
if (!this._locker) {
|
421
|
+
var locker = $E('div', {'class': 'right-tabs-panel-locker'});
|
422
|
+
var spinner = $E('div', {'class': 'right-tabs-panel-locker-spinner'}).insertTo(locker);
|
423
|
+
var dots = '1234'.split('').map(function(i) {
|
424
|
+
return $E('div', {'class': i == 1 ? 'glow':null}).insertTo(spinner);
|
425
|
+
});
|
426
|
+
|
427
|
+
(function() {
|
428
|
+
spinner.insert(dots.last(), 'top');
|
429
|
+
dots.unshift(dots.pop());
|
430
|
+
}).periodical(400);
|
431
|
+
|
432
|
+
this._locker = locker;
|
433
|
+
}
|
434
|
+
return this._locker;
|
388
435
|
}
|
389
436
|
|
390
437
|
});
|
@@ -397,7 +444,7 @@ Tabs.Panel = new Class(Observer, {
|
|
397
444
|
* any tab. But the carousel tabs scrolls to the next/previous
|
398
445
|
* tabs on the list.
|
399
446
|
*
|
400
|
-
* Copyright (C) Nikolay V. Nemshilov
|
447
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
401
448
|
*/
|
402
449
|
Tabs.include((function() {
|
403
450
|
var old_init = Tabs.prototype.init;
|
@@ -565,7 +612,7 @@ return {
|
|
565
612
|
/**
|
566
613
|
* This module handles the current tab state saving/restoring processes
|
567
614
|
*
|
568
|
-
* Copyright (C) Nikolay V. Nemshilov
|
615
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
569
616
|
*/
|
570
617
|
Tabs.include((function() {
|
571
618
|
var old_initialize = Tabs.prototype.initialize;
|
@@ -649,7 +696,7 @@ return {
|
|
649
696
|
/**
|
650
697
|
* This module handles the tabs cration and removing processes
|
651
698
|
*
|
652
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
699
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
653
700
|
*/
|
654
701
|
Tabs.include({
|
655
702
|
/**
|
@@ -730,7 +777,7 @@ Tabs.include({
|
|
730
777
|
/**
|
731
778
|
* This module contains the remote tabs loading logic
|
732
779
|
*
|
733
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
780
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
734
781
|
*/
|
735
782
|
Tabs.Tab.include((function() {
|
736
783
|
var old_show = Tabs.Tab.prototype.show;
|
@@ -739,6 +786,8 @@ return {
|
|
739
786
|
|
740
787
|
// wrapping the show mehtod, to catch the remote requests
|
741
788
|
show: function() {
|
789
|
+
if (this.dogPiling(arguments)) return this;
|
790
|
+
|
742
791
|
var result = old_show.apply(this, arguments);
|
743
792
|
var url = this.link.href;
|
744
793
|
var options = this.controller.options;
|
@@ -752,20 +801,42 @@ return {
|
|
752
801
|
this.panel.lock();
|
753
802
|
|
754
803
|
try { // basically that's for the development tests, so the IE browsers didn't get screwed on the test page
|
755
|
-
|
756
|
-
this.request = Xhr
|
757
|
-
|
804
|
+
|
805
|
+
this.request = new Xhr(url, Object.merge({method: 'get'}, options.Xhr))
|
806
|
+
.onComplete(function(response) {
|
807
|
+
if (this.controller.__working)
|
808
|
+
return arguments.callee.bind(this, response).delay(100);
|
809
|
+
|
810
|
+
this.panel.update(response.text);
|
758
811
|
|
759
|
-
|
760
|
-
|
812
|
+
this.request = null; // removing the request marker so it could be rerun
|
813
|
+
if (options.cache) this.cache = true;
|
761
814
|
|
762
|
-
|
763
|
-
|
815
|
+
this.fire('load');
|
816
|
+
}.bind(this)
|
817
|
+
).send();
|
764
818
|
|
765
819
|
} catch(e) { if (!Browser.OLD) throw(e) }
|
766
820
|
}
|
767
821
|
|
768
822
|
return result;
|
823
|
+
},
|
824
|
+
|
825
|
+
// protected
|
826
|
+
|
827
|
+
dogPiling: function(args) {
|
828
|
+
if (this.controller.__working) {
|
829
|
+
if (this.controller.__timeout)
|
830
|
+
this.controller.__timeout.cancel();
|
831
|
+
|
832
|
+
this.controller.__timeout = (function(args) {
|
833
|
+
this.show.apply(this, args);
|
834
|
+
}).bind(this, args).delay(100);
|
835
|
+
|
836
|
+
return true;
|
837
|
+
}
|
838
|
+
|
839
|
+
return this.controller.__timeout = null;
|
769
840
|
}
|
770
841
|
|
771
842
|
}})());
|
@@ -773,7 +844,7 @@ return {
|
|
773
844
|
/**
|
774
845
|
* This module handles the slide-show loop feature for the Tabs
|
775
846
|
*
|
776
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
847
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
777
848
|
*/
|
778
849
|
Tabs.include((function() {
|
779
850
|
var old_initialize = Tabs.prototype.initialize;
|
@@ -852,7 +923,7 @@ return {
|
|
852
923
|
/**
|
853
924
|
* The document level hooks for the tabs-egnine
|
854
925
|
*
|
855
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
926
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
856
927
|
*/
|
857
928
|
document.onReady(function() {
|
858
929
|
Tabs.rescan();
|
data/javascripts/right-tabs.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
2
|
* Unified tabs engine for RightJS (http://rightjs.org/ui/tabs)
|
3
3
|
*
|
4
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
4
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
5
5
|
*/
|
6
|
-
if (!RightJS) throw "Gimme RightJS";eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("19 37=135 176(Observer,{extend:{EVENTS:$w('54 hide 160 load 87 116 add 61 move'),Options:{145:'',14Element:74,107:'both',128:400,2537:91,25178:400,142:74,28:[],closable:91,loop:91,loopPause:true,url:91,131:91,Xhr:74,68:74},rescan:16(s){($(s)||102).select('*.13-14').each(16(e){if(!e._14)135 37(e)})}},49:16(e,o){11.17=$(e);11.$super(o||eval('('+11.17.get('data-14-24')+')'));11.17._14=11.init()},destroy:16(){delete(11.17._14)},54:16(t){18 11.94(t,'54')},87:16(t){18 11.94(t,'87')},116:16(t){18 11.94(t,'116')},94:16(t,m){if(isArray(t))t.each(11[m],11);95 if(t=isNumber(t)?11.14[t]:t)t[m]();18 11},init:16(){11.35=11.17.152=='DL';11.42=11.17.144('13-14-62');11.isSimple=!11.35&&!11.42;11.find37();11.17.45('13-14');if(11.isSimple)11.17.45('13-14-52');18 11.87(11.24.28)},find37:16(){11.14175=11.35?11.17:$(11.24.14Element)||11.17.55('UL').45('13-14-75');11.14=11.14175.subNodes(11.35?'dt':74).map(16(n){18 135 37.156(n,11)},11)},173:16(t){19 a=11.24.145+t.id,p;if(11.35){19 n=t.17.next();p=(n&&n.152=='DD')?n:$E('DD').59To(t.17,'after')}95 p=$(a)||$E(11.17.152=='UL'?'LI':'DIV').59To(11.17);18 p.set('id',a)}});37.156=135 176({extend:{autoId:0},49:16(e,c){11.17=e.45('13-14-43');11.33=c;11.17.153(11.160.64(11)).124('s80Event');11.findLink();11.27=135 37.Panel(c.173(11),11);if(c.24.closable)11.174.59($E('72',{'63':'13-14-43-close-icon','html':'×'}).153(11.61.64(11)).124('s80Event'))},160:16(e){e.s80();18 11.76('160').54()},54:16(){if(11.51()){19 p=11.33.14.55('26');if(p)p.76('hide');11.17.167('13-14-26');11.33.25To156(11);11.27.54();11.76('54')}18 11},87:16(){11.17.45('13-14-28');18 11.76('87')},116:16(){11.17.61176('13-14-28');18 11.76('116')},28:16(){18!11.51()},51:16(){18!11.17.144('13-14-28')},26:16(){18 11.17.144('13-14-26')},61:16(a){if(a)a.s80();if(11.26()){19 e=11.33.14.47('51');19 s=e[e.65(11)+1]||e[e.65(11)-1];if(s)s.54()}11.33.14.172(11.33.14.65(11),1);11.17.61();11.27.61();18 11},46:16(){18 11.17.84+11.17.113('41Right').165()},76:16(e){11.33.76(e,11);18 11},findLink:16(){11.174=11.17.55('a');11.id=11.174.href.127('#')[1]||(11.33.24.145+(37.156.autoId++))}});37.Panel=135 176(Observer,{49:16(e,t){11.43=t;11.id=e.id;11.17=e.45('13-14-27')},54:16(){18 11.104(16(){11.17.167('13-14-27-26')})},140:16(c){18 11.104(16(){11.17.140(c||'')})},61:16(){11.17.61();18 11},lock:16(){19 l=$E('72',{'63':'13-14-27-67'});19 s=$E('72',{'63':'13-14-27-67-126'}).59To(l);19 d='1234'.127('').map(16(a){18 $E('72',{'63':a==1?'glow':74}).59To(s)});(16(){s.59(d.last(),'80');d.unshift(d.pop())}).169(400);11.17.59(l,'80')},104:16(c){if(37.129)18 11.104.64(11,c).delay(20);19 a=11.43.33;19 o=a.24;19 g=a.17.55('.13-14-27-26');19 t=11.17;19 j=g!=t;19 l=11.17.55('72.13-14-27-67');if(o.107&&self.Fx&&g&&(j||l)){37.129=true;19 b=(o.107=='both'&&l)?'150':o.107;19 d=o.128;d=Fx.178s[d]||d;19 r=b=='fade'?0:b=='150'?d:d/2;19 f=d-r;if(b!='150')t.setStyle({32:0});19 i=(a.35&&j)?0:g.73;c.call(11);19 n=t.73;if(b!='fade'&&i!=n){a.17.86.29=a.17.73+'px';19 e=$E('72',{'63':'13-14-125'});19 s=e.163.64(e,t);e.86.29=i+'px';if(a.35&&j){g.45('13-14-27-26');19 h=$E('72',{'63':'13-14-125'});h.86.29=g.73+'px';19 p=16(){h.163(g.61176('13-14-27-26'))};g.wrap(h);e.86.29='138'}t.wrap(e);a.17.86.29='auto';if(h)h.151({29:'138'},{103:r,onFinish:p});e.151({29:n+'px'},{103:r,onFinish:s})}95{rezise_103=0;d=f}if(b!='150')t.151.64(t,{32:1},{103:f}).delay(r);(16(){37.129=91}).64(11).delay(d)}95 c.call(11);18 11}});37.82((16(){19 d=37.97.init;18{next:16(){18 11.pick156(+1)},prev:16(){18 11.pick156(-1)},25Left:16(){18 11[11.42?'prev':'121'](+0.6)},25Right:16(){18 11[11.42?'next':'121'](-0.6)},init:16(){d.call(11);if(11.25able=(11.24.2537||11.42))11.136();18 11},136:16(){if(!11.17.55('13-14-22')){11.120=$E('72',{'63':'13-14-25-38','html':'«'}).124(11.25Left.64(11));11.119=$E('72',{'63':'13-14-25-13','html':'»'}).124(11.25Right.64(11));11.17.59($E('72',{'63':'13-14-22'}).59([11.120,11.119,$E('72',{'63':'13-14-25-147'}).59(11.14175)]),'80')}},pick156:16(p){19 c=11.14.55('26');if(c&&c.51()){19 e=11.14.47('51');19 t=e[e.65(c)+p];if(t)t.54()}},25To156:16(t){if(11.25able){19 b=0;for(19 i=0;i<11.14.92;i++){b+=11.14[i].46();if(11.14[i]==t)break}19 a=11.14175.117.84;19 s=(11.42?(a/2+t.46()/2):a)-b;if(!11.42){19 c=11.14175.113('38').165()||0;if(s>=c&&s<(c+a-t.46()))s=c;95 if(c>-b&&c<=(t.46()-b))s=t.46()-b}11.25To(s)}},121:16(s){19 c=11.14175.113('38').165()||0;19 a=11.14175.117.84;11.25To(c+a*s)},25To:16(s){19 c=11.14175.113('38').165()||0;19 a=11.14175.117.84;19 o=0;for(19 i=0;i<11.14.92;i++)o+=11.14[i].46();if(s<(a-o))s=a-o;if(s>0)s=0;19 b={38:s+'px'};if(11.24.25178&&self.Fx&&c!=s)11.14175.151(b,{103:11.24.25178});95 11.14175.setStyle(b);11.101(o,a,s)},101:16(o,a,s){19 h=110=91;if(11.42){19 e=11.14.47('51');19 c=e.55('26');if(c){19 i=e.65(c);h=i>0;110=i<e.92-1}}95{h=s!=0;110=s>(a-o)}11.120[h?'61176':'45']('13-14-25-28');11.119[110?'61176':'45']('13-14-25-28')}}})());37.82((16(){19 d=37.97.49;19 g=16(){18 self.68?(68.get('13-14-indexes')||'').127(','):[]};19 s=16(o,a,t){if(self.68){19 i=g();i=i.without.157(i,a.map('id'));i.push(t.id);68.set('13-14-indexes',i.uniq().join(','),o)}};18{49:16(){d.157(11,130);11.161();if(11.24.68)11.onShow(s.curry(11.24.68,11.14))},161:16(){19 c;if(11.24.142!==74)c=11.24.142;95{19 e=11.14.47('51');c=e[11.urlIndex()]||e[11.162()]||e.55('26')||e[0]}if(c)c.54()},urlIndex:16(){19 b=-1,a=102.location.href.127('#')[1];if(a)for(19 i=0;i<11.14.92;i++)if(11.14[i].id==a){b=i;break}18 b},162:16(){19 a=-1;if(11.24.68){19 b=g();for(19 i=0;i<11.14.92;i++)if(b.82(11.14[i].id)){a=i;break}}18 a}}})());37.82({add:16(a,c,o){19 o=o||{};19 e=$E(11.35?'dt':'li').59($E('a',{html:a,href:o.url||'#'+(o.id||'')})).59To(11.14175);19 t=135 37.156(e,11);t.27.17.140(c||'');11.14.push(t);if(defined(o.39))11.move(t,o.39);18 11.76('add',t)},move:16(t,p){19 t=11.14[t]||t;if(11.14[p]&&11.14[p]!==t){11.14[p].17.59(t.17,(p==11.14.92-1)?'after':'before');if(11.35)t.17.59(t.27.17,'after');11.14.172(11.14.65(t),1);11.14.172(p,0,t);11.76('move',t,p)}18 11},61:16(t){18 11.94(t,'61')}});37.156.82((16(){19 b=37.156.97.54;18{54:16(){19 a=b.157(11,130);19 u=11.174.href;19 o=11.33.24;if(u.82s('#'))u=o.url?o.url.163('%{id}',u.127('#')[1]):74;if(u&&!11.164&&!(o.131||11.131)){11.27.lock();try{11.164=Xhr.load(u,o.Xhr).onComplete(16(r){11.27.140(r.133);11.164=74;if(o.131)11.131=true;11.76('load')}.64(11))}catch(e){if(!Browser.OLD)throw(e)}}18 a}}})());37.82((16(){19 o=37.97.49;18{49:16(){o.157(11,130);if(11.24.loop)11.134()},134:16(d){if(!d&&!11.24.loop)18 11;if(11.24.loopPause){11._s80177=11._s80177||11.s80177.64(11,true);11.70=11.70||11.134.64(11,d);11.98().on({mouseover:11._s80177,mouseout:11.70})}if(11.108)11.108.s80();11.108=16(){19 e=11.14.47('51');19 c=11.14.55('26');19 n=e[e.65(c)+1];11.54(n||e.55())}.64(11).169(11.24.loop||d);18 11},s80177:16(e,p){if(11.108){11.108.s80();11.108=74}if(!p&&11.70)11.98()},98:16(){18 11.17.s80Observing('mouseover',11._s80177).s80Observing('mouseout',11.70)}}})());102.onReady(16(){37.rescan()});102.write(\"<86 type=\\\"133/css\\\">.13-14,.13-14 .13-14-75,.13-14 .13-14-43,.13-14 .13-14-27,.13-14-25-38,.13-14-25-13,.13-14-25-147,.13-14-27-67,.13-14-125{41:0;57:0;30:78;21:78;75-86:78;69:132;46:auto;29:auto}.13-14{21-48:93 114 #122}.13-14-125{141:hidden}.13-14-43,.13-14-43 a{69:132;float:38}.13-14-43 a{39:71;115:154;133-decoration:78;21:93 114 #122;30:#DDD;56:#444;-111-21-31:.3em;-58-21-31:.3em}.13-14-43 a:79{21-56:#122;30:#EEE}.13-14 .13-14-75 .13-14-26 a,dl.13-14 dt.13-14-26 a{font-weight:bold;56:#000;30:#FFF}.13-14-43 a 158{21:78;32:.6;47:105(32=60)}.13-14-43 a:79 158,.13-14 .13-14-75 .13-14-26 a 158{32:1;47:105(32=137)}.13-14-28,.13-14-28 a,.13-14-28 a:79{30:#EEE;21-56:#DDD;56:#AAA;115:default}.13-14-28 a 158,.13-14-28 a:79 158{32:.5;47:105(32=50)}.13-14-43-close-icon{69:in148-132;*69:in148;*zoom:1;41-13:-0.5em;41-38:0.5em;115:154;32:0.5;47:105(32=50)}.13-14-43-close-icon:79{32:1;47:105(32=137);56:#B00;133-shadow:#888 .15em .15em .109}.13-14 .13-14-27{69:78;39:71;min-29:4em;57:.5em 0}.13-14 .13-14-27-26{69:132}.13-14-27-67{39:143;80:138;38:138;32:0.5;47:105(32=50);30:#122;46:137%;29:137%;133-align:center;148-29:137%}.13-14-27-67-126{39:143;38:44%;80:44%}.13-14-27-67-126 72{float:38;30:#777;46:.5em;29:112;41-13:.112;-111-21-31:.112;-58-21-31:.112}.13-14-27-67-126 72.glow{30:#444;29:1.109;41-80:-0.112}.13-14 .13-14-22{57:0 1.4em;39:71;41-48:.5em}.13-14 .13-14-22 .13-14-25-38,.13-14 .13-14-22 .13-14-25-13{46:1.112;133-align:center;30:#EEE;56:#666;115:154;21:93 114 #122;-111-21-31:.109;-58-21-31:.109;39:143;80:138;38:138;z-index:137}.13-14 .13-14-22 .13-14-25-38:79,.13-14 .13-14-22 .13-14-25-13:79{56:#000;30:#DDD;21-56:#AAA}.13-14 .13-14-22 .13-14-25-13{38:auto;13:138}.13-14 .13-14-22 .13-14-25-28,.13-14 .13-14-22 .13-14-25-28:79{115:default;30:#DDD;21-56:#DDD;56:#AAA}.13-14 .13-14-22 .13-14-25-147{46:137%;141:hidden;39:71;z-index:50}.13-14 .13-14-22 .13-14-75{39:71;46:999em;41:0}.13-14-52 .13-14-75{29:109;57:0 112;21-48:93 114 #122}.13-14-52 .13-14-43{41-80:-93;41-13:93}.13-14-52 .13-14-43 a{148-29:1.8em;41-80:.109;57:0 112;21-48:78;-111-21-31-4838:0;-111-21-31-4813:0;-58-21-48-38-31:0;-58-21-48-13-31:0}.13-14-52 .13-14-75 .13-14-26 a{148-29:109;41-80:93}.13-14-52 .13-14-22{21-48:93 114 #122}.13-14-52 .13-14-22 .13-14-25-38,.13-14-52 .13-14-22 .13-14-25-13{148-29:1.8em;80:.109;-111-21-31-4838:0;-111-21-31-4813:0;-58-21-48-38-31:0;-58-21-48-13-31:0}.13-14-52 .13-14-22 .13-14-25-147{39:71;80:93}.13-14-52 .13-14-22 .13-14-25-147 .13-14-75{57:0}.13-14-62 .13-14-75,.13-14-62 .13-14-43 a,.13-14-62 .13-14-22 .13-14-25-38,.13-14-62 .13-14-22 .13-14-25-13{29:6em;148-29:6em}.13-14-62 .13-14-43{41-13:2px}.13-14-62 .13-14-43 a 158{21:93 114 #122;41:.4em;57:0}dl.13-14{141:78;21:78}dt.13-14-43,dt.13-14-43 a{69:132;float:78}dt.13-14-43 a{57:.109 112}dl.13-14 dt.13-14-26 a{30:#EEE;-111-21-31-4838:0;-111-21-31-4813:0;-58-21-48-38-31:0;-58-21-48-13-31:0}</86>\");",",,,,,,,,,,,this,,right,tabs,,function,element,return,var,,border,scroller,,options,scroll,current,panel,disabled,height,background,radius,opacity,controller,,isHarmonica,tabsList,Tabs,left,position,,margin,isCarousel,tab,,addClass,width,filter,bottom,initialize,,enabled,simple,,show,first,color,padding,webkit,insert,,remove,carousel,class,bind,indexOf,,locker,Cookie,display,_startLoop,relative,div,offsetHeight,null,list,fire,,none,hover,top,,include,,offsetWidth,removeClass,style,disable,,insertTo,scrollDuration,false,length,1px,callTab,else,_stopLoop,prototype,forgetHovers,,,checkScrollButtons,document,duration,resizing,alpha,bottomright,resizeFx,timer,2em,has_next,moz,1em,getStyle,solid,cursor,enable,parentNode,bottomleft,nextButton,prevButton,justScroll,CCC,,onClick,resizer,spinner,split,resizeDuration,__working,arguments,cache,block,text,startLoop,new,buildScroller,100,0px,stopObserving,update,overflow,selected,absolute,hasClass,idPrefix,scrollTo,body,line,scrollToTab,slide,morph,tagName,onMousedown,pointer,tabsElement,Tab,apply,img,pickTab,click,findCurrent,cookieIndex,replace,request,toInt,scrollRight,radioClass,scrollTabs,periodical,scrollable,scrollLeft,splice,findPanel,link,List,Class,Loop,Duration".split(",")));
|
6
|
+
if (!RightJS) throw "Gimme RightJS";eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("19 42=129 174(Observer,{extend:{EVENTS:$w('49 hide 156 load 87 124 add 57 move'),Options:{147:'',14Element:68,117:'both',134:400,2642:94,26176:400,145:68,28:[],closable:94,loop:94,loopPause:151,url:94,138:94,Xhr:68,72:68},rescan:16(s){($(s)||107).select('*.13-14').each(16(e){if(!e._14)129 42(e)})}},47:16(e,o){11.17=$(e);11.$super(o||eval('('+11.17.get('data-14-25')+')'));11.17._14=11.init()},destroy:16(){delete(11.17._14)},49:16(t){18 11.96(t,'49')},87:16(t){18 11.96(t,'87')},124:16(t){18 11.96(t,'124')},96:16(t,m){if(isArray(t))t.each(11[m],11);93 if(t=isNumber(t)?11.14[t]:t)t[m]();18 11},init:16(){11.35=11.17.162=='DL';11.43=11.17.118('13-14-59');11.isSimple=!11.35&&!11.43;11.find42();11.17.41('13-14');if(11.isSimple)11.17.41('13-14-53');18 11.87(11.25.28)},find42:16(){11.14173=11.35?11.17:$(11.25.14Element)||11.17.54('UL').41('13-14-83');11.14=11.14173.subNodes(11.35?'dt':68).map(16(n){18 129 42.164(n,11)},11)},find177:16(t){19 a=11.25.147+t.id,p;if(11.35){19 n=t.17.next();p=(n&&n.162=='DD')?n:$E('DD').62To(t.17,'after')}93 p=$(a)||$E(11.17.162=='UL'?'LI':'DIV').62To(11.17);18 p.set('id',a)}});42.164=129 174({extend:{autoId:0},47:16(e,c){11.17=e.41('13-14-38');11.21=c;11.17.160(11.156.69(11)).130('s89Event');11.findLink();11.27=129 42.177(c.find177(11),11);if(c.25.closable)11.link.62($E('78',{'65':'13-14-38-close-icon','html':'×'}).160(11.57.69(11)).130('s89Event'))},156:16(e){e.s89();18 11.84('156').49()},49:16(){if(11.51()){19 p=11.21.14.54('24');if(p)p.84('hide');11.17.radio174('13-14-24');11.21.26To164(11);11.27.49();11.84('49')}18 11},87:16(){11.17.41('13-14-28');18 11.84('87')},124:16(){11.17.57174('13-14-28');18 11.84('124')},28:16(){18!11.51()},51:16(){18!11.17.118('13-14-28')},24:16(){18 11.17.118('13-14-24')},57:16(a){if(a)a.s89();if(11.24()){19 e=11.21.14.48('51');19 s=e[e.71(11)+1]||e[e.71(11)-1];if(s)s.49()}11.21.14.splice(11.21.14.71(11),1);11.17.57();11.27.57();18 11},45:16(){18 11.17.86+11.17.114('39Right').155()},84:16(e){11.21.84(e,11);18 11},findLink:16(){11.link=11.17.54('a');11.id=11.link.href.133('#')[1]||(11.21.25.147+(42.164.autoId++))}});42.177=129 174(Observer,{47:16(e,t){11.38=t;11.id=e.id;11.17=e.41('13-14-27')},49:16(){18 11.116(16(){11.38.21.14.each(16(t){19 e=t.27.17;e[e==11.17?'41':'57174']('13-14-27-24')},11)})},122:16(c){if(11.38.24())11.116(16(){11.17.122(c||'')});93 11.17.122(c||'');18 11},57:16(){11.17.57();18 11},lock:16(){11.17.62(11.52(),'89')},116:16(c){19 a=11.38.21;if(a.82)18 11.116.69(11,c).157(103);19 o=a.25;19 i=a.17.54('.13-14-27-24');19 t=11.17;19 k=i!=t;19 l=11.17.54('78.13-14-27-52');if(t.73.118('13-14-98'))t.62To(i.73);if(o.117&&self.Fx&&i&&(k||l)){a.82=151;19 u=16(){a.82=94};19 e=(o.117=='both'&&l)?'135':o.117;19 d=o.134;d=Fx.176s[d]||d;19 r=e=='fade'?0:e=='135'?d:d/2;19 f=d-r;if(e!='135')t.setStyle({32:0});19 j=(a.35&&k)?0:i.79;c.call(11);19 n=t.79;19 g=68;if(e!='fade'&&j!=n){a.17.91.29=a.17.79+'px';g=$E('78',{'65':'13-14-98','91':'29: '+j+'px'});if(a.35&&k){i.41('13-14-27-24');19 h=$E('78',{'65':'13-14-98'});h.91.29=i.79+'px';19 p=16(){h.159(i.57174('13-14-27-24'))};i.wrap(h);g.91.29='141'}t.wrap(g);a.17.91.29='auto'}93{rezise_111=0;d=f}19 b=0;19 s=16(){if(g){if(e=='both'&&!b)18 b++;g.159(t)}u()};if(h)h.169({29:'141'},{111:r,144:p});if(g)g.169({29:n+'px'},{111:r,144:s});if(e!='135')t.169.69(t,{32:1},{111:f,144:s}).157(r);if(!g&&e=='135')s()}93 c.call(11);18 11},52:16(){if(!11._52){19 l=$E('78',{'65':'13-14-27-52'});19 s=$E('78',{'65':'13-14-27-52-131'}).62To(l);19 d='1234'.133('').map(16(a){18 $E('78',{'65':a==1?'glow':68}).62To(s)});(16(){s.62(d.last(),'89');d.unshift(d.pop())}).periodical(400);11._52=l}18 11._52}});42.90((16(){19 d=42.97.init;18{next:16(){18 11.153(+1)},prev:16(){18 11.153(-1)},26Left:16(){18 11[11.43?'prev':'127'](+0.6)},26Right:16(){18 11[11.43?'next':'127'](-0.6)},init:16(){d.call(11);if(11.26able=(11.25.2642||11.43))11.143();18 11},143:16(){if(!11.17.54('13-14-22')){11.125=$E('78',{'65':'13-14-26-36','html':'«'}).130(11.26Left.69(11));11.128=$E('78',{'65':'13-14-26-13','html':'»'}).130(11.26Right.69(11));11.17.62($E('78',{'65':'13-14-22'}).62([11.125,11.128,$E('78',{'65':'13-14-26-152'}).62(11.14173)]),'89')}},153:16(p){19 c=11.14.54('24');if(c&&c.51()){19 e=11.14.48('51');19 t=e[e.71(c)+p];if(t)t.49()}},26To164:16(t){if(11.26able){19 b=0;for(19 i=0;i<11.14.95;i++){b+=11.14[i].45();if(11.14[i]==t)break}19 a=11.14173.73.86;19 s=(11.43?(a/2+t.45()/2):a)-b;if(!11.43){19 c=11.14173.114('36').155()||0;if(s>=c&&s<(c+a-t.45()))s=c;93 if(c>-b&&c<=(t.45()-b))s=t.45()-b}11.26To(s)}},127:16(s){19 c=11.14173.114('36').155()||0;19 a=11.14173.73.86;11.26To(c+a*s)},26To:16(s){19 c=11.14173.114('36').155()||0;19 a=11.14173.73.86;19 o=0;for(19 i=0;i<11.14.95;i++)o+=11.14[i].45();if(s<(a-o))s=a-o;if(s>0)s=0;19 b={36:s+'px'};if(11.25.26176&&self.Fx&&c!=s)11.14173.169(b,{111:11.25.26176});93 11.14173.setStyle(b);11.106(o,a,s)},106:16(o,a,s){19 h=120=94;if(11.43){19 e=11.14.48('51');19 c=e.54('24');if(c){19 i=e.71(c);h=i>0;120=i<e.95-1}}93{h=s!=0;120=s>(a-o)}11.125[h?'57174':'41']('13-14-26-28');11.128[120?'57174':'41']('13-14-26-28')}}})());42.90((16(){19 d=42.97.47;19 g=16(){18 self.72?(72.get('13-14-indexes')||'').133(','):[]};19 s=16(o,a,t){if(self.72){19 i=g();i=i.without.140(i,a.map('id'));i.push(t.id);72.set('13-14-indexes',i.uniq().join(','),o)}};18{47:16(){d.140(11,80);11.161();if(11.25.72)11.onShow(s.curry(11.25.72,11.14))},161:16(){19 c;if(11.25.145!==68)c=11.25.145;93{19 e=11.14.48('51');c=e[11.urlIndex()]||e[11.168()]||e.54('24')||e[0]}if(c)c.49()},urlIndex:16(){19 b=-1,a=107.location.href.133('#')[1];if(a)for(19 i=0;i<11.14.95;i++)if(11.14[i].id==a){b=i;break}18 b},168:16(){19 a=-1;if(11.25.72){19 b=g();for(19 i=0;i<11.14.95;i++)if(b.90(11.14[i].id)){a=i;break}}18 a}}})());42.90({add:16(a,c,o){19 o=o||{};19 e=$E(11.35?'dt':'li').62($E('a',{html:a,href:o.url||'#'+(o.id||'')})).62To(11.14173);19 t=129 42.164(e,11);t.27.17.122(c||'');11.14.push(t);if(defined(o.37))11.move(t,o.37);18 11.84('add',t)},move:16(t,p){19 t=11.14[t]||t;if(11.14[p]&&11.14[p]!==t){11.14[p].17.62(t.17,(p==11.14.95-1)?'after':'before');if(11.35)t.17.62(t.27.17,'after');11.14.splice(11.14.71(t),1);11.14.splice(p,0,t);11.84('move',t,p)}18 11},57:16(t){18 11.96(t,'57')}});42.164.90((16(){19 c=42.164.97.49;18{49:16(){if(11.dogPiling(80))18 11;19 a=c.140(11,80);19 u=11.link.href;19 o=11.21.25;if(u.90s('#'))u=o.url?o.url.159('%{id}',u.133('#')[1]):68;if(u&&!11.170&&!(o.138||11.138)){11.27.lock();try{11.170=129 Xhr(u,Object.merge({method:'get'},o.Xhr)).onComplete(16(r){if(11.21.82)18 80.callee.69(11,r).157(103);11.27.122(r.136);11.170=68;if(o.138)11.138=151;11.84('load')}.69(11)).send()}catch(e){if(!Browser.OLD)throw(e)}}18 a},dogPiling:16(b){if(11.21.82){if(11.21.104)11.21.104.cancel();11.21.104=(16(a){11.49.140(11,a)}).69(11,b).157(103);18 151}18 11.21.104=68}}})());42.90((16(){19 o=42.97.47;18{47:16(){o.140(11,80);if(11.25.loop)11.139()},139:16(d){if(!d&&!11.25.loop)18 11;if(11.25.loopPause){11._s89175=11._s89175||11.s89175.69(11,151);11.74=11.74||11.139.69(11,d);11.105().on({mouseover:11._s89175,mouseout:11.74})}if(11.108)11.108.s89();11.108=16(){19 e=11.14.48('51');19 c=11.14.54('24');19 n=e[e.71(c)+1];11.49(n||e.54())}.69(11).periodical(11.25.loop||d);18 11},s89175:16(e,p){if(11.108){11.108.s89();11.108=68}if(!p&&11.74)11.105()},105:16(){18 11.17.s89Observing('mouseover',11._s89175).s89Observing('mouseout',11.74)}}})());107.onReady(16(){42.rescan()});107.write(\"<91 type=\\\"136/css\\\">.13-14,.13-14 .13-14-83,.13-14 .13-14-38,.13-14 .13-14-27,.13-14-26-36,.13-14-26-13,.13-14-26-152,.13-14-27-52,.13-14-98{39:0;56:0;30:81;20:81;83-91:81;70:137;45:auto;29:auto}.13-14{20-46:102 110 #132}.13-14-98{149:hidden}.13-14-38,.13-14-38 a{70:137;float:36}.13-14-38 a{37:76;121:158;136-decoration:81;20:102 110 #132;30:#DDD;55:#444;-112-20-31:.3em;-58-20-31:.3em}.13-14-38 a:85{20-55:#132;30:#EEE}.13-14 .13-14-83 .13-14-24 a,dl.13-14 dt.13-14-24 a{font-weight:bold;55:#000;30:#FFF}.13-14-38 a 166{20:81;32:.6;48:109(32=60)}.13-14-38 a:85 166,.13-14 .13-14-83 .13-14-24 a 166{32:1;48:109(32=103)}.13-14-28,.13-14-28 a,.13-14-28 a:85{30:#EEE;20-55:#DDD;55:#AAA;121:default}.13-14-28 a 166,.13-14-28 a:85 166{32:.5;48:109(32=50)}.13-14-38-close-icon{70:in150-137;*70:in150;*zoom:1;39-13:-0.5em;39-36:0.5em;121:158;32:0.5;48:109(32=50)}.13-14-38-close-icon:85{32:1;48:109(32=103);55:#B00;136-shadow:#888 .15em .15em .113}.13-14 .13-14-27{70:81;37:76;min-29:4em;56:.5em 0}.13-14 .13-14-27-24{70:137}.13-14-27-52{37:146;89:141;36:141;32:0.5;48:109(32=50);30:#132;45:103%;29:103%;136-align:center;150-29:103%}.13-14-27-52-131{37:146;36:44%;89:44%}.13-14-27-52-131 78{float:36;30:#777;45:.5em;29:115;39-13:.115;-112-20-31:.115;-58-20-31:.115}.13-14-27-52-131 78.glow{30:#444;29:1.113;39-89:-0.115}.13-14 .13-14-22{56:0 1.4em;37:76;39-46:.5em}.13-14 .13-14-22 .13-14-26-36,.13-14 .13-14-22 .13-14-26-13{45:1.115;136-align:center;30:#EEE;55:#666;121:158;20:102 110 #132;-112-20-31:.113;-58-20-31:.113;37:146;89:141;36:141;z-index:103}.13-14 .13-14-22 .13-14-26-36:85,.13-14 .13-14-22 .13-14-26-13:85{55:#000;30:#DDD;20-55:#AAA}.13-14 .13-14-22 .13-14-26-13{36:auto;13:141}.13-14 .13-14-22 .13-14-26-28,.13-14 .13-14-22 .13-14-26-28:85{121:default;30:#DDD;20-55:#DDD;55:#AAA}.13-14 .13-14-22 .13-14-26-152{45:103%;149:hidden;37:76;z-index:50}.13-14 .13-14-22 .13-14-83{37:76;45:999em;39:0}.13-14-53 .13-14-83{29:113;56:0 115;20-46:102 110 #132}.13-14-53 .13-14-38{39-89:-102;39-13:102}.13-14-53 .13-14-38 a{150-29:1.8em;39-89:.113;56:0 115;20-46:81;-112-20-31-4636:0;-112-20-31-4613:0;-58-20-46-36-31:0;-58-20-46-13-31:0}.13-14-53 .13-14-83 .13-14-24 a{150-29:113;39-89:102}.13-14-53 .13-14-22{20-46:102 110 #132}.13-14-53 .13-14-22 .13-14-26-36,.13-14-53 .13-14-22 .13-14-26-13{150-29:1.8em;89:.113;-112-20-31-4636:0;-112-20-31-4613:0;-58-20-46-36-31:0;-58-20-46-13-31:0}.13-14-53 .13-14-22 .13-14-26-152{37:76;89:102}.13-14-53 .13-14-22 .13-14-26-152 .13-14-83{56:0}.13-14-59 .13-14-83,.13-14-59 .13-14-38 a,.13-14-59 .13-14-22 .13-14-26-36,.13-14-59 .13-14-22 .13-14-26-13{29:6em;150-29:6em}.13-14-59 .13-14-38{39-13:2px}.13-14-59 .13-14-38 a 166{20:102 110 #132;39:.4em;56:0}dl.13-14{149:81;20:81}dt.13-14-38,dt.13-14-38 a{70:137;float:81}dt.13-14-38 a{56:.113 115}dl.13-14 dt.13-14-24 a{30:#EEE;-112-20-31-4636:0;-112-20-31-4613:0;-58-20-46-36-31:0;-58-20-46-13-31:0}</91>\");",",,,,,,,,,,,this,,right,tabs,,function,element,return,var,border,controller,scroller,,current,options,scroll,panel,disabled,height,background,radius,opacity,tabsList,,isHarmonica,left,position,tab,margin,,addClass,Tabs,isCarousel,,width,bottom,initialize,filter,show,,enabled,locker,simple,first,color,padding,remove,webkit,carousel,,,insert,,,class,,removeClass,null,bind,display,indexOf,Cookie,parentNode,_startLoop,insertTo,relative,,div,offsetHeight,arguments,none,__working,list,fire,hover,offsetWidth,disable,,top,include,style,scrollDuration,else,false,length,callTab,prototype,resizer,,,_stopLoop,1px,100,__timeout,forgetHovers,checkScrollButtons,document,timer,alpha,solid,duration,moz,2em,getStyle,1em,resizing,resizeFx,hasClass,bottomright,has_next,cursor,update,,enable,prevButton,bottomleft,justScroll,nextButton,new,onClick,spinner,CCC,split,resizeDuration,slide,text,block,cache,startLoop,apply,0px,stopObserving,buildScroller,onFinish,selected,absolute,idPrefix,scrollTo,overflow,line,true,body,pickTab,scrollToTab,toInt,click,delay,pointer,replace,onMousedown,findCurrent,tagName,tabsElement,Tab,scrollRight,img,_locker,cookieIndex,morph,request,scrollLeft,scrollTabs,List,Class,Loop,Duration,Panel".split(",")));
|
@@ -3,88 +3,121 @@
|
|
3
3
|
*
|
4
4
|
* See http://rightjs.org/ui/tooltips for more details
|
5
5
|
*
|
6
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
6
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
7
7
|
*/
|
8
8
|
if (!RightJS) throw "Gimme RightJS!";
|
9
9
|
|
10
10
|
/**
|
11
11
|
* The native tooltips feature for RithJS
|
12
12
|
*
|
13
|
-
*
|
14
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov aka St.
|
13
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
15
14
|
*/
|
16
|
-
|
17
15
|
var Tooltip = new Class({
|
18
16
|
include: Options,
|
19
17
|
|
20
18
|
extend: {
|
21
19
|
Options: {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
cssRule: '[rel=tooltip]', // a css-marker of an element with a tooltip
|
21
|
+
|
22
|
+
fxName: 'fade', // the appearance effect name
|
23
|
+
fxDuration: 400, // the appearance effect duration
|
24
|
+
delay: 400, // the appearance delay
|
25
|
+
|
26
|
+
move: true, // if it should be moved with the mouse
|
27
|
+
|
28
|
+
idSuffix: '-tooltip' // ID prefix for tooltips with ID
|
28
29
|
},
|
29
30
|
|
30
31
|
current: null, // currently active tooltip reference
|
32
|
+
instances: [], // keeps the list of instances
|
31
33
|
|
32
|
-
//
|
33
|
-
|
34
|
-
var
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
// tries to find a tip closest to the event
|
35
|
+
find: function(event) {
|
36
|
+
var target = event.target, targets = [target].concat(target.parents()),
|
37
|
+
targets = targets.slice(0, targets.length - 2),
|
38
|
+
element = targets.first(function(node) {
|
39
|
+
return node._tooltip || node.match(Tooltip.Options.cssRule);
|
40
|
+
});
|
41
|
+
|
42
|
+
if (element) {
|
43
|
+
var uid = $uid(element);
|
44
|
+
return Tooltip.instances[uid] = Tooltip.instances[uid] || new Tooltip(element);
|
45
|
+
}
|
46
|
+
},
|
47
|
+
|
48
|
+
// DEPRECATED a dummy method for the old API backward compatibility
|
49
|
+
rescan: function(scope) { }
|
43
50
|
},
|
44
51
|
|
52
|
+
/**
|
53
|
+
* Constructor
|
54
|
+
*
|
55
|
+
* @param Element associated element
|
56
|
+
* @param Object options
|
57
|
+
*/
|
45
58
|
initialize: function(element, options) {
|
46
|
-
this.element
|
47
|
-
this.
|
59
|
+
this.associate = element = $(element);
|
60
|
+
this.element = $E('div', {
|
61
|
+
'class': 'right-tooltip',
|
62
|
+
'html': '<div class="right-tooltip-arrow"></div>'+
|
63
|
+
'<div class="right-tooltip-container">'+
|
64
|
+
(element.get('title') || element.get('alt'))+
|
65
|
+
'</div>'
|
66
|
+
}).insertTo(document.body);
|
48
67
|
|
49
|
-
this.setOptions(options
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
},
|
56
|
-
|
57
|
-
getText: function() {
|
58
|
-
return this.container.innerHTML;
|
68
|
+
this.setOptions(options || eval('('+element.get('data-tooltips-options')+')'));
|
69
|
+
|
70
|
+
element.set({ title: '', alt: ''});
|
71
|
+
|
72
|
+
if (element.id)
|
73
|
+
this.element.id = element.id + this.options.idSuffix;
|
59
74
|
},
|
60
75
|
|
76
|
+
/**
|
77
|
+
* Hides the tooltip
|
78
|
+
*
|
79
|
+
* @return Tooltip this
|
80
|
+
*/
|
61
81
|
hide: function() {
|
62
|
-
Tooltip.current = null;
|
63
82
|
this.cancelTimer();
|
64
|
-
this.element.hide(this.options.fxName, {
|
83
|
+
this.element.hide(this.options.fxName, {
|
84
|
+
duration: this.options.fxDuration,
|
85
|
+
onFinish: function() {
|
86
|
+
if (Tooltip.current === this)
|
87
|
+
Tooltip.current = null;
|
88
|
+
}.bind(this)
|
89
|
+
});
|
65
90
|
|
66
91
|
return this;
|
67
92
|
},
|
68
93
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
Tooltip.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
this.
|
84
|
-
|
85
|
-
|
94
|
+
/**
|
95
|
+
* Shows the tooltip with a dealy
|
96
|
+
*
|
97
|
+
* @param Boolean if true will show tooltip immediately
|
98
|
+
* @return Tooltip this
|
99
|
+
*/
|
100
|
+
show: function(immediately) {
|
101
|
+
// hidding all the others
|
102
|
+
Tooltip.instances.each(function(tip) {
|
103
|
+
if (tip && tip !== this) tip.hide();
|
104
|
+
}, this);
|
105
|
+
|
106
|
+
// show the tooltip with a delay
|
107
|
+
this.timer = (function() {
|
108
|
+
this.element.stop().show(this.options.fxName, {duration: this.options.fxDuration});
|
109
|
+
|
110
|
+
Tooltip.current = this;
|
111
|
+
}).bind(this).delay(this.options.delay);
|
112
|
+
|
113
|
+
return Tooltip.current = this;
|
86
114
|
},
|
87
115
|
|
116
|
+
/**
|
117
|
+
* Moves the tooltip where the event happened
|
118
|
+
*
|
119
|
+
* @return Tooltip this
|
120
|
+
*/
|
88
121
|
moveTo: function(event) {
|
89
122
|
this.element.style.left = event.pageX + 'px';
|
90
123
|
this.element.style.top = event.pageY + 'px';
|
@@ -92,39 +125,63 @@ var Tooltip = new Class({
|
|
92
125
|
return this;
|
93
126
|
},
|
94
127
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
mouseover: this.showDelayed.bind(this),
|
104
|
-
mouseout: this.hide.bind(this)
|
105
|
-
});
|
106
|
-
|
107
|
-
if (element.id) this.element.id = element.id + this.options.idSuffix;
|
108
|
-
|
109
|
-
this.associate = element;
|
110
|
-
|
111
|
-
return this;
|
128
|
+
// protected
|
129
|
+
|
130
|
+
// cancels a show timeout
|
131
|
+
cancelTimer: function() {
|
132
|
+
if (this.timer) {
|
133
|
+
this.timer.cancel();
|
134
|
+
this.timer = null;
|
135
|
+
}
|
112
136
|
}
|
113
137
|
});
|
114
138
|
|
115
139
|
/**
|
116
140
|
* The post load tooltips initialization script
|
117
141
|
*
|
118
|
-
* Copyright (C) 2009 Nikolay V. Nemshilov
|
142
|
+
* Copyright (C) 2009-2010 Nikolay V. Nemshilov
|
119
143
|
*/
|
120
144
|
document.on({
|
121
|
-
|
145
|
+
/**
|
146
|
+
* Watches all the mouse-over events and reacts if one of the targets
|
147
|
+
* matches a tooltip
|
148
|
+
*
|
149
|
+
* @param Event event
|
150
|
+
*/
|
151
|
+
mouseover: function(event) {
|
152
|
+
var prev_tip = Tooltip.current, this_tip = Tooltip.find(event);
|
153
|
+
|
154
|
+
if (this_tip) {
|
155
|
+
if (prev_tip && prev_tip !== this_tip) prev_tip.hide();
|
156
|
+
if (this_tip.element.hidden()) this_tip.show();
|
157
|
+
|
158
|
+
this_tip.moveTo(event);
|
159
|
+
}
|
160
|
+
},
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Catches the mouseout events and hides tooltips when needed
|
164
|
+
*
|
165
|
+
* @param Event event
|
166
|
+
*/
|
167
|
+
mouseout: function(event) {
|
168
|
+
var curr_tip = Tooltip.current, this_tip = Tooltip.find(event);
|
169
|
+
|
170
|
+
if (curr_tip && (!this_tip || this_tip === curr_tip))
|
171
|
+
curr_tip.hide();
|
172
|
+
},
|
122
173
|
|
174
|
+
/**
|
175
|
+
* Moves tooltips when active
|
176
|
+
*
|
177
|
+
* @param Event event
|
178
|
+
*/
|
123
179
|
mousemove: function(event) {
|
124
|
-
|
125
|
-
|
180
|
+
var tip = Tooltip.current;
|
181
|
+
if (tip && tip.options.move) {
|
182
|
+
tip.moveTo(event);
|
126
183
|
}
|
127
184
|
}
|
128
185
|
});
|
129
186
|
|
130
|
-
document.write("<style type=\"text/css\">div.right-tooltip{position:absolute;margin-top:16pt;margin-left:
|
187
|
+
document.write("<style type=\"text/css\">div.right-tooltip{display:none;position:absolute;z-index:999999;font-size:90%;margin-top:16pt;margin-left:5pt;color:#FFF;text-shadow:0 0 .2em #000;border:.3em solid rgba(255,255,255,0.2);background-color:rgba(25,25,25,0.92);background-image:-webkit-gradient(linear,0% 0%,0% 100%,from(transparent),to(#000));*background-color:#000;*border:.3em solid #444;border-radius:.4em;-moz-border-radius:.4em;-webkit-border-radius:.4em;box-shadow:0 0 .4em #555;-moz-box-shadow:0 0 .4em #555;-webkit-box-shadow:0 0 .4em #555}div.right-tooltip-container{margin:.4em .6em}</style>");
|