right-rails 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/CHANGELOG +8 -2
  2. data/Rakefile +28 -28
  3. data/lib/right_rails/java_script_generator.rb +59 -51
  4. data/public/images/{colorpicker.png → rightjs-ui/colorpicker.png} +0 -0
  5. data/public/images/{resizable.png → rightjs-ui/resizable.png} +0 -0
  6. data/public/javascripts/right-olds-src.js +47 -46
  7. data/public/javascripts/right-safe-src.js +103 -102
  8. data/public/javascripts/right-safe.js +1 -1
  9. data/public/javascripts/right-src.js +611 -541
  10. data/public/javascripts/right.js +86 -85
  11. data/public/javascripts/right/autocompleter-src.js +81 -77
  12. data/public/javascripts/right/autocompleter.js +1 -1
  13. data/public/javascripts/right/calendar-src.js +209 -197
  14. data/public/javascripts/right/calendar.js +6 -6
  15. data/public/javascripts/right/colorpicker-src.js +127 -117
  16. data/public/javascripts/right/colorpicker.js +6 -6
  17. data/public/javascripts/right/dnd-src.js +63 -63
  18. data/public/javascripts/right/dnd.js +2 -2
  19. data/public/javascripts/right/in-edit-src.js +53 -48
  20. data/public/javascripts/right/in-edit.js +2 -2
  21. data/public/javascripts/right/lightbox-src.js +107 -99
  22. data/public/javascripts/right/lightbox.js +2 -2
  23. data/public/javascripts/right/rater-src.js +48 -46
  24. data/public/javascripts/right/rater.js +3 -3
  25. data/public/javascripts/right/resizable-src.js +53 -61
  26. data/public/javascripts/right/resizable.js +4 -4
  27. data/public/javascripts/right/selectable-src.js +97 -95
  28. data/public/javascripts/right/selectable.js +2 -2
  29. data/public/javascripts/right/slider-src.js +47 -45
  30. data/public/javascripts/right/slider.js +8 -8
  31. data/public/javascripts/right/sortable-src.js +54 -52
  32. data/public/javascripts/right/tabs-src.js +181 -171
  33. data/public/javascripts/right/tooltip-src.js +39 -37
  34. data/public/javascripts/right/uploader-src.js +21 -19
  35. data/spec/lib/right_rails/java_script_generator_spec.rb +61 -56
  36. metadata +9 -7
@@ -6,7 +6,7 @@
6
6
  */
7
7
  var Lightbox=RightJS.Lightbox=function(p,d){var q=d.$,r=d.$$,u=d.$w,h=d.$E,v=d.$ext,w=d.Xhr,x=d.Class,y=d.Object,s=d.Wrapper,j=d.Element,i=d.Browser;i.IE6=i.OLD&&navigator.userAgent.indexOf("MSIE 6")>0;var z=new d.Wrapper(d.Element,{initialize:function(a){this.$super("div",{"class":"rui-spinner"});this.dots=[];for(var b=0;b<(a||4);b++)this.dots.push(new d.Element("div"));this.dots[0].addClass("glowing");this.insert(this.dots);d(this.shift).bind(this).periodical(300)},shift:function(){if(this.visible()){var a=
8
8
  this.dots.pop();this.dots.unshift(a);this.insert(a,"top")}}}),f=new (function(a,b){if(!b){b=a;a="DIV"}var c=new d.Wrapper(d.Element.Wrappers[a]||d.Element,{initialize:function(e,g){this.key=e;var k=[{"class":"rui-"+e}];this instanceof d.Input||this instanceof d.Form||k.unshift(a);this.$super.apply(this,k);if(d.isString(g))g=d.$(g);if(g instanceof d.Element){this._=g._;if("$listeners"in g)g.$listeners=g.$listeners;g={}}this.setOptions(g,this);return this},setOptions:function(e,g){g=g||this;d.Options.setOptions.call(this,
9
- d.Object.merge(e,eval("("+(g.get("data-"+this.key)||"{}")+")")));return this}});c=new d.Wrapper(c,b);d.Observer.createShortcuts(c.prototype,c.EVENTS||[]);return c})({extend:{version:"2.0.0",EVENTS:u("show hide load"),Options:{fxName:"fade",fxDuration:100,group:null,hideOnEsc:true,hideOnOutClick:true,showCloseButton:true,cssRule:"a[data-lightbox]",mediaWidth:425,mediaHeight:350},i18n:{Close:"Close",Prev:"Previous Image",Next:"Next Image"},Images:/\.(jpg|jpeg|gif|png|bmp)/,Medias:[[/(http:\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)/,
9
+ d.Object.merge(e,eval("("+(g.get("data-"+this.key)||"{}")+")")));return this}});c=new d.Wrapper(c,b);d.Observer.createShortcuts(c.prototype,c.EVENTS||[]);return c})({extend:{version:"2.0.0",EVENTS:u("show hide load"),Options:{fxName:"fade",fxDuration:200,group:null,hideOnEsc:true,hideOnOutClick:true,showCloseButton:true,cssRule:"a[data-lightbox]",mediaWidth:425,mediaHeight:350},i18n:{Close:"Close",Prev:"Previous Image",Next:"Next Image"},Images:/\.(jpg|jpeg|gif|png|bmp)/,Medias:[[/(http:\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)/,
10
10
  "$1/v/$2","swf"],[/(http:\/\/video.google.com)\/videoplay\?docid=([^&]+)/,"$1/googleplayer.swf?docId=$2","swf"],[/(http:\/\/vimeo\.[a-z]+)\/([0-9]+).*?/,"$1/moogaloop.swf?clip_id=$2","swf"]]},initialize:function(a,b){this.$super("lightbox",{}).setOptions(a,b).insert([this.locker=new A(this.options),this.dialog=new B(this.options)]).on({close:this._close,next:this._next,prev:this._prev})},setOptions:function(a,b){this.$super(a,b);if(b){var c=b.get("rel");if(c&&(c=c.match(/lightbox\[(.+?)\]/)))this.options.group=
11
11
  c[1]}return this},setTitle:function(a){this.dialog.setTitle(a);return this},show:function(a){return this._showAnd(function(){this.dialog.show(a,!a)})},hide:function(){f.current=null;return this.$super(this.options.fxName,{duration:this.options.fxDuration/3,onFinish:d(function(){this.fire("hide");this.remove()}).bind(this)})},load:function(a,b){return this._showAnd(function(){this.dialog.load(a,b)})},resize:function(a){this.dialog.resize(a);return this},_close:function(a){a.stop();this.hide()},_prev:function(a){a.stop();
12
12
  l.prev()},_next:function(a){a.stop();l.next()},_showAnd:function(a){if(f.current!==this){f.current=this;r("div.rui-lightbox").each("remove");this.insertTo(p.body);this.dialog.show("",true);if(i.OLD){this.reposition();j.prototype.show.call(this);a.call(this)}else{this.setStyle("display:none");j.prototype.show.call(this,this.options.fxName,{duration:this.options.fxDuration/2,onFinish:d(function(){a.call(this);this.fire("show")}).bind(this)})}}else a.call(this);return this},reposition:function(){if(i.IE6){var a=
@@ -20,5 +20,5 @@ this.img=h("img")._;c.onload=function(){b(c)};c.src=a;return true}},isMedia:func
20
20
  '" height="'+e.mediaHeight+'"';return'<object classid="clsid:'+c[b][0]+'" codebase="'+c[b][1]+'"'+e+'><param name="src" value="'+a+'" /><embed src="'+a+'" type="'+c[b][2]+'"'+e+" /></object>"}}),l={show:function(a,b){if(a.options.group){this.dialog=a;this.links=this.find(a.options.group);this.link=this.links.first(function(g){return g.get("href")===b});var c=this.links.indexOf(this.link),e=this.links.length;a.prevLink[e&&c>0?"show":"hide"]();a.nextLink[e&&c<e-1?"show":"hide"]()}else this.dialog=null},
21
21
  prev:function(){if(this.dialog&&!this.timer){var a=this.links[this.links.indexOf(this.link)-1];if(a){this.dialog.load(a);this.timeout()}}},next:function(){if(this.dialog&&!this.timer){var a=this.links[this.links.indexOf(this.link)+1];if(a){this.dialog.load(a);this.timeout()}}},find:function(a){return r("a").filter(function(b){var c=b.get("data-lightbox");b=b.get("rel");return c&&eval("("+c+")").group===a||b&&b.indexOf("lightbox["+a+"]")>-1})},timeout:function(){this.timer=d(function(){l.timer=null}).delay(300)}};
22
22
  q(p).on({click:function(a){var b=a.find(f.Options.cssRule)||a.find("a[rel^=lightbox]");if(b){a.stop();(new f({},b)).load(b)}},mousewheel:function(a){if(f.current){a.stop();f.current.fire((a._.detail||-a._.wheelDelta)<0?"prev":"next")}},keydown:function(a){var b=f.current,c={27:"close",33:"prev",37:"prev",38:"prev",39:"next",40:"next",34:"next"}[a.keyCode];if(b&&c)if(c!=="close"||b.options.hideOnEsc){a.stop();b.fire(c)}}});q(window).on({resize:function(){if(f.current){f.current.reposition();f.current.dialog.resize()}},
23
- scroll:function(){f.current&&i.IE6&&f.current.reposition()}});p.write('<style type="text/css">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-lightbox{position:fixed;top:0;left:0;z-index:9999;float:none;width:100%;height:100%;margin:0;padding:0;background:none;border:none;text-align:center}div.rui-lightbox-locker{position:absolute;top:0px;left:0px;width:100%;height:100%;background-color:#000;opacity:0.8;filter:alpha(opacity=80);cursor:default}div.rui-lightbox-dialog{display:inline-block; *display:inline; *zoom:1;position:relative;text-align:left}div.rui-lightbox-title{height:1.2em;margin-bottom:.1em;white-space:nowrap;color:#DDD;font-weight:bold;font-size:1.6em;font-family:Helvetica;text-shadow:#000 .05em .1em .2em}div.rui-lightbox-body{background-color:white;padding:1em;border-radius:.5em;-moz-border-radius:.5em;-webkit-border-radius:.5em;box-shadow:#000 .1em .2em 1.5em;-moz-box-shadow:#000 .1em .2em 1.5em;-webkit-box-shadow:#000 .1em .2em 1.5em}div.rui-lightbox-body-inner{position:relative}div.rui-lightbox-scroller{overflow:hidden}div.rui-lightbox-content{display:inline-block; *display:inline; *zoom:1;min-height:10em;min-width:10em;_height:10em;_width:10em}div.rui-lightbox-body-locker{background-color:white;position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:999;opacity:0;filter:alpha(opacity=0)}div.rui-lightbox-body-locker div.rui-spinner{position:absolute;right:0;bottom:0;border:none;background:none;font-size:150%}div.rui-lightbox-navigation{color:#888;font-size:150%;font-family:Arial;height:1em;user-select:none;-moz-user-select:none;-webkit-user-select:none}div.rui-lightbox-navigation div{cursor:pointer;position:absolute}div.rui-lightbox-navigation div:hover{color:white}div.rui-lightbox-navigation div.next{left:2em}div.rui-lightbox-navigation div.close{right:0}div.rui-lightbox-image div.rui-lightbox-body,div.rui-lightbox-media div.rui-lightbox-body{padding:0;border:1px solid #777;border-radius:0px;-moz-border-radius:0px;-webkit-border-radius:0px}div.rui-lightbox-image div.rui-lightbox-content,div.rui-lightbox-media div.rui-lightbox-content{min-height:12em;min-width:12em;_height:12em;_width:12em}div.rui-lightbox-image div.rui-lightbox-content img{vertical-align:middle}div.rui-lightbox-image div.rui-lightbox-body,div.rui-lightbox-image div.rui-lightbox-body-locker,div.rui-lightbox-media div.rui-lightbox-body,div.rui-lightbox-media div.rui-lightbox-body-locker{background-color:#DDD}div.rui-lightbox-image div.rui-lightbox-body-locker div.rui-spinner,div.rui-lightbox-media div.rui-lightbox-body-locker div.rui-spinner{bottom:.5em;right:.5em}</style>');
23
+ scroll:function(){f.current&&i.IE6&&f.current.reposition()}});p.write('<style type="text/css">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-lightbox{position:fixed;top:0;left:0;z-index:9999;float:none;width:100%;height:100%;margin:0;padding:0;background:none;border:none;text-align:center}div.rui-lightbox-locker{position:absolute;top:0px;left:0px;width:100%;height:100%;background-color:#000;opacity:0.8;filter:alpha(opacity=80);cursor:default}div.rui-lightbox-dialog{display:inline-block; *display:inline; *zoom:1;position:relative;text-align:left}div.rui-lightbox-title{height:1.2em;margin-bottom:.1em;white-space:nowrap;color:#DDD;font-weight:bold;font-size:1.6em;font-family:Helvetica;text-shadow:#000 .05em .1em .2em}div.rui-lightbox-body{background-color:white;padding:1em;border-radius:.5em;-moz-border-radius:.5em;-webkit-border-radius:.5em}div.rui-lightbox-body-inner{position:relative}div.rui-lightbox-scroller{overflow:hidden}div.rui-lightbox-content{display:inline-block; *display:inline; *zoom:1;min-height:10em;min-width:10em;_height:10em;_width:10em}div.rui-lightbox-body-locker{background-color:white;position:absolute;left:0px;top:0px;width:100%;height:100%;z-index:999;opacity:0;filter:alpha(opacity=0)}div.rui-lightbox-body-locker div.rui-spinner{position:absolute;right:0;bottom:0;border:none;background:none;font-size:150%}div.rui-lightbox-navigation{color:#888;font-size:150%;font-family:Arial;height:1em;user-select:none;-moz-user-select:none;-webkit-user-select:none}div.rui-lightbox-navigation div{cursor:pointer;position:absolute}div.rui-lightbox-navigation div:hover{color:white}div.rui-lightbox-navigation div.next{left:2em}div.rui-lightbox-navigation div.close{right:0}div.rui-lightbox-image div.rui-lightbox-body,div.rui-lightbox-media div.rui-lightbox-body{padding:0;border:1px solid #777;border-radius:0px;-moz-border-radius:0px;-webkit-border-radius:0px}div.rui-lightbox-image div.rui-lightbox-content,div.rui-lightbox-media div.rui-lightbox-content{min-height:12em;min-width:12em;_height:12em;_width:12em}div.rui-lightbox-image div.rui-lightbox-content img{vertical-align:middle}div.rui-lightbox-image div.rui-lightbox-body,div.rui-lightbox-image div.rui-lightbox-body-locker,div.rui-lightbox-media div.rui-lightbox-body,div.rui-lightbox-media div.rui-lightbox-body-locker{background-color:#D8D8D8}div.rui-lightbox-image div.rui-lightbox-body-locker div.rui-spinner,div.rui-lightbox-media div.rui-lightbox-body-locker div.rui-spinner{bottom:.5em;right:.5em}</style>');
24
24
  return f}(document,RightJS);
@@ -36,13 +36,13 @@ var R = RightJS,
36
36
  * @param String tag-name or Object methods
37
37
  * @param Object methods
38
38
  * @return Widget wrapper
39
- */
39
+ */
40
40
  function Widget(tag_name, methods) {
41
41
  if (!methods) {
42
42
  methods = tag_name;
43
43
  tag_name = 'DIV';
44
44
  }
45
-
45
+
46
46
  /**
47
47
  * An Abstract Widget Unit
48
48
  *
@@ -59,17 +59,17 @@ function Widget(tag_name, methods) {
59
59
  initialize: function(key, options) {
60
60
  this.key = key;
61
61
  var args = [{'class': 'rui-' + key}];
62
-
62
+
63
63
  // those two have different constructors
64
64
  if (!(this instanceof RightJS.Input || this instanceof RightJS.Form)) {
65
65
  args.unshift(tag_name);
66
66
  }
67
67
  this.$super.apply(this, args);
68
-
68
+
69
69
  if (RightJS.isString(options)) {
70
70
  options = RightJS.$(options);
71
71
  }
72
-
72
+
73
73
  // if the options is another element then
74
74
  // try to dynamically rewrap it with our widget
75
75
  if (options instanceof RightJS.Element) {
@@ -102,16 +102,16 @@ function Widget(tag_name, methods) {
102
102
  return this;
103
103
  }
104
104
  });
105
-
105
+
106
106
  /**
107
107
  * Creating the actual widget class
108
108
  *
109
109
  */
110
110
  var Klass = new RightJS.Wrapper(AbstractWidget, methods);
111
-
111
+
112
112
  // creating the widget related shortcuts
113
113
  RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
114
-
114
+
115
115
  return Klass;
116
116
  }
117
117
 
@@ -123,7 +123,7 @@ function Widget(tag_name, methods) {
123
123
  * Copyright (C) 2010 Nikolay Nemshilov
124
124
  */
125
125
  var Updater = {
126
-
126
+
127
127
  /**
128
128
  * Assigns the unit to work with an input element
129
129
  *
@@ -136,7 +136,7 @@ var Updater = {
136
136
  element[element.setValue ? 'setValue' : 'update'](event.target.getValue());
137
137
  }
138
138
  }).curry(element);
139
-
139
+
140
140
  var connect = R(function(element, object) {
141
141
  element = $(element);
142
142
  if (element && element.onChange) {
@@ -145,7 +145,7 @@ var Updater = {
145
145
  }).bind(object));
146
146
  }
147
147
  }).curry(element);
148
-
148
+
149
149
  if ($(element)) {
150
150
  assign({target: this});
151
151
  connect(this);
@@ -155,7 +155,7 @@ var Updater = {
155
155
  connect(this);
156
156
  }.bind(this)));
157
157
  }
158
-
158
+
159
159
  return this.onChange(assign);
160
160
  }
161
161
  };
@@ -168,28 +168,28 @@ var Updater = {
168
168
  */
169
169
  var Rater = new Widget({
170
170
  include: Updater,
171
-
171
+
172
172
  extend: {
173
173
  version: '2.0.0',
174
-
174
+
175
175
  EVENTS: $w('change hover send'),
176
-
176
+
177
177
  Options: {
178
178
  html: '&#9733;', // the dot html code
179
-
179
+
180
180
  size: 5, // number of stars in the line
181
181
  value: null, // default value
182
182
  update: null, // an element to update
183
-
183
+
184
184
  disabled: false, // if it should be disabled
185
185
  disableOnVote: false, // if it should be disabled when user clicks a value
186
-
186
+
187
187
  url: null, // an url to send results with AJAX
188
- param: 'rate', // the value param name
188
+ param: 'rate', // the value param name
189
189
  Xhr: null // additional Xhr options
190
190
  }
191
191
  },
192
-
192
+
193
193
  /**
194
194
  * basic constructor
195
195
  *
@@ -204,30 +204,30 @@ var Rater = new Widget({
204
204
  mouseover: this._hovered,
205
205
  mouseout: this._left
206
206
  });
207
-
207
+
208
208
  if (this.empty()) {
209
209
  for (var i=0; i < this.options.size; i++) {
210
210
  this.insert('<div>'+ this.options.html + '</div>');
211
211
  }
212
212
  }
213
-
213
+
214
214
  options = this.options;
215
-
215
+
216
216
  if (options.value === null) {
217
217
  options.value = this.find('.active').length;
218
218
  }
219
-
219
+
220
220
  this.setValue(options.value);
221
-
221
+
222
222
  if (options.disabled) {
223
223
  this.disable();
224
224
  }
225
-
225
+
226
226
  if (options.update) {
227
227
  this.assignTo(options.update);
228
228
  }
229
229
  },
230
-
230
+
231
231
  /**
232
232
  * Sets the element value
233
233
  *
@@ -239,22 +239,22 @@ var Rater = new Widget({
239
239
  // converting the type and rounding the value
240
240
  value = isString(value) ? R(value).toInt() : value;
241
241
  value = isNumber(value) ? R(value).round() : 0;
242
-
242
+
243
243
  // checking constraints
244
244
  value = R(value).max(this.options.size);
245
245
  value = R(value).min(0);
246
-
246
+
247
247
  // highlighting the value
248
248
  this.highlight(value);
249
-
249
+
250
250
  if (this.value != value) {
251
- this.fire('change', this.value = value, this);
251
+ this.fire('change', {value: this.value = value});
252
252
  }
253
253
  }
254
-
254
+
255
255
  return this;
256
256
  },
257
-
257
+
258
258
  /**
259
259
  * Returns the current value of the rater
260
260
  *
@@ -263,7 +263,7 @@ var Rater = new Widget({
263
263
  getValue: function() {
264
264
  return this.value;
265
265
  },
266
-
266
+
267
267
  /**
268
268
  * Sends an Xhr request with the current value to the options.url address
269
269
  *
@@ -273,11 +273,11 @@ var Rater = new Widget({
273
273
  if (this.options.url) {
274
274
  this.request = new Xhr(this.options.url, this.options.Xhr)
275
275
  .send(this.options.param+"="+this.value);
276
- this.fire('send', this.value, this);
276
+ this.fire('send', {value: this.value});
277
277
  }
278
278
  return this;
279
279
  },
280
-
280
+
281
281
  /**
282
282
  * Disables the instance
283
283
  *
@@ -286,7 +286,7 @@ var Rater = new Widget({
286
286
  disable: function() {
287
287
  return this.addClass('rui-rater-disabled');
288
288
  },
289
-
289
+
290
290
  /**
291
291
  * Enables this instance
292
292
  *
@@ -295,7 +295,7 @@ var Rater = new Widget({
295
295
  enable: function() {
296
296
  return this.removeClass('rui-rater-disabled');
297
297
  },
298
-
298
+
299
299
  /**
300
300
  * Checks if the instance is disabled
301
301
  *
@@ -304,7 +304,7 @@ var Rater = new Widget({
304
304
  disabled: function() {
305
305
  return this.hasClass('rui-rater-disabled');
306
306
  },
307
-
307
+
308
308
  // protected
309
309
 
310
310
  // callback for 'hover' event
@@ -312,10 +312,10 @@ var Rater = new Widget({
312
312
  var index = this.children().indexOf(event.target);
313
313
  if (!this.disabled() && index > -1) {
314
314
  this.highlight(index + 1);
315
- this.fire('hover', index + 1, this);
315
+ this.fire('hover', {value: index + 1});
316
316
  }
317
317
  },
318
-
318
+
319
319
  // callback for user-click
320
320
  _clicked: function(event) {
321
321
  var index = this.children().indexOf(event.target);
@@ -327,12 +327,12 @@ var Rater = new Widget({
327
327
  this.send();
328
328
  }
329
329
  },
330
-
330
+
331
331
  // callback when user moves the mouse out
332
332
  _left: function() {
333
333
  this.setValue(this.value);
334
334
  },
335
-
335
+
336
336
  // visually highlights the value
337
337
  highlight: function(value) {
338
338
  this.children().each(function(element, i) {
@@ -341,6 +341,7 @@ var Rater = new Widget({
341
341
  }
342
342
  });
343
343
 
344
+
344
345
  /**
345
346
  * Document level on-demand auto-initialization
346
347
  *
@@ -348,11 +349,11 @@ var Rater = new Widget({
348
349
  */
349
350
  $(document).onMouseover(function(event) {
350
351
  var target = event.target, element = event.find('.rui-rater');
351
-
352
+
352
353
  if (element) {
353
354
  if (!(element instanceof Rater)) {
354
355
  element = new Rater(element);
355
-
356
+
356
357
  if (target.parent() === element) {
357
358
  target.fire('mouseover');
358
359
  }
@@ -360,7 +361,8 @@ $(document).onMouseover(function(event) {
360
361
  }
361
362
  });
362
363
 
364
+
363
365
  document.write("<style type=\"text/css\">div.rui-rater,div.rui-rater div{margin:0;padding:0;background:none;border:none;display:inline-block; *display:inline; *zoom:1;font-family:Arial;font-size:110%}div.rui-rater{width:6em;height:1em;vertical-align:middle}div.rui-rater div{float:left;width:1em;height:1em;line-height:1em;text-align:center;cursor:pointer;color:#888}div.rui-rater div.active{color:brown;text-shadow:#666 .05em .05em .15em}div.rui-rater-disabled div{cursor:default}</style>");
364
366
 
365
367
  return Rater;
366
- })(document, RightJS);
368
+ })(document, RightJS);
@@ -7,7 +7,7 @@
7
7
  var Rater=RightJS.Rater=function(h,b){var g=b.$,k=b.$w,l=b.Xhr,m=b.isString,n=b.isNumber,i=new (function(a,e){if(!e){e=a;a="DIV"}var f=new b.Wrapper(b.Element.Wrappers[a]||b.Element,{initialize:function(d,c){this.key=d;var j=[{"class":"rui-"+d}];this instanceof b.Input||this instanceof b.Form||j.unshift(a);this.$super.apply(this,j);if(b.isString(c))c=b.$(c);if(c instanceof b.Element){this._=c._;if("$listeners"in c)c.$listeners=c.$listeners;c={}}this.setOptions(c,this);return this},setOptions:function(d,
8
8
  c){c=c||this;b.Options.setOptions.call(this,b.Object.merge(d,eval("("+(c.get("data-"+this.key)||"{}")+")")));return this}});f=new b.Wrapper(f,e);b.Observer.createShortcuts(f.prototype,f.EVENTS||[]);return f})({include:{assignTo:function(a){var e=b(function(d,c){if(d=g(d))d[d.setValue?"setValue":"update"](c.target.getValue())}).curry(a),f=b(function(d,c){(d=g(d))&&d.onChange&&d.onChange(b(function(){this.setValue(d.value())}).bind(c))}).curry(a);if(g(a)){e({target:this});f(this)}else g(h).onReady(b(function(){e({target:this});
9
9
  f(this)}.bind(this)));return this.onChange(e)}},extend:{version:"2.0.0",EVENTS:k("change hover send"),Options:{html:"&#9733;",size:5,value:null,update:null,disabled:false,disableOnVote:false,url:null,param:"rate",Xhr:null}},initialize:function(a){this.$super("rater",a).on({click:this._clicked,mouseover:this._hovered,mouseout:this._left});if(this.empty())for(a=0;a<this.options.size;a++)this.insert("<div>"+this.options.html+"</div>");a=this.options;if(a.value===null)a.value=this.find(".active").length;
10
- this.setValue(a.value);a.disabled&&this.disable();a.update&&this.assignTo(a.update)},setValue:function(a){if(!this.disabled()){a=m(a)?b(a).toInt():a;a=n(a)?b(a).round():0;a=b(a).max(this.options.size);a=b(a).min(0);this.highlight(a);if(this.value!=a)this.fire("change",this.value=a,this)}return this},getValue:function(){return this.value},send:function(){if(this.options.url){this.request=(new l(this.options.url,this.options.Xhr)).send(this.options.param+"="+this.value);this.fire("send",this.value,
11
- this)}return this},disable:function(){return this.addClass("rui-rater-disabled")},enable:function(){return this.removeClass("rui-rater-disabled")},disabled:function(){return this.hasClass("rui-rater-disabled")},_hovered:function(a){a=this.children().indexOf(a.target);if(!this.disabled()&&a>-1){this.highlight(a+1);this.fire("hover",a+1,this)}},_clicked:function(a){a=this.children().indexOf(a.target);if(!this.disabled()&&a>-1){this.setValue(a+1);this.options.disableOnVote&&this.disable();this.send()}},
12
- _left:function(){this.setValue(this.value)},highlight:function(a){this.children().each(function(e,f){e[a-1<f?"removeClass":"addClass"]("active")})}});g(h).onMouseover(function(a){var e=a.target;if(a=a.find(".rui-rater"))if(!(a instanceof i)){a=new i(a);e.parent()===a&&e.fire("mouseover")}});h.write('<style type="text/css">div.rui-rater,div.rui-rater div{margin:0;padding:0;background:none;border:none;display:inline-block; *display:inline; *zoom:1;font-family:Arial;font-size:110%}div.rui-rater{width:6em;height:1em;vertical-align:middle}div.rui-rater div{float:left;width:1em;height:1em;line-height:1em;text-align:center;cursor:pointer;color:#888}div.rui-rater div.active{color:brown;text-shadow:#666 .05em .05em .15em}div.rui-rater-disabled div{cursor:default}</style>');
10
+ this.setValue(a.value);a.disabled&&this.disable();a.update&&this.assignTo(a.update)},setValue:function(a){if(!this.disabled()){a=m(a)?b(a).toInt():a;a=n(a)?b(a).round():0;a=b(a).max(this.options.size);a=b(a).min(0);this.highlight(a);if(this.value!=a)this.fire("change",{value:this.value=a})}return this},getValue:function(){return this.value},send:function(){if(this.options.url){this.request=(new l(this.options.url,this.options.Xhr)).send(this.options.param+"="+this.value);this.fire("send",{value:this.value})}return this},
11
+ disable:function(){return this.addClass("rui-rater-disabled")},enable:function(){return this.removeClass("rui-rater-disabled")},disabled:function(){return this.hasClass("rui-rater-disabled")},_hovered:function(a){a=this.children().indexOf(a.target);if(!this.disabled()&&a>-1){this.highlight(a+1);this.fire("hover",{value:a+1})}},_clicked:function(a){a=this.children().indexOf(a.target);if(!this.disabled()&&a>-1){this.setValue(a+1);this.options.disableOnVote&&this.disable();this.send()}},_left:function(){this.setValue(this.value)},
12
+ highlight:function(a){this.children().each(function(e,f){e[a-1<f?"removeClass":"addClass"]("active")})}});g(h).onMouseover(function(a){var e=a.target;if(a=a.find(".rui-rater"))if(!(a instanceof i)){a=new i(a);e.parent()===a&&e.fire("mouseover")}});h.write('<style type="text/css">div.rui-rater,div.rui-rater div{margin:0;padding:0;background:none;border:none;display:inline-block; *display:inline; *zoom:1;font-family:Arial;font-size:110%}div.rui-rater{width:6em;height:1em;vertical-align:middle}div.rui-rater div{float:left;width:1em;height:1em;line-height:1em;text-align:center;cursor:pointer;color:#888}div.rui-rater div.active{color:brown;text-shadow:#666 .05em .05em .15em}div.rui-rater-disabled div{cursor:default}</style>');
13
13
  return i}(document,RightJS);
@@ -24,7 +24,7 @@ var R = RightJS,
24
24
  $E = RightJS.$E,
25
25
  Wrapper = RightJS.Wrapper,
26
26
  Element = RightJS.Element;
27
-
27
+
28
28
 
29
29
 
30
30
 
@@ -34,13 +34,13 @@ var R = RightJS,
34
34
  * @param String tag-name or Object methods
35
35
  * @param Object methods
36
36
  * @return Widget wrapper
37
- */
37
+ */
38
38
  function Widget(tag_name, methods) {
39
39
  if (!methods) {
40
40
  methods = tag_name;
41
41
  tag_name = 'DIV';
42
42
  }
43
-
43
+
44
44
  /**
45
45
  * An Abstract Widget Unit
46
46
  *
@@ -57,17 +57,17 @@ function Widget(tag_name, methods) {
57
57
  initialize: function(key, options) {
58
58
  this.key = key;
59
59
  var args = [{'class': 'rui-' + key}];
60
-
60
+
61
61
  // those two have different constructors
62
62
  if (!(this instanceof RightJS.Input || this instanceof RightJS.Form)) {
63
63
  args.unshift(tag_name);
64
64
  }
65
65
  this.$super.apply(this, args);
66
-
66
+
67
67
  if (RightJS.isString(options)) {
68
68
  options = RightJS.$(options);
69
69
  }
70
-
70
+
71
71
  // if the options is another element then
72
72
  // try to dynamically rewrap it with our widget
73
73
  if (options instanceof RightJS.Element) {
@@ -100,16 +100,16 @@ function Widget(tag_name, methods) {
100
100
  return this;
101
101
  }
102
102
  });
103
-
103
+
104
104
  /**
105
105
  * Creating the actual widget class
106
106
  *
107
107
  */
108
108
  var Klass = new RightJS.Wrapper(AbstractWidget, methods);
109
-
109
+
110
110
  // creating the widget related shortcuts
111
111
  RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
112
-
112
+
113
113
  return Klass;
114
114
  }
115
115
 
@@ -122,19 +122,19 @@ function Widget(tag_name, methods) {
122
122
  var Resizable = new Widget({
123
123
  extend: {
124
124
  version: '2.0.0',
125
-
125
+
126
126
  EVENTS: $w('resize start release'),
127
-
127
+
128
128
  Options: {
129
129
  direction: null, // 'top', 'left', 'right', 'bottom', null for bidrectional
130
-
130
+
131
131
  minWidth: null,
132
132
  maxWidth: null,
133
133
  minHeight: null,
134
134
  maxHeight: null
135
135
  }
136
136
  },
137
-
137
+
138
138
  /**
139
139
  * Basic constructor
140
140
  *
@@ -146,20 +146,20 @@ var Resizable = new Widget({
146
146
  this
147
147
  .$super('resizable', this.old_inst = $(element))
148
148
  .setOptions(options);
149
-
149
+
150
150
  if (this.options.direction) {
151
151
  this.addClass('rui-resizable-'+ this.options.direction);
152
152
  } else {
153
153
  this.addClass('rui-resizable');
154
154
  }
155
-
155
+
156
156
  // initializing the inner structure
157
157
  this.content = this.first('.rui-resizable-content') ||
158
158
  $E('div', {'class': 'rui-resizable-content'}).insert(this._.childNodes).insertTo(this);
159
159
  this.handle = this.first('.rui-resizable-handle') ||
160
160
  $E('div', {'class': 'rui-resizable-handle'}).insertTo(this);
161
161
  },
162
-
162
+
163
163
  /**
164
164
  * destructor
165
165
  *
@@ -173,18 +173,18 @@ var Resizable = new Widget({
173
173
  .removeClass('rui-resizable-right')
174
174
  .removeClass('rui-resizable-bottom')
175
175
  .insert(this.content._.childNodes);
176
-
176
+
177
177
  this.content.remove();
178
178
  this.handle.remove();
179
-
179
+
180
180
  // swapping the old element back
181
181
  if (this.old_inst) {
182
182
  Wrapper.Cache[$uid(this._)] = this.old_inst;
183
183
  }
184
-
184
+
185
185
  return this;
186
186
  },
187
-
187
+
188
188
  /**
189
189
  * Overriding the method to recognize the direction
190
190
  * option from the element class-name
@@ -194,17 +194,17 @@ var Resizable = new Widget({
194
194
  */
195
195
  setOptions: function(options, context) {
196
196
  options = options || {};
197
-
197
+
198
198
  // trying to recognize the direction
199
199
  $w('top left right bottom').each(function(direction) {
200
200
  if (this.hasClass('rui-resizable-'+ direction)) {
201
201
  options.direction = direction;
202
202
  }
203
203
  }, this);
204
-
204
+
205
205
  return this.$super(options, context);
206
206
  },
207
-
207
+
208
208
  /**
209
209
  * Starts the resizing process
210
210
  *
@@ -213,19 +213,19 @@ var Resizable = new Widget({
213
213
  start: function(event) {
214
214
  this.prevSizes = this.size();
215
215
  this.prevEvPos = event.position();
216
-
216
+
217
217
  // used later during the resize process
218
218
  this.contXDiff = this.size().x - this.content.size().x;
219
219
  this.contYDiff = this.size().y - this.content.size().y;
220
-
220
+
221
221
  // trying to recognize the boundaries
222
222
  $w('minWidth maxWidth minHeight maxHeight').each(function(dimension) {
223
223
  this[dimension] = this.findDim(dimension);
224
224
  }, this);
225
-
226
- return this.fire('start', event);
225
+
226
+ return this.fire('start', {original: event});
227
227
  },
228
-
228
+
229
229
  /**
230
230
  * Tracks the event during the resize process
231
231
  *
@@ -243,17 +243,17 @@ var Resizable = new Widget({
243
243
  max_y = this.maxHeight,
244
244
  options = this.options,
245
245
  direction = options.direction;
246
-
246
+
247
247
  // calculating the new size
248
248
  width += (direction === 'left' ? 1 : -1) * x_diff;
249
249
  height += (direction === 'top' ? 1 : -1) * y_diff;
250
-
250
+
251
251
  // applying the boundaries
252
252
  if (width < min_x) { width = min_x; }
253
253
  if (width > max_x) { width = max_x; }
254
254
  if (height < min_y) { height = min_y; }
255
255
  if (height > max_y) { height = max_y; }
256
-
256
+
257
257
  // applying the sizes
258
258
  if (prev_size.x !== width && direction !== 'top' && direction !== 'bottom') {
259
259
  this.setWidth(width);
@@ -261,7 +261,7 @@ var Resizable = new Widget({
261
261
  if (prev_size.y !== height && direction !== 'left' && direction !== 'right') {
262
262
  this.setHeight(height);
263
263
  }
264
-
264
+
265
265
  // adjusting the previous cursor position so that it didn't had a shift
266
266
  if (width == min_x || width == max_x) {
267
267
  event_pos.x = handle.left + handle.width / 2;
@@ -269,13 +269,13 @@ var Resizable = new Widget({
269
269
  if (height == min_y || height == max_y) {
270
270
  event_pos.y = handle.top + handle.height / 2;
271
271
  }
272
-
272
+
273
273
  this.prevEvPos = event_pos;
274
274
  this.prevSizes = this.size();
275
-
276
- this.fire('resize', event);
275
+
276
+ this.fire('resize', {original: event});
277
277
  },
278
-
278
+
279
279
  /**
280
280
  * Sets the width of the widget
281
281
  *
@@ -286,7 +286,7 @@ var Resizable = new Widget({
286
286
  this.content.setWidth(width - this.contXDiff);
287
287
  return this.$super(width);
288
288
  },
289
-
289
+
290
290
  /**
291
291
  * Sets the height of the widget
292
292
  *
@@ -297,33 +297,22 @@ var Resizable = new Widget({
297
297
  this.content.setHeight(height - this.contYDiff);
298
298
  return this.$super(height);
299
299
  },
300
-
300
+
301
301
  /**
302
302
  * Marks it the end of the action
303
303
  *
304
304
  * @return Resizable this
305
305
  */
306
306
  release: function(event) {
307
- return this.fire('release', event);
308
- },
309
-
310
- /**
311
- * Overloading the standard method so that it was sending
312
- * current instance as an argument
313
- *
314
- * @param String event name
315
- * @return Resizable this
316
- */
317
- fire: function(event, dom_event) {
318
- return this.$super(event, this, dom_event);
307
+ return this.fire('release', {original: event});
319
308
  },
320
-
309
+
321
310
  // protected
322
311
 
323
312
  // finds dimensions of the element
324
313
  findDim: function(dimension) {
325
314
  var style = this.options[dimension] || this.getStyle(dimension);
326
-
315
+
327
316
  if (style && /\d+/.test(style) && parseFloat(style) > 0) {
328
317
  var what = R(dimension).include('Width') ? 'width' : 'height',
329
318
  dummy = (this._dummy || (this._dummy = $E('div', {
@@ -331,15 +320,16 @@ var Resizable = new Widget({
331
320
  })))
332
321
  .setStyle(what, style)
333
322
  .insertTo(this, 'before');
334
-
323
+
335
324
  var size = dummy._['offset' + R(what).capitalize()];
336
325
  dummy.remove();
337
-
326
+
338
327
  return size;
339
328
  }
340
329
  }
341
330
  });
342
331
 
332
+
343
333
  /**
344
334
  * Document level hooks for resizables
345
335
  *
@@ -350,25 +340,25 @@ $(document).on({
350
340
  var handle = event.find('.rui-resizable-handle');
351
341
  if (handle) {
352
342
  var resizable = handle.parent();
353
-
343
+
354
344
  if (resizable instanceof Element) {
355
345
  resizable = new Resizable(resizable);
356
346
  }
357
-
347
+
358
348
  Resizable.current = resizable.start(event.stop());
359
349
  }
360
350
  },
361
-
351
+
362
352
  mousemove: function(event) {
363
353
  var resizable = Resizable.current;
364
354
  if (resizable) {
365
355
  resizable.track(event);
366
356
  }
367
357
  },
368
-
358
+
369
359
  mouseup: function(event) {
370
360
  var resizable = Resizable.current;
371
-
361
+
372
362
  if (resizable) {
373
363
  resizable.release(event);
374
364
  Resizable.current = null;
@@ -384,6 +374,7 @@ $(window).onBlur(function(event) {
384
374
  }
385
375
  });
386
376
 
377
+
387
378
  /**
388
379
  * Element level hook to make things resizable
389
380
  *
@@ -400,7 +391,7 @@ Element.include({
400
391
  new Resizable(this, options);
401
392
  return this;
402
393
  },
403
-
394
+
404
395
  /**
405
396
  * Destroys a resizable functionality
406
397
  *
@@ -414,7 +405,8 @@ Element.include({
414
405
  }
415
406
  });
416
407
 
408
+
417
409
  document.write("<style type=\"text/css\">.rui-resizable,.rui-resizable-top,.rui-resizable-left,.rui-resizable-right,.rui-resizable-bottom,.rui-resizable-content .rui-resizable-handle{margin:0;padding:0;overflow:none;border:none;background:none;width:auto;height:auto;min-width:none;max-width:none;min-height:none;max-height:none}.rui-resizable,.rui-resizable-top,.rui-resizable-left,.rui-resizable-right,.rui-resizable-bottom{position:relative;min-width:8em;min-height:8em;border:1px solid #DDD}.rui-resizable-content{overflow:auto;padding:.5em;position:relative}.rui-resizable-handle{position:absolute;background-image:url(/images/rightjs-ui/resizable.png);background-repeat:no-repeat;background-color:#DDD;cursor:move}.rui-resizable .rui-resizable-handle{right:0;bottom:0;background-position:-2px -2px;background-color:transparent;width:16px;height:16px}.rui-resizable-top .rui-resizable-handle,.rui-resizable-bottom .rui-resizable-handle{height:8px;width:100%;background-position:center -26px;cursor:row-resize}.rui-resizable-left .rui-resizable-handle,.rui-resizable-right .rui-resizable-handle{top:0px;width:8px;height:100%;background-position:-26px center;cursor:col-resize}.rui-resizable-top .rui-resizable-content{padding-top:1em}.rui-resizable-top .rui-resizable-handle{top:0}.rui-resizable-bottom .rui-resizable-content{padding-bottom:1em}.rui-resizable-bottom .rui-resizable-handle{bottom:0}.rui-resizable-left .rui-resizable-content{padding-left:1em}.rui-resizable-left .rui-resizable-handle{left:0}.rui-resizable-right .rui-resizable-content{padding-right:1em}.rui-resizable-right .rui-resizable-handle{right:0}</style>");
418
410
 
419
411
  return Resizable;
420
- })(document, RightJS);
412
+ })(document, RightJS);