right-rails 0.6.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/CHANGELOG +8 -0
  2. data/README.rdoc +71 -0
  3. data/Rakefile +144 -14
  4. data/generators/right_rails/right_rails_generator.rb +18 -21
  5. data/init.rb +11 -32
  6. data/lib/generators/right_rails/right_rails_generator.rb +27 -0
  7. data/lib/generators/right_rails/templates/iframed.html.erb +10 -0
  8. data/lib/right-rails.rb +1 -1
  9. data/lib/right_rails/config.rb +278 -0
  10. data/lib/right_rails/controller_extensions.rb +10 -5
  11. data/lib/right_rails/helpers/basic.rb +10 -66
  12. data/lib/right_rails/helpers/forms.rb +141 -139
  13. data/lib/right_rails/helpers/misc.rb +45 -67
  14. data/lib/right_rails/helpers/rails.rb +40 -105
  15. data/lib/right_rails/helpers.rb +364 -1
  16. data/lib/right_rails/java_script_generator.rb +34 -24
  17. data/lib/right_rails.rb +6 -1
  18. data/{images → public/images}/colorpicker.png +0 -0
  19. data/{images → public/images}/resizable.png +0 -0
  20. data/public/javascripts/right/autocompleter-src.js +612 -0
  21. data/public/javascripts/right/autocompleter.js +18 -0
  22. data/public/javascripts/right/calendar-src.js +1448 -0
  23. data/public/javascripts/right/calendar.js +36 -0
  24. data/public/javascripts/right/colorpicker-src.js +967 -0
  25. data/public/javascripts/right/colorpicker.js +26 -0
  26. data/{javascripts/right-dnd-src.js → public/javascripts/right/dnd-src.js} +86 -52
  27. data/public/javascripts/right/dnd.js +20 -0
  28. data/{javascripts/right-effects-src.js → public/javascripts/right/effects-src.js} +90 -45
  29. data/public/javascripts/right/effects.js +17 -0
  30. data/{javascripts/right-ui-i18n-de.js → public/javascripts/right/i18n/de.js} +7 -7
  31. data/{javascripts/right-ui-i18n-en-us.js → public/javascripts/right/i18n/en-us.js} +1 -1
  32. data/{javascripts/right-ui-i18n-es.js → public/javascripts/right/i18n/es.js} +7 -7
  33. data/{javascripts/right-ui-i18n-fr.js → public/javascripts/right/i18n/fr.js} +7 -7
  34. data/{javascripts/right-ui-i18n-hu.js → public/javascripts/right/i18n/hu.js} +7 -7
  35. data/{javascripts/right-ui-i18n-jp.js → public/javascripts/right/i18n/jp.js} +7 -7
  36. data/{javascripts/right-ui-i18n-nl.js → public/javascripts/right/i18n/nl.js} +7 -7
  37. data/{javascripts/right-ui-i18n-pt-br.js → public/javascripts/right/i18n/pt-br.js} +7 -7
  38. data/{javascripts/right-ui-i18n-ru.js → public/javascripts/right/i18n/ru.js} +7 -7
  39. data/{javascripts/right-ui-i18n-ua.js → public/javascripts/right/i18n/ua.js} +17 -12
  40. data/public/javascripts/right/in-edit-src.js +352 -0
  41. data/public/javascripts/right/in-edit.js +13 -0
  42. data/public/javascripts/right/json-src.js +160 -0
  43. data/public/javascripts/right/json.js +10 -0
  44. data/public/javascripts/right/lightbox-src.js +881 -0
  45. data/public/javascripts/right/lightbox.js +24 -0
  46. data/{javascripts/right-rails-src.js → public/javascripts/right/rails-src.js} +195 -171
  47. data/public/javascripts/right/rails.js +14 -0
  48. data/public/javascripts/right/rater-src.js +366 -0
  49. data/public/javascripts/right/rater.js +13 -0
  50. data/public/javascripts/right/resizable-src.js +420 -0
  51. data/public/javascripts/right/resizable.js +15 -0
  52. data/public/javascripts/right/selectable-src.js +687 -0
  53. data/public/javascripts/right/selectable.js +22 -0
  54. data/public/javascripts/right/slider-src.js +377 -0
  55. data/public/javascripts/right/slider.js +14 -0
  56. data/public/javascripts/right/sortable-src.js +392 -0
  57. data/public/javascripts/right/sortable.js +16 -0
  58. data/public/javascripts/right/tabs-src.js +1123 -0
  59. data/public/javascripts/right/tabs.js +29 -0
  60. data/public/javascripts/right/tooltip-src.js +307 -0
  61. data/public/javascripts/right/tooltip.js +12 -0
  62. data/public/javascripts/right/uploader-src.js +283 -0
  63. data/public/javascripts/right/uploader.js +13 -0
  64. data/{javascripts → public/javascripts}/right-olds-src.js +134 -186
  65. data/public/javascripts/right-olds.js +18 -0
  66. data/public/javascripts/right-safe-src.js +161 -0
  67. data/public/javascripts/right-safe.js +8 -0
  68. data/{javascripts → public/javascripts}/right-src.js +2558 -1750
  69. data/public/javascripts/right.js +92 -0
  70. data/spec/lib/right_rails/config_spec.rb +133 -0
  71. data/spec/lib/right_rails/controller_extensions_spec.rb +1 -1
  72. data/spec/lib/right_rails/helpers/basic_spec.rb +77 -66
  73. data/spec/lib/right_rails/helpers/forms_spec.rb +231 -33
  74. data/spec/lib/right_rails/helpers/misc_spec.rb +94 -26
  75. data/spec/lib/right_rails/helpers/rails_spec.rb +42 -7
  76. data/spec/lib/right_rails/helpers_spec.rb +125 -0
  77. data/spec/lib/right_rails/java_script_generator_spec.rb +30 -0
  78. data/spec/rcov.opts +3 -0
  79. data/spec/spec_helper.rb +12 -7
  80. metadata +70 -61
  81. data/README.textile +0 -69
  82. data/javascripts/right-autocompleter-src.js +0 -318
  83. data/javascripts/right-autocompleter.js +0 -9
  84. data/javascripts/right-behavior-src.js +0 -261
  85. data/javascripts/right-behavior.js +0 -8
  86. data/javascripts/right-calendar-src.js +0 -946
  87. data/javascripts/right-calendar.js +0 -9
  88. data/javascripts/right-colorpicker-src.js +0 -635
  89. data/javascripts/right-colorpicker.js +0 -9
  90. data/javascripts/right-dnd.js +0 -9
  91. data/javascripts/right-effects.js +0 -6
  92. data/javascripts/right-events-src.js +0 -321
  93. data/javascripts/right-events.js +0 -6
  94. data/javascripts/right-in-edit-src.js +0 -194
  95. data/javascripts/right-in-edit.js +0 -6
  96. data/javascripts/right-json-src.js +0 -141
  97. data/javascripts/right-json.js +0 -6
  98. data/javascripts/right-lightbox-src.js +0 -651
  99. data/javascripts/right-lightbox.js +0 -9
  100. data/javascripts/right-olds.js +0 -9
  101. data/javascripts/right-rails.js +0 -9
  102. data/javascripts/right-rater-src.js +0 -253
  103. data/javascripts/right-rater.js +0 -9
  104. data/javascripts/right-resizable-src.js +0 -336
  105. data/javascripts/right-resizable.js +0 -9
  106. data/javascripts/right-selectable-src.js +0 -565
  107. data/javascripts/right-selectable.js +0 -7
  108. data/javascripts/right-slider-src.js +0 -288
  109. data/javascripts/right-slider.js +0 -7
  110. data/javascripts/right-sortable-src.js +0 -225
  111. data/javascripts/right-sortable.js +0 -9
  112. data/javascripts/right-tabs-src.js +0 -937
  113. data/javascripts/right-tabs.js +0 -6
  114. data/javascripts/right-tooltips-src.js +0 -195
  115. data/javascripts/right-tooltips.js +0 -9
  116. data/javascripts/right-uploader-src.js +0 -167
  117. data/javascripts/right-uploader.js +0 -9
  118. data/javascripts/right.js +0 -7
@@ -1,651 +0,0 @@
1
- /**
2
- * The lightbox widget implemented with RightJS
3
- *
4
- * Home page: http://rightjs.org/ui/lightbox
5
- *
6
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
7
- */
8
- if (!RightJS) { throw "Gimme RightJS please." };
9
- /**
10
- * The lightbox widget
11
- *
12
- * Credits:
13
- * Inspired by and monkeys the Lightbox 2 project
14
- * -- http://www.huddletogether.com/projects/lightbox2/
15
- * Copyright (C) Lokesh Dhakar
16
- *
17
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
18
- */
19
- Browser.IE6 = navigator.userAgent.indexOf("MSIE 6") != -1;
20
- var Lightbox = new Class({
21
- include: Options,
22
-
23
- extend: {
24
- Version: "#{version}",
25
-
26
- Options: {
27
- endOpacity: 0.8,
28
- fxDuration: 200,
29
-
30
- hideOnEsc: true,
31
- hideOnOutClick: true,
32
- showCloseButton: true,
33
- blockContent: false,
34
-
35
- cssRule: "a[rel^=lightbox]", // all lightbox links css-rule
36
-
37
- mediaWidth: 425, // video links default size
38
- mediaHeight: 350
39
- },
40
-
41
- i18n: {
42
- CloseText: '×',
43
- CloseTitle: 'Close',
44
- PrevText: '‹‹‹',
45
- PrevTitle: 'Previous Image',
46
- NextText: '›››',
47
- NextTitle: 'Next Image'
48
- },
49
-
50
- // media content sources
51
- Medias: [
52
- [/(http:\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)/, '$1/v/$2', 'swf'],
53
- [/(http:\/\/video.google.com)\/videoplay\?docid=([^&]+)/, '$1/googleplayer.swf?docId=$2', 'swf'],
54
- [/(http:\/\/vimeo\.[a-z]+)\/([0-9]+).*?/, '$1/moogaloop.swf?clip_id=$2', 'swf']
55
- ],
56
-
57
- boxes: [],
58
-
59
- // DEPRECATED: we use events delegation now, there's no need to call this function any more
60
- rescan: function() {}
61
- },
62
-
63
- /**
64
- * basic constructor
65
- *
66
- * @param Object options override
67
- */
68
- initialize: function(options) {
69
- this.setOptions(options).build().connectEvents();
70
-
71
- Lightbox.boxes.push(this);
72
- },
73
-
74
- /**
75
- * Sets the popup's title
76
- *
77
- * @param mixed string or element or somethin'
78
- * @return Lighbox self
79
- */
80
- setTitle: function(text) {
81
- (function() {
82
- this.caption.update(text)
83
- }).bind(this).delay(this.options.fxDuration);
84
-
85
- return this;
86
- },
87
-
88
- /**
89
- * Hides the box
90
- *
91
- * @return Lightbox self
92
- */
93
- hide: function() {
94
- this.element.hide('fade', {
95
- duration: this.options.fxDuration/2,
96
- onFinish: this.element.remove.bind(this.element)
97
- });
98
- return this;
99
- },
100
-
101
- /**
102
- * shows the lightbox with the content
103
- *
104
- * @param mixed content String, Element, Array, NodeList, ....
105
- * @return Lightbox self
106
- */
107
- show: function(content, size) {
108
- return this.showingSelf(function() {
109
- this.lock();
110
- this.content.update(content || '');
111
- this.resize(size);
112
- }.bind(this));
113
- },
114
-
115
- /**
116
- * resizes the dialogue to fit the content
117
- *
118
- * @param Object {x:.., y:..} optional end size definition
119
- * @return Lightbox self
120
- */
121
- resize: function(size, no_fx) {
122
- this.dialog.style.top = (window.sizes().y - this.dialog.sizes().y) / 2 + 'px';
123
-
124
- var body_style = this.contentSize(size);
125
- var height_diff = this.dialog.sizes().y - this.body.sizes().y;
126
- var body_height = body_style.height.toInt() || this.minBodyHeight();
127
- var dialog_style = {
128
- top: (this.element.sizes().y - body_height - height_diff)/2 + 'px'
129
- };
130
-
131
- // IE6 screws with the dialog width
132
- if (Browser.IE6) {
133
- var padding = this.bodyWrap.getStyle('padding').toInt() > 0 ? 15 : 0;
134
- this.bodyWrap.setStyle('padding: '+padding+'px');
135
-
136
- dialog_style.width = (body_style.width.toInt() + padding * 2) + 'px';
137
- }
138
-
139
- if (no_fx === true) {
140
- this.body.setStyle(body_style);
141
- this.dialog.setStyle(dialog_style);
142
- this.loading = false;
143
- } else {
144
- this.resizeFx(body_style, dialog_style);
145
- }
146
-
147
- return this;
148
- },
149
-
150
- // protected
151
-
152
- // locks the body
153
- lock: function() {
154
- this.bodyLock.removeClass('lightbox-body-lock-transparent').removeClass('lightbox-body-lock-loading').show();
155
- if (Browser.OLD) this.bodyLock.setStyle("opacity: 1");
156
- return this;
157
- },
158
-
159
- // unlocks the body
160
- unlock: function() {
161
- if (this.options.blockContent) {
162
- this.bodyLock.addClass('lightbox-body-lock-transparent');
163
- } else {
164
- this.bodyLock.hide();
165
- }
166
- return this;
167
- },
168
-
169
- // resize specific lock
170
- resizeLock: function() {
171
- this.lock().content.hide();
172
- },
173
-
174
- // resize specific unlock
175
- resizeUnlock: function() {
176
- this.unlock().content.show('fade', {
177
- duration: this.options.fxDuration/2
178
- });
179
- this.loading = false;
180
- },
181
-
182
- // returns the content size hash
183
- contentSize: function(size) {
184
- var size = size === this.$listeners ? null : size,
185
- max_width = this.element.offsetWidth * 0.8,
186
- max_height = this.element.offsetHeight * 0.8;
187
-
188
- if (size) this.content.setStyle(size);
189
-
190
- size = this.content.sizes();
191
-
192
- return {
193
- width: (size.x > max_width ? max_width : size.x)+"px",
194
- height: (size.y > max_height ? max_height : size.y)+"px"
195
- };
196
- },
197
-
198
- // adjusts the box size so that it closed the whole window
199
- boxResize: function(resize) {
200
- this.element.resize(window.sizes());
201
-
202
- // IE6 needs to handle the locker position and size manually
203
- if (Browser.IE6) {
204
- this.locker.resize(window.sizes());
205
-
206
- this.element.style.position = 'absolute';
207
- this.element.style.top = document.documentElement.scrollTop + 'px';
208
- }
209
-
210
- return this.resize(false, true);
211
- },
212
-
213
- // performs an action showing the lighbox
214
- showingSelf: function(callback) {
215
- Lightbox.boxes.without(this).each('hide');
216
-
217
- if (this.element.hidden()) {
218
- this.element.insertTo(document.body).show();
219
-
220
- this.boxResize();
221
- }
222
-
223
- callback();
224
-
225
- return this;
226
- },
227
-
228
- // builds the basic structure
229
- build: function() {
230
- this.element = this.E('lightbox').setStyle('display: none');
231
- this.locker = this.E('lightbox-locker', this.element);
232
- this.dialog = this.E('lightbox-dialog', this.element);
233
- this.caption = this.E('lightbox-caption', this.dialog);
234
- this.bodyWrap = this.E('lightbox-body-wrap', this.dialog);
235
- this.body = this.E('lightbox-body', this.bodyWrap);
236
- this.content = this.E('lightbox-content', this.body);
237
- this.bodyLock = this.E('lightbox-body-lock', this.body).hide();
238
-
239
- // the close button if asked
240
- if (this.options.showCloseButton) {
241
- this.closeButton = this.E('lightbox-close-button', this.dialog)
242
- .onClick(this.hide.bind(this)).update(Lightbox.i18n.CloseText).set('title', Lightbox.i18n.CloseTitle);
243
- }
244
-
245
- if (this.options.hideOnOutClick) {
246
- this.locker.onClick(this.hide.bind(this));
247
- }
248
-
249
- document.on('mousewheel', function(e) {
250
- if (this.element.visible()) {
251
- e.stop();
252
- this[(e.detail || -e.wheelDelta) < 0 ? 'showPrev' : 'showNext']();
253
- }
254
- }.bind(this));
255
-
256
- return this;
257
- },
258
-
259
- // connects the events handling for the box
260
- connectEvents: function() {
261
- if (this.options.hideOnEsc) {
262
- document.onKeydown(function(event) {
263
- if (event.keyCode == 27) {
264
- event.stop();
265
- this.hide();
266
- }
267
- }.bindAsEventListener(this));
268
- }
269
-
270
- window.on('resize', this.boxResize.bind(this));
271
-
272
- return this;
273
- },
274
-
275
- // calculates the minimal body height
276
- minBodyHeight: function() {
277
- var element = $E('div', {'class': 'lightbox-body', style: 'background: none; position: absolute'}).insertTo(document.body),
278
- height = element.sizes().y;
279
- element.remove();
280
- return height;
281
- },
282
-
283
- // processes the resizing visual effect
284
- resizeFx: function(body_style, dialog_style) {
285
- this.resizeLock();
286
-
287
- // processing everything in a single visual effect so it looked smooth
288
- var body_start_width = this.body.sizes().x;
289
- var body_end_width = body_style.width.toInt();
290
- var body_start_height = this.body.sizes().y;
291
- var body_end_height = body_style.height.toInt();
292
- var dialog_start_top = this.dialog.style.top.toInt();
293
- var dialog_end_top = dialog_style.top.toInt();
294
- var dialog_start_width = this.dialog.sizes().x;
295
- var dialog_end_width = (dialog_style.width || '0').toInt();
296
- var body_style = this.body.style;
297
- var dialog_style = this.dialog.style;
298
-
299
- $ext(new Fx(this.dialog, {duration: this.options.fxDuration}), {
300
- render: function(delta) {
301
- body_style.width = (body_start_width + (body_end_width - body_start_width) * delta) + 'px';
302
- body_style.height = (body_start_height + (body_end_height - body_start_height) * delta) + 'px';
303
- dialog_style.top = (dialog_start_top + (dialog_end_top - dialog_start_top) * delta) + 'px';
304
-
305
- if (Browser.IE6) {
306
- dialog_style.width = (dialog_start_width + (dialog_end_width - dialog_start_width) * delta) + 'px';
307
- }
308
- }
309
- }).onFinish(this.resizeUnlock.bind(this)).start();
310
- },
311
-
312
- // private
313
- // elements building shortcut
314
- E: function(klass, parent) {
315
- var e = $E('div', {'class': klass});
316
- if (parent) e.insertTo(parent);
317
- return e;
318
- }
319
-
320
- });
321
-
322
- /**
323
- * Ajax loading support module
324
- *
325
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
326
- */
327
- Lightbox.include((function(proto) {
328
- var old_show = proto.show;
329
- var old_build = proto.build;
330
-
331
- return {
332
- // hightjacking the links
333
- show: function(content) {
334
- if (content && content.href) {
335
- return this.load(content.href, {
336
- onComplete: function(request) {
337
- this.checkTheRoad(content)
338
- .setTitle(content.title)
339
- .content.update(request.responseText);
340
- }.bind(this)
341
- });
342
- } else {
343
- return old_show.apply(this, arguments);
344
- }
345
- },
346
-
347
- /**
348
- * Loads the url via an ajax request and assigns the box content wiht the response result
349
- *
350
- * NOTE: will perform a GET request by default
351
- *
352
- * NOTE: will just update the body content with
353
- * the response text if no onComplete or
354
- * onSuccess callbacks were set
355
- *
356
- * @param String url address
357
- * @param Object Xhr options
358
- * @return Lightbox self
359
- */
360
- load: function(url, options) {
361
- var options = options || {};
362
-
363
- $w('onCreate onComplete').each(function(name) {
364
- options[name] = options[name] ? isArray(options[name]) ? options[name] : [options[name]] : [];
365
- });
366
-
367
- // adding the selfupdate callback as default
368
- if (options.onComplete.empty() && !options.onSuccess) {
369
- options.onComplete.push(function(request) {
370
- this.content.update(request.responseText);
371
- }.bind(this));
372
- }
373
-
374
- options.onCreate.unshift(this.loadLock.bind(this));
375
- options.onComplete.push(this.resize.bind(this));
376
-
377
- options.method = options.method || 'get';
378
-
379
- return this.showingSelf(Xhr.load.bind(Xhr, url, options));
380
- },
381
-
382
- // protected
383
-
384
- // xhr requests loading specific lock
385
- loadLock: function() {
386
- this.loading = true;
387
- this.lock().bodyLock.addClass('lightbox-body-lock-loading');
388
- return this;
389
- },
390
-
391
- build: function() {
392
- var res = old_build.apply(this, arguments);
393
-
394
- // building a textual spinner
395
- var spinner = this.E('lightbox-body-lock-spinner', this.bodyLock);
396
- var dots = '1234'.split('').map(function(i) {
397
- return $E('div', {'class': i == 1 ? 'glow':null}).insertTo(spinner);
398
- });
399
- (function() {
400
- var dot = dots.pop(); dot.insertTo(spinner, 'top'); dots.unshift(dot);
401
- }).periodical(400);
402
-
403
- return res;
404
- }
405
- };
406
- })(Lightbox.prototype));
407
-
408
- /**
409
- * Roadtrips support module for the lightbox
410
- *
411
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
412
- */
413
- Lightbox.include((function(proto) {
414
- var old_show = proto.show;
415
- var old_build = proto.build;
416
- var old_event = proto.connectEvents;
417
-
418
- return {
419
- // highjacking a roadtrip content
420
- show: function(content) {
421
- this.roadLink = (content && content.roadtrip) ? content : null;
422
- return old_show.apply(this, arguments);
423
- },
424
-
425
- // the building process overlaping
426
- build: function() {
427
- var res = old_build.apply(this, arguments);
428
-
429
- this.prevLink = this.E('lightbox-prev-link', this.dialog).onClick(this.showPrev.bind(this))
430
- .update(Lightbox.i18n.PrevText).set('title', Lightbox.i18n.PrevTitle).hide();
431
- this.nextLink = this.E('lightbox-next-link', this.dialog).onClick(this.showNext.bind(this))
432
- .update(Lightbox.i18n.NextText).set('title', Lightbox.i18n.NextTitle).hide();
433
-
434
- return res;
435
- },
436
-
437
- // connecting the left/right arrow buttons
438
- connectEvents: function() {
439
- var res = old_event.apply(this, arguments);
440
-
441
- document.onKeydown(function(event) {
442
- if (event.keyCode == 37) { event.stop(); this.showPrev(); }
443
- if (event.keyCode == 39) { event.stop(); this.showNext(); }
444
- }.bind(this));
445
-
446
- return res;
447
- },
448
-
449
- // tries to show the previous item on the roadtrip
450
- showPrev: function() {
451
- if (this.hasPrev() && this.element.visible() && !this.loading) {
452
- this.show(this.roadLink.roadtrip[this.roadLink.roadtrip.indexOf(this.roadLink) - 1]);
453
- }
454
- return this;
455
- },
456
-
457
- // tries to show the next item on the roadtrip
458
- showNext: function() {
459
- if (this.hasNext() && this.element.visible() && !this.loading) {
460
- this.show(this.roadLink.roadtrip[this.roadLink.roadtrip.indexOf(this.roadLink) + 1]);
461
- }
462
- return this;
463
- },
464
-
465
- // checks the roadtrip state and shows/hides the next/prev links
466
- checkRoadtrip: function() {
467
- this.prevLink[this.hasPrev() ? 'show' : 'hide']();
468
- this.nextLink[this.hasNext() ? 'show' : 'hide']();
469
- return this;
470
- },
471
-
472
- // checks if there is a previous image link
473
- hasPrev: function() {
474
- return this.roadLink && this.roadLink.roadtrip && this.roadLink.roadtrip.first() != this.roadLink;
475
- },
476
-
477
- // checks if there is a next image link
478
- hasNext: function() {
479
- return this.roadLink && this.roadLink.roadtrip && this.roadLink.roadtrip.last() != this.roadLink;
480
- },
481
-
482
- // updates the roadtrip links list
483
- checkTheRoad: function(link) {
484
- if (isElement(link)) {
485
- var rule = this.options.cssRule.split('[').last(),
486
- value = link.get(rule.split('^=').first()) || '',
487
- match = value.match(/\[(.+?)\]/);
488
-
489
- if (match) {
490
- var marker = rule.split('^=').last().split(']').first();
491
- link.roadtrip = $$(this.options.cssRule.replace(marker, "'"+marker+"["+match[1]+"]'"));
492
- }
493
- }
494
- this.roadLink = link;
495
-
496
- return this;
497
- }
498
- };
499
- })(Lightbox.prototype));
500
-
501
- /**
502
- * The images displaying functionality module
503
- *
504
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
505
- */
506
- Lightbox.include((function() {
507
- var old_show = Lightbox.prototype.show;
508
-
509
- return {
510
- IMAGE_FORMATS: $w('jpg jpeg gif png bmp'),
511
-
512
- // hightjacking the links to images and image elements
513
- show: function(content) {
514
- // adjusting the element class-name
515
- this.element[(content && (content.tagName == 'IMG' || this.isImageUrl(content.href))) ?
516
- 'addClass' : 'removeClass']('lightbox-image');
517
-
518
- if (content && content.href && this.isImageUrl(content.href)) {
519
- return this.showingSelf(function() {
520
- this.checkTheRoad(content).loadLock();
521
-
522
- // using the iframed request to make the browser cache work
523
- var image = new Image();
524
- image.onload = this.updateImage.bind(this, image, content);
525
- image.src = content.href;
526
-
527
- }.bind(this));
528
- } else {
529
- return old_show.apply(this, arguments);
530
- }
531
- },
532
-
533
- // protected
534
-
535
- // inserts the image
536
- updateImage: function(image, link) {
537
- this.content.update(image);
538
- this.checkRoadtrip().setTitle(link.title).resize();
539
- },
540
-
541
- // checks if the given url is an url to an image
542
- isImageUrl: function(url) {
543
- return this.IMAGE_FORMATS.include(String(url).toLowerCase().split('?').first().split('.').last());
544
- }
545
- };
546
- })());
547
-
548
- /**
549
- * This module handles media-links, like youtube, vimeo etc.
550
- *
551
- * Copyright (C) 2010 Nikolay V. Nemshilov
552
- */
553
- Lightbox.include((function(proto) {
554
- var old_show = proto.show;
555
-
556
- var media_types = {
557
- swf: [
558
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',
559
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
560
- 'application/x-shockwave-flash'
561
- ]
562
- };
563
-
564
- // builds the actual embedded tag
565
- function build_embedded(addr, type) {
566
- var sizes = ' width="'+ this.options.mediaWidth + '" height="'+ this.options.mediaHeight + '"';
567
-
568
- return '<object classid="clsid:' + media_types[type][0] +
569
- '" codebase="' + media_types[type][1] + '"'+ sizes + '>' +
570
- '<param name="src" value="'+addr+'" />'+
571
- '<embed src="'+ addr +'" type="'+ media_types[type][2]+'"'+ sizes + ' />' +
572
- '</object>';
573
- };
574
-
575
- // checks and builds an embedded object content if necessary
576
- function build_media_content(link) {
577
- if (isElement(link) && link.href) {
578
- var addr = link.href;
579
-
580
- return Lightbox.Medias.map(function(desc) {
581
- return addr.match(desc[0]) ? build_embedded.call(this, addr.replace(desc[0], desc[1]), desc[2]) : null;
582
- }, this).compact()[0];
583
- }
584
- }
585
-
586
- return {
587
-
588
- // stubbs the show method to hijack the media links
589
- show: function(link) {
590
- var media_content = build_media_content.call(this, link);
591
-
592
- this.element[media_content ? 'addClass' : 'removeClass']('lightbox-media');
593
-
594
- if (media_content) {
595
- this.content.update(media_content);
596
- return this.showingSelf(function() {
597
- this
598
- .checkTheRoad(link)
599
- .setTitle(link.title);
600
-
601
- }.bind(this));
602
- }
603
-
604
- return old_show.apply(this, arguments);
605
- }
606
-
607
- }})(Lightbox.prototype));
608
-
609
- /**
610
- * The class level interface
611
- *
612
- * @copyright (C) 2009 Nikolay V. Nemshilov
613
- */
614
- Lightbox.extend({
615
- hide: function() {
616
- this.boxes.each('hide');
617
- },
618
-
619
- show: function() {
620
- return this.inst('show', arguments);
621
- },
622
-
623
- load: function() {
624
- return this.inst('load', arguments);
625
- },
626
-
627
- // private
628
-
629
- inst: function(name, args) {
630
- var inst = new Lightbox();
631
- return inst[name].apply(inst, args);
632
- }
633
- });
634
-
635
- /**
636
- * document on-load rescan
637
- *
638
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
639
- */
640
- $(document.documentElement).onClick(function(event) {
641
- var target = $(event.target);
642
- var suspects = [target].concat(target.parents());
643
-
644
- // we chop off the HTML and BODY element from the end of the list
645
- var link = suspects.slice(0, suspects.length-2).first('match', Lightbox.Options.cssRule);
646
-
647
- if (link) {
648
- event.stop();
649
- new Lightbox(eval('('+link.get('data-lightbox-options')+')')).show(link);
650
- }
651
- });document.write("<style type=\"text/css\">div.lightbox{position:fixed;top:0px;left:0px;width:100%;text-align:center;z-index:9999}div.ligthbox div.right-calendar{z-index:99999}div.lightbox div{line-height:normal}div.lightbox-locker{position:absolute;top:0px;left:0px;width:100%;height:100%;background-color:#000;opacity:0.84;filter:alpha(opacity=84)}div.lightbox-dialog{display:inline-block;*display:inline;*zoom:1;position:relative;text-align:left;padding-bottom:1.6em}div.lightbox-body-wrap{background-color:white;padding:1em;border-radius:.6em;-moz-border-radius:.6em;-webkit-border-radius:.6em}div.lightbox-body{position:relative;height:10em;width:10em;min-height:10em;min-width:10em;overflow:hidden;*background-color:white}div.lightbox-content{position:absolute;*background-color:white}div.lightbox-body-lock{background-color:white;position:absolute;left:0px;top:0px;width:100%;height:100%;text-align:center}div.lightbox-body-lock-spinner{display:none;position:absolute;bottom:0;right:0}div.lightbox-body-lock-spinner div{float:left;width:.5em;height:.9em;background:#AAA;margin-left:.1em;-moz-border-radius:.15em;-webkit-border-radius:.15em}div.lightbox-body-lock-spinner div.glow{background:#666;height:1em;margin-top:-0.05em}div.lightbox-body-lock-loading div.lightbox-body-lock-spinner{display:inline-block;*display:inline;*zoom:1}div.lightbox-body-lock-transparent{background:none}div.lightbox-caption{height:1.2em;margin:0 .7em;margin-bottom:.1em;white-space:nowrap;color:#DDD;font-weight:bold;font-size:1.6em;font-family:Helvetica}div.lightbox-close-button,div.lightbox-prev-link,div.lightbox-next-link{position:absolute;bottom:0;color:#888;cursor:pointer;font-size:150%;font-weight:bold;font-family:Arial}div.lightbox-close-button:hover,div.lightbox-prev-link:hover,div.lightbox-next-link:hover{color:white}div.lightbox-close-button{right:.5em}div.lightbox-prev-link,div.lightbox-next-link{padding:0 .2em;bottom:2px}div.lightbox-prev-link{left:.2em}div.lightbox-next-link{left:2em}div.lightbox-image div.lightbox-body-wrap,div.lightbox-media div.lightbox-body-wrap{padding:0;border:1px solid #777;border-radius:0px;-moz-border-radius:0px;-webkit-border-radius:0px}div.lightbox-image div.lightbox-content img{vertical-align:middle}div.lightbox-image div.lightbox-caption,div.lightbox-media div.lightbox-caption{margin-left:.2em}div.lightbox-image div.lightbox-body-wrap,div.lightbox-image div.lightbox-body-lock,div.lightbox-media div.lightbox-body-wrap,div.lightbox-media div.lightbox-body-lock{background-color:#DDD}div.lightbox-image div.lightbox-body-lock-spinner{bottom:1em;right:1em}div.lightbox-image div.lightbox-close-button{right:.2em}div.lightbox-image div.lightbox-prev-link{left:0}</style>");
@@ -1,9 +0,0 @@
1
- /**
2
- * The lightbox widget implemented with RightJS
3
- *
4
- * Home page: http://rightjs.org/ui/lightbox
5
- *
6
- * Copyright (C) 2009-2010 Nikolay V. Nemshilov
7
- */
8
- if (!RightJS) { throw "Gimme RightJS please." };
9
- 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})("92.IE6=navigator.userAgent.148(\"MSIE 6\")!=-1;22 21=172 Class({83:144,extend:{Version:\"#{version}\",144:{endOpacity:0.8,68:200,49OnEsc:125,49OnOutClick:125,38Close186:125,b33Content:140,113:\"a[rel^=14]\",115Width:425,115185:350},107:{162:'&times;',156:'Close',188Text:'&161;&161;&161;',163:'188ious Image',183Text:'&159;&159;&159;',168:'183 Image'},Medias:[[/(175:\\/\\/.*?youtube\\.[a-z]+)\\/watch\\?v=([^&]+)/,'$1/v/$2','154'],[/(175:\\/\\/video.google.com)\\/videoplay\\?docid=([^&]+)/,'$1/googleplayer.154?docId=$2','154'],[/(175:\\/\\/vimeo\\.[a-z]+)\\/([0-9]+).*?/,'$1/moogaloop.154?clip_id=$2','154']],145:[],rescan:16(){}},initialize:16(o){13.set144(o).105().62();21.145.push(13)},94:16(t){(16(){13.78.60(t)}).36(13).delay(13.32.68);17 13},49:16(){13.26.49('fade',{132:13.32.68/2,onFinish:13.26.remove.36(13.26)});17 13},38:16(c,s){17 13.38ing184(16(){13.33();13.31.60(c||'');13.63(s)}.36(13))},63:16(s,n){13.29.69.86=(126.52().y-13.29.52().y)/2+'px';22 a=13.31Size(s);22 h=13.29.52().y-13.24.52().y;22 b=a.41.80()||13.130();22 d={86:(13.26.52().y-b-h)/2+'px'};if(92.IE6){22 p=13.24187.getStyle('75').80()>0?15:0;13.24187.71('75: '+p+'px');d.48=(a.48.80()+p*2)+'px'}if(n===125){13.24.71(a);13.29.71(d);13.56=140}167 13.63Fx(a,d);17 13},33:16(){13.24182.79('14-24-33-95').79('14-24-33-56').38();if(92.OLD)13.24182.71(\"153: 1\");17 13},un33:16(){if(13.32.b33Content)13.24182.97('14-24-33-95');167 13.24182.49();17 13},63182:16(){13.33().31.49()},63Un33:16(){13.un33().31.38('fade',{132:13.32.68/2});13.56=140},31Size:16(s){22 s=s===13.$listeners?171:s,a=13.26.offsetWidth*0.8,m=13.26.offset185*0.8;if(s)13.31.71(s);s=13.31.52();17{48:(s.x>a?a:s.x)+\"px\",41:(s.y>m?m:s.y)+\"px\"}},120:16(r){13.26.63(126.52());if(92.IE6){13.33er.63(126.52());13.26.69.43='57';13.26.69.86=51.51Element.scrollTop+'px'}17 13.63(140,125)},38ing184:16(c){21.145.without(13).each('49');if(13.26.hidden()){13.26.85(51.24).38();13.120()}c();17 13},105:16(){13.26=13.E('14').71('82: 173');13.33er=13.E('14-33er',13.26);13.29=13.E('14-29',13.26);13.78=13.E('14-78',13.29);13.24187=13.E('14-24-121',13.29);13.24=13.E('14-24',13.24187);13.31=13.E('14-31',13.24);13.24182=13.E('14-24-33',13.24).49();if(13.32.38Close186)13.119186=13.E('14-119-109',13.29).91(13.49.36(13)).60(21.107.162).set('98',21.107.156);if(13.32.49OnOutClick)13.33er.91(13.49.36(13));51.on('mousewheel',16(a){if(13.26.139()){a.s86();13[(a.detail||-a.wheelDelta)<0?'38188':'38183']()}}.36(13));17 13},62:16(){if(13.32.49OnEsc)51.174(16(e){if(e.152==27){e.s86();13.49()}}.36AsEventListener(13));126.on('63',13.120.36(13));17 13},130:16(){22 e=$E('19',{'class':'14-24',69:'30: 173; 43: 57'}).85(51.24),h=e.52().y;e.remove();17 h},63Fx:16(f,k){13.63182();22 e=13.24.52().x;22 a=f.48.80();22 c=13.24.52().y;22 b=f.41.80();22 i=13.29.69.86.80();22 g=k.86.80();22 j=13.29.52().x;22 h=(k.48||'0').80();22 f=13.24.69;22 k=13.29.69;$ext(172 Fx(13.29,{132:13.32.68}),{render:16(d){f.48=(e+(a-e)*d)+'px';f.41=(c+(b-c)*d)+'px';k.86=(i+(g-i)*d)+'px';if(92.IE6)k.48=(j+(h-j)*d)+'px'}}).onFinish(13.63Un33.36(13)).start()},E:16(k,p){22 e=$E('19',{'class':k});if(p)e.85(p);17 e}});21.83((16(p){22 f=p.38;22 e=p.105;17{38:16(c){if(c&&c.90)17 13.138(c.90,{65:16(r){13.73(c).94(c.98).31.60(r.134)}.36(13)});167 17 f.76(13,46)},138:16(u,o){22 o=o||{};$w('179 65').each(16(n){o[n]=o[n]?isArray(o[n])?o[n]:[o[n]]:[]});if(o.65.empty()&&!o.onSuccess)o.65.push(16(r){13.31.60(r.134)}.36(13));o.179.unshift(13.131.36(13));o.65.push(13.63.36(13));o.method=o.method||'get';17 13.38ing184(Xhr.138.36(Xhr,u,o))},131:16(){13.56=125;13.33().24182.97('14-24-33-56');17 13},105:16(){22 r=e.76(13,46);22 s=13.E('14-24-33-81',13.24182);22 b='1234'.87('').map(16(a){17 $E('19',{'class':a==1?'glow':171}).85(s)});(16(){22 d=b.pop();d.85(s,'86');b.unshift(d)}).periodical(400);17 r}}})(21.93));21.83((16(p){22 d=p.38;22 o=p.105;22 b=p.62;17{38:16(c){13.28=(c&&c.47)?c:171;17 d.76(13,46)},105:16(){22 r=o.76(13,46);13.117189=13.E('14-117-67',13.29).91(13.38188.36(13)).60(21.107.188Text).set('98',21.107.163).49();13.136189=13.E('14-136-67',13.29).91(13.38183.36(13)).60(21.107.183Text).set('98',21.107.168).49();17 r},62:16(){22 r=b.76(13,46);51.174(16(e){if(e.152==37){e.s86();13.38188()}if(e.152==39){e.s86();13.38183()}}.36(13));17 r},38188:16(){if(13.142()&&13.26.139()&&!13.56)13.38(13.28.47[13.28.47.148(13.28)-1]);17 13},38183:16(){if(13.141()&&13.26.139()&&!13.56)13.38(13.28.47[13.28.47.148(13.28)+1]);17 13},128:16(){13.117189[13.142()?'38':'49']();13.136189[13.141()?'38':'49']();17 13},142:16(){17 13.28&&13.28.47&&13.28.47.116()!=13.28},141:16(){17 13.28&&13.28.47&&13.28.47.165()!=13.28},73:16(l){if(177(l)){22 r=13.32.113.87('[').165(),v=l.get(r.87('^=').116())||'',a=v.match(/\\[(.+?)\\]/);if(a){22 m=r.87('^=').165().87(']').116();l.47=$$(13.32.113.replace(m,\"'\"+m+\"[\"+a[1]+\"]'\"))}}13.28=l;17 13}}})(21.93));21.83((16(){22 o=21.93.38;17{127:$w('jpg jpeg gif png bmp'),38:16(c){13.26[(c&&(c.tagName=='IMG'||13.111(c.90)))?'97':'79']('14-72');if(c&&c.90&&13.111(c.90))17 13.38ing184(16(){13.73(c).131();22 i=172 Image();i.on138=13.60Image.36(13,i,c);i.src=c.90}.36(13));167 17 o.76(13,46)},60Image:16(i,l){13.31.60(i);13.128().94(l.98).63()},111:16(u){17 13.127.83(String(u).toLowerCase().87('?').116().87('.').165())}}})());21.83((16(p){22 o=p.38;22 e={154:['D27CDB6E-AE6D-11cf-96B8-444553540000','175://down138.macro115.com/pub/164/cabs/flash/154lash.cab#version=6,0,40,0','application/x-164-flash']};16 b(a,t){22 s=' 48=\"'+13.32.115Width+'\" 41=\"'+13.32.115185+'\"';17 '<object classid=\"clsid:'+e[t][0]+'\" codebase=\"'+e[t][1]+'\"'+s+'>'+'<param name=\"src\" value=\"'+a+'\" />'+'<embed src=\"'+a+'\" type=\"'+e[t][2]+'\"'+s+' />'+'</object>'};16 c(l){if(177(l)&&l.90){22 a=l.90;17 21.Medias.map(16(d){17 a.match(d[0])?b.call(13,a.replace(d[0],d[1]),d[2]):171},13).compact()[0]}}17{38:16(l){22 m=c.call(13,l);13.26[m?'97':'79']('14-115');if(m){13.31.60(m);17 13.38ing184(16(){13.73(l).94(l.98)}.36(13))}17 o.76(13,46)}}})(21.93));21.extend({49:16(){13.145.each('49')},38:16(){17 13.inst('38',46)},138:16(){17 13.inst('138',46)},inst:16(n,a){22 i=172 21();17 i[n].76(i,a)}});$(51.51Element).91(16(e){22 t=$(e.target);22 s=[t].concat(t.parents());22 l=s.slice(0,s.length-2).116('match',21.144.113);if(l){e.s86();172 21(eval('('+l.get('data-14-32')+')')).38(l)}});51.write(\"<69 type=\\\"176/css\\\">19.14{43:fixed;86:104;74:104;48:170%;176-155:center;z-index:9999}19.ligthbox 19.124-calendar{z-index:99999}19.14 19{line-41:normal}19.14-33er{43:57;86:104;74:104;48:170%;41:170%;30-70:#000;153:0.84;filter:alpha(153=84)}19.14-29{82:129-b33;*82:129;*zoom:1;43:relative;176-155:74;75-89:1.178}19.14-24-121{30-70:102;75:147;59-64:.178;-moz-59-64:.178;-160-59-64:.178}19.14-24{43:relative;41:166;48:166;min-41:166;min-48:166;overflow:hidden;*30-70:102}19.14-31{43:57;*30-70:102}19.14-24-33{30-70:102;43:57;74:104;86:104;48:170%;41:170%;176-155:center}19.14-24-33-81{82:173;43:57;89:0;124:0}19.14-24-33-81 19{float:74;48:.5em;41:.9em;30:#AAA;108-74:.147;-moz-59-64:.15em;-160-59-64:.15em}19.14-24-33-81 19.glow{30:#666;41:147;108-86:-0.05em}19.14-24-33-56 19.14-24-33-81{82:129-b33;*82:129;*zoom:1}19.14-24-33-95{30:173}19.14-78{41:1.146;108:0 .7em;108-89:.147;102-space:no121;70:#DDD;118-weight:bold;118-size:1.178;118-family:Helvetica}19.14-119-109,19.14-117-67,19.14-136-67{43:57;89:0;70:#888;cursor:pointer;118-size:150%;118-weight:bold;118-family:Arial}19.14-119-109:hover,19.14-117-67:hover,19.14-136-67:hover{70:102}19.14-119-109{124:.5em}19.14-117-67,19.14-136-67{75:0 .146;89:2px}19.14-117-67{74:.146}19.14-136-67{74:146}19.14-72 19.14-24-121,19.14-115 19.14-24-121{75:0;59:1px solid #777;59-64:104;-moz-59-64:104;-160-59-64:104}19.14-72 19.14-31 img{vertical-155:middle}19.14-72 19.14-78,19.14-115 19.14-78{108-74:.146}19.14-72 19.14-24-121,19.14-72 19.14-24-33,19.14-115 19.14-24-121,19.14-115 19.14-24-33{30-70:#DDD}19.14-72 19.14-24-33-81{89:147;124:147}19.14-72 19.14-119-109{124:.146}19.14-72 19.14-117-67{74:0}</69>\");",",,,,,,,,,,,,,this,lightbox,,function,return,,div,,Lightbox,var,,body,,element,,roadLink,dialog,background,content,options,lock,,,bind,,show,,,height,,position,,,arguments,roadtrip,width,hide,,document,sizes,,,,loading,absolute,bodyLock,border,update,showingSelf,connectEvents,resize,radius,onComplete,,link,fxDuration,style,color,setStyle,image,checkTheRoad,left,padding,apply,,caption,removeClass,toInt,spinner,display,include,,insertTo,top,split,,bottom,href,onClick,Browser,prototype,setTitle,transparent,,addClass,title,,,showPrev,white,showNext,0px,build,bodyWrap,i18n,margin,button,locker,isImageUrl,documentElement,cssRule,showCloseButton,media,first,prev,font,close,boxResize,wrap,hideOnOutClick,,right,true,window,IMAGE_FORMATS,checkRoadtrip,inline,minBodyHeight,loadLock,duration,resizeUnlock,responseText,blockContent,next,stop,load,visible,false,hasNext,hasPrev,contentSize,Options,boxes,2em,1em,indexOf,updateImage,,mediaHeight,keyCode,opacity,swf,align,CloseTitle,mediaWidth,resizeLock,rsaquo,webkit,lsaquo,CloseText,PrevTitle,shockwave,last,10em,else,NextTitle,hideOnEsc,100,null,new,none,onKeydown,http,text,isElement,6em,onCreate,resizeFx,nextLink,Lock,Next,Self,Height,Button,Wrap,Prev,Link".split(",")));