rsence-pre 2.2.2.1 → 2.3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/VERSION +1 -1
  2. data/conf/default_conf.yaml +6 -1
  3. data/js/comm/queue/queue.js +0 -1
  4. data/js/comm/transporter/transporter.js +32 -16
  5. data/js/comm/values/values.js +45 -13
  6. data/js/controls/sliders/slider/slider.js +5 -6
  7. data/js/controls/sliders/slider/themes/default/slider.css +34 -62
  8. data/js/controls/sliders/slider/themes/default/slider.html +4 -4
  9. data/js/controls/sliders/vslider/themes/default/vslider.css +43 -10
  10. data/js/controls/sliders/vslider/vslider.js +3 -1
  11. data/js/controls/stepper/stepper.js +1 -1
  12. data/js/controls/stringview/stringview.js +6 -8
  13. data/js/controls/stringview/themes/default/stringview.html +1 -1
  14. data/js/controls/textcontrol/textcontrol.js +22 -16
  15. data/js/controls/textcontrol/themes/default/textcontrol.css +23 -22
  16. data/js/controls/window/window.js +1 -1
  17. data/js/core/class/class.js +4 -4
  18. data/js/core/event/event.js +3 -2
  19. data/js/datetime/calendar/calendar.coffee +114 -58
  20. data/js/datetime/calendar/themes/default/calendar.css +4 -2
  21. data/js/foundation/control/control.js +2 -0
  22. data/js/foundation/control/dyncontrol/dyncontrol.js +15 -0
  23. data/js/foundation/control/eventresponder/eventresponder.js +29 -20
  24. data/js/foundation/eventmanager/eventmanager.coffee +1090 -0
  25. data/js/foundation/eventmanager/eventmanager.js +116 -28
  26. data/js/foundation/json_renderer/json_renderer.js +4 -2
  27. data/js/foundation/system/system.js +3 -0
  28. data/js/foundation/view/view.js +6 -30
  29. data/js/lists/listitems/listitems.js +8 -1
  30. data/js/lists/radiobuttonlist/radiobuttonlist.js +9 -4
  31. data/js/menus/minimenu/minimenu.js +11 -5
  32. data/js/menus/minimenuitem/minimenuitem.js +6 -4
  33. data/js/tables/table/table.coffee +19 -0
  34. data/js/tables/table/themes/default/table.css +0 -0
  35. data/js/tables/table/themes/default/table.html +19 -0
  36. data/lib/rsence/argv/initenv_argv.rb +1 -1
  37. data/lib/rsence/http/broker.rb +3 -1
  38. data/lib/rsence/msg.rb +1 -1
  39. data/lib/rsence/plugins/gui_plugin.rb +2 -0
  40. data/lib/rsence/sessionmanager.rb +7 -7
  41. data/lib/rsence/sessionstorage.rb +3 -1
  42. data/lib/rsence/transporter.rb +56 -32
  43. data/lib/rsence/valuemanager.rb +3 -3
  44. data/plugins/client_pkg/client_pkg.rb +5 -0
  45. data/plugins/client_pkg/lib/client_pkg_build.rb +29 -4
  46. metadata +10 -7
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.2.2.1.pre
1
+ 2.3.0.0.pre
@@ -78,13 +78,18 @@
78
78
  :latency: 0
79
79
  #
80
80
  # HTTP Port number to listen to.
81
- :port: 8001
81
+ :port: '8001'
82
82
  #
83
83
  # Bind this ip address ('0.0.0.0' means all)
84
84
  :bind_address: '127.0.0.1'
85
85
  #
86
86
  # Rack handler to use, defaults to puma
87
87
  :rack_require: puma
88
+ #
89
+ # These are default options. Ymmv, but these work fine for puma
90
+ :handler_options:
91
+ :Verbose: false
92
+ :Threads: '4:64' # puma default is '0:16'
88
93
  #
89
94
  # When enabled, sets http cache headers
90
95
  # to cache content as long as possible.
@@ -85,7 +85,6 @@ COMM.Queue = HApplication.extend({
85
85
  _strs.REASON,
86
86
  _exception
87
87
  ].join('');
88
- console.log( _errorText );
89
88
  return _errorText;
90
89
  },
91
90
 
@@ -70,20 +70,18 @@ COMM.Transporter = HApplication.extend({
70
70
  * to report js errors to the server.
71
71
  * If no error, returns an empty string.
72
72
  **/
73
- getClientEvalError: function(){
74
- var _this = COMM.Transporter;
75
- return _this._clientEvalError?'&err_msg=' +
76
- COMM.Values._encodeString(_this._clientEvalError):'';
77
- },
73
+ // getClientEvalError: function(){
74
+ // var _this = COMM.Transporter;
75
+ // return _this._clientEvalError?'&err_msg=' +
76
+ // COMM.Values._encodeString(_this._clientEvalError):'';
77
+ // },
78
78
 
79
79
  parseResponseArray: function( _responseText ){
80
- var _arr = eval( _responseText );
81
- return _arr;
80
+ return HVM.decode( _responseText );
82
81
  },
83
82
 
84
83
  _nativeParseResponseArray: function( _responseText ){
85
- var _arr = JSON.parse( _responseText );
86
- return _arr;
84
+ return JSON.parse( _responseText );
87
85
  },
88
86
 
89
87
  setValues: function( _values ){
@@ -176,7 +174,9 @@ COMM.Transporter = HApplication.extend({
176
174
  flushBusy: function(){
177
175
  var _this = COMM.Transporter;
178
176
  _this.busy = false;
179
- COMM.Values.tosync.length !== 0 && _this.sync();
177
+ if( COMM.Values.tosync.length !== 0 ){
178
+ _this.sync();
179
+ }
180
180
  },
181
181
  failMessage: function(_title,_message){
182
182
  var _this = COMM.Transporter,
@@ -320,18 +320,34 @@ COMM.Transporter = HApplication.extend({
320
320
  }
321
321
  // console.log('sync.');
322
322
  this.busy = true;
323
+ var _now = new Date().getTime();
323
324
  if(window['sesWatcher'] && window.sesWatcher['sesTimeoutValue']){
324
325
  // Sets the value of the session watcher to the current time. It could cause an unnecessary re-sync poll immediately after this sync otherwise.
325
- sesWatcher.sesTimeoutValue.set( new Date().getTime() );
326
+ sesWatcher.sesTimeoutValue.set( _now );
326
327
  }
327
- var _this = this,
328
- _values = COMM.Values.sync(),
329
- _sesKey = 'ses_key='+COMM.Session.ses_key,
330
- _errorMessage = _this.getClientEvalError(),
331
- _body = [_sesKey,_errorMessage,_values?'&values='+_values:''].join('');
328
+ var
329
+ _this = this,
330
+ // _values = HVM.sync(),
331
+ // _boundary = _now.toString(36)+(Math.random()*10000).toString(36)+(Math.random()*10000).toString(36),
332
+ // _separator = '--'+_boundary,
333
+ // _errorMessage = _this.getClientEvalError(),
334
+ _body = HVM.sync();
335
+ // _body = _separator+
336
+ // '\r\nContent-Disposition: form-data; name="ses_key"\r\nContent-Type: text/plain\r\n'+
337
+ // '\r\n'+COMM.Session.ses_key+'\r\n'+_separator;
338
+ // if( _values ){
339
+ // _body += '\r\nContent-Disposition: form-data; name="values"\r\nContent-Type: application/json; charset=UTF-8\r\n'+
340
+ // '\r\n'+_values+'\r\n'+_separator+'--\r\n';
341
+ // }
342
+ // else {
343
+ // _body += '--\r\n';
344
+ // }
345
+ // _body = [_sesKey,_errorMessage,_values?'&values='+_values:''].join('');
332
346
  COMM.request(
333
347
  _this.url, {
334
348
  _this: _this,
349
+ // contentType: 'multipart/form-data; boundary='+_boundary,
350
+ contentType: 'application/json',
335
351
  onSuccess: COMM.Transporter.success,
336
352
  onFailure: COMM.Transporter.failure,
337
353
  method: 'POST',
@@ -468,22 +468,54 @@ COMM.Values = HClass.extend({
468
468
  * An encoded string representation of values to synchronize.
469
469
  **/
470
470
  sync: function(){
471
- if(this.tosync.length===0){
472
- return false;
471
+ var
472
+ _this = this,
473
+ _response = [ COMM.Session.ses_key,{},[] ],
474
+ _error = COMM.Transporter._clientEvalError;
475
+
476
+ if( _error ){
477
+ _response[2].push({'err_msg':_error});
473
478
  }
474
- var _syncValues = {},
475
- _this = this,
476
- _values = _this.values,
477
- _tosync = _this.tosync,
478
- _len = _tosync.length,
479
- i = 0, _id, _value;
480
- for(;i<_len;i++){
481
- _id = _tosync.shift();
482
- _value = _values[_id].value;
483
- _syncValues[_id] = _value;
479
+
480
+ // new implementation, symmetric with the server response format
481
+ if( this.tosync.length > 0 ){
482
+ _response[1].set=[];
483
+ var
484
+ _syncValues = _response[1].set,
485
+ _values = _this.values,
486
+ _tosync = _this.tosync,
487
+ i = _tosync.length,
488
+ _id, _value;
489
+ while(i--){
490
+ _id = _tosync.shift();
491
+ _value = _values[_id].value;
492
+ _syncValues.push( [ _id, _value ] );
493
+ }
484
494
  }
485
- return encodeURIComponent(_this.encode(_syncValues));
495
+ // console.log('response:',_response);
496
+ // console.log('encoded:',_this.encode(_response));
497
+ return _this.encode(_response);
486
498
  },
499
+
500
+ // Old sync implementation:
501
+ // sync: function(){
502
+ // if(this.tosync.length===0){
503
+ // return false;
504
+ // }
505
+ // var
506
+ // _syncValues = {},
507
+ // _this = this,
508
+ // _values = _this.values,
509
+ // _tosync = _this.tosync,
510
+ // _len = _tosync.length,
511
+ // i = 0, _id, _value;
512
+ // for(;i<_len;i++){
513
+ // _id = _tosync.shift();
514
+ // _value = _values[_id].value;
515
+ // _syncValues[_id] = _value;
516
+ // }
517
+ // return encodeURIComponent(_this.encode(_syncValues));
518
+ // },
487
519
 
488
520
  _detectNativeJSONSupport: function(){
489
521
  if(window['JSON']){
@@ -289,7 +289,7 @@ HSlider = HControl.extend({
289
289
 
290
290
  prevOrientation: 'c',
291
291
 
292
- cssClassPrefix: 'h',
292
+ orientations: ['n','s','c'],
293
293
 
294
294
  /** = Description
295
295
  * Changes the thumb graphic. Possible orientations by default are
@@ -316,17 +316,16 @@ HSlider = HControl.extend({
316
316
  }
317
317
  var _toggleCSS = this.toggleCSSClass,
318
318
  _ctrlId = this.markupElemIds.control,
319
- _orientations = ['n','s','w','e','c'],
319
+ _orientations = this.orientations,
320
320
  _iOrientation = '',
321
321
  _cssClassName = '',
322
- _cssClassPrefix = this.cssClassPrefix,
323
- _cssClassVert = this._isVertical?'v':'',
322
+ _componentName = this.componentName,
324
323
  _activeOrientation = false,
325
324
  i = 0;
326
- for(;i<5;i++){
325
+ for(;i<3;i++){
327
326
  _iOrientation = _orientations[i];
328
327
  _activeOrientation = (_orientation===_iOrientation);
329
- _cssClassName = (_orientation==='c')?_cssClassPrefix+_cssClassVert+'slider_thumb':_cssClassPrefix+'slider_thumb_'+_iOrientation;
328
+ _cssClassName = (_orientation==='c')?_componentName+'_'+'thumb':_componentName+'_'+'thumb'+'_'+_iOrientation;
330
329
  _toggleCSS( _ctrlId, _cssClassName, _activeOrientation );
331
330
  }
332
331
 
@@ -1,108 +1,80 @@
1
- .hslider_track_left,
2
- .hslider_track_right,
3
- .hslider_track {
1
+ .slider_track_left,
2
+ .slider_track_right,
3
+ .slider_track {
4
4
  position: absolute;
5
5
  height: 7px; top: 7px;
6
- font-size: 0px;
6
+ font-size: 0;
7
7
  background-image: #{this.getCssFilePath('hslider_tracks.png')};
8
8
  }
9
9
 
10
- .hslider_track_left {
10
+ .slider_track_left {
11
11
  left: 10px; width: 4px;
12
- background-position: 0px 0px;
12
+ background-position: 0 0;
13
13
  }
14
14
 
15
- .hslider_track_right {
15
+ .slider_track_right {
16
16
  right: 10px; width: 4px;
17
- background-position: -4px 0px;
17
+ background-position: -4px 0;
18
18
  }
19
19
 
20
- .hslider_track {
20
+ .slider_track {
21
21
  left: 14px; right: 14px;
22
- background-position: 0px -14px;
22
+ background-position: 0 -14px;
23
23
  }
24
24
 
25
- .disabled .hslider_track_left {
26
- background-position: 0px -7px;
25
+ .disabled .slider_track_left {
26
+ background-position: 0 -7px;
27
27
  }
28
28
 
29
- .disabled .hslider_track_right {
29
+ .disabled .slider_track_right {
30
30
  background-position: -4px -7px;
31
31
  }
32
32
 
33
- .disabled .hslider_track {
34
- background-position: 0px -21px;
33
+ .disabled .slider_track {
34
+ background-position: 0 -21px;
35
35
  }
36
36
 
37
- .hslider_thumb {
37
+ .slider_thumb {
38
38
  position: absolute;
39
- top: 0px; height: 21px; width: 21px;
40
- font-size: 0px;
41
- background-position: 0px 0px;
39
+ top: 0; height: 21px; width: 21px;
40
+ font-size: 0;
41
+ background-position: 0 0;
42
42
  background-image: #{this.getCssFilePath('slider_thumbs.png')};
43
43
  }
44
44
 
45
- .hslider_thumb:active {
46
- background-position: 0px -22px;
45
+ .slider_thumb:active {
46
+ background-position: 0 -22px;
47
47
  }
48
48
 
49
- .disabled .hslider_thumb {
50
- background-position: 0px -44px;
49
+ .disabled .slider_thumb {
50
+ background-position: 0 -44px;
51
51
  }
52
52
 
53
- .hslider_thumb_n,
54
- .hslider_thumb_s,
55
- .hslider_thumb_e,
56
- .hslider_thumb_w {
53
+ .slider_thumb_n,
54
+ .slider_thumb_s {
57
55
  position: absolute;
58
- top: 0px; height: 21px; width: 21px;
56
+ top: 0; height: 21px; width: 21px;
59
57
  background-image: #{this.getCssFilePath('slider_thumbs.png')};
60
58
  }
61
59
 
62
- .hslider_thumb_e,
63
- .hslider_thumb_w {
64
- left: 0px;
60
+ .slider_thumb_n {
61
+ background-position: -22px 0;
65
62
  }
66
-
67
- .hslider_thumb_n {
68
- background-position: -22px 0px;
69
- }
70
- .hslider_thumb_n:active {
63
+ .slider_thumb_n:active {
71
64
  background-position: -22px -22px;
72
65
  }
73
- .disabled .hslider_thumb_n {
66
+ .disabled .slider_thumb_n {
74
67
  background-position: -22px -44px;
75
68
  }
76
69
 
77
- .hslider_thumb_s {
78
- background-position: -44px 0px;
70
+ .slider_thumb_s {
71
+ background-position: -44px 0;
79
72
  }
80
- .hslider_thumb_s:active {
73
+ .slider_thumb_s:active {
81
74
  background-position: -44px -22px;
82
75
  }
83
- .disabled .hslider_thumb_s {
76
+ .disabled .slider_thumb_s {
84
77
  background-position: -44px -44px;
85
78
  }
86
79
 
87
- .hslider_thumb_w {
88
- background-position: -66px 0px;
89
- }
90
- .hslider_thumb_w:active {
91
- background-position: -66px -22px;
92
- }
93
- .disabled .hslider_thumb_w {
94
- background-position: -66px -44px;
95
- }
96
-
97
- .hslider_thumb_e {
98
- background-position: -88px 0px;
99
- }
100
- .hslider_thumb_e:active {
101
- background-position: -88px -22px;
102
- }
103
- .disabled .hslider_thumb_e {
104
- background-position: -88px -44px;
105
- }
106
-
107
-
108
80
 
@@ -1,5 +1,5 @@
1
- <div class="hslider_track_left"></div>
2
- <div class="hslider_track_right"></div>
3
- <div class="hslider_track"></div>
4
- <div class="hslider_thumb" id="control#{_ID}"></div>
1
+ <div class="slider_track_left"></div>
2
+ <div class="slider_track_right"></div>
3
+ <div class="slider_track"></div>
4
+ <div class="slider_thumb" id="control#{_ID}"></div>
5
5
  ${this.thumbSize=21;}
@@ -3,27 +3,27 @@
3
3
  .vslider_track {
4
4
  position: absolute;
5
5
  width: 7px; left: 7px;
6
- font-size: 0px;
6
+ font-size: 0;
7
7
  background-image: #{this.getCssFilePath('vslider_tracks.png')};
8
8
  }
9
9
 
10
10
  .vslider_track_top {
11
11
  top: 10px; height: 4px;
12
- background-position: 0px 0px;
12
+ background-position: 0 0;
13
13
  }
14
14
 
15
15
  .vslider_track_bottom {
16
16
  bottom: 10px; height: 4px;
17
- background-position: 0px -4px;
17
+ background-position: 0 -4px;
18
18
  }
19
19
 
20
20
  .vslider_track {
21
21
  top: 14px; bottom: 14px;
22
- background-position: -14px 0px;
22
+ background-position: -14px 0;
23
23
  }
24
24
 
25
25
  .disabled .vslider_track_top {
26
- background-position: -7px 0px;
26
+ background-position: -7px 0;
27
27
  }
28
28
 
29
29
  .disabled .vslider_track_bottom {
@@ -31,22 +31,55 @@
31
31
  }
32
32
 
33
33
  .disabled .vslider_track {
34
- background-position: -21px 0px;
34
+ background-position: -21px 0;
35
35
  }
36
36
 
37
37
  .vslider_thumb {
38
38
  position: absolute;
39
39
  font-size: 0px;
40
- left: 0px; width: 21px; height: 21px;
41
- background-position: 0px 0px;
40
+ left: 0; width: 21px; height: 21px;
41
+ background-position: 0 0;
42
42
  background-image: #{this.getCssFilePath('slider_thumbs.png')};
43
43
  }
44
44
 
45
45
  .vslider_thumb:active {
46
- background-position: 0px -22px;
46
+ background-position: 0 -22px;
47
47
  }
48
48
 
49
49
  .disabled .vslider_thumb {
50
- background-position: 0px -44px;
50
+ background-position: 0 -44px;
51
+ }
52
+
53
+ .vslider_thumb_e,
54
+ .vslider_thumb_w {
55
+ position: absolute;
56
+ top: 0; height: 21px; width: 21px;
57
+ background-image: #{this.getCssFilePath('slider_thumbs.png')};
58
+ }
59
+
60
+ .vslider_thumb_e,
61
+ .vslider_thumb_w {
62
+ left: 0;
63
+ }
64
+
65
+ .vslider_thumb_w {
66
+ background-position: -66px 0;
67
+ }
68
+ .vslider_thumb_w:active {
69
+ background-position: -66px -22px;
70
+ }
71
+ .disabled .vslider_thumb_w {
72
+ background-position: -66px -44px;
73
+ }
74
+
75
+ .vslider_thumb_e {
76
+ background-position: -88px 0;
77
+ }
78
+ .vslider_thumb_e:active {
79
+ background-position: -88px -22px;
51
80
  }
81
+ .disabled .vslider_thumb_e {
82
+ background-position: -88px -44px;
83
+ }
84
+
52
85
 
@@ -35,7 +35,9 @@ HVSlider = HSlider.extend({
35
35
  componentName: "vslider",
36
36
 
37
37
  // This overrides the HSlider property.
38
- _isVertical: true
38
+ _isVertical: true,
39
+
40
+ orientations: ['w','e','c']
39
41
 
40
42
  });
41
43
 
@@ -140,7 +140,7 @@ HStepper = HControl.extend({
140
140
  **/
141
141
  mouseDown: function( x, y ){
142
142
  this.setMouseUp(true);
143
- this._setRepeatInterval( ( y - ELEM.getVisiblePosition( this.elemId )[1] ) <= 11 );
143
+ this._setRepeatInterval( ( y - this.pageY() ) <= 11 );
144
144
  return true;
145
145
  },
146
146
 
@@ -43,14 +43,12 @@ var HStringView, HLabel;
43
43
  *
44
44
  **/
45
45
  refreshLabel: function() {
46
- if(this.markupElemIds) {
47
- if(this.markupElemIds.value) {
48
- if( this.value !== undefined ){
49
- this.setAttrOfPart( 'value', 'title', this.label );
50
- }
51
- else {
52
- this.setMarkupOfPart( 'value', this.label );
53
- }
46
+ if(this.markupElemIds && this.markupElemIds.value) {
47
+ if( this.value !== undefined ){
48
+ this.setAttrOfPart( 'value', 'title', this.label );
49
+ }
50
+ else {
51
+ this.setMarkupOfPart( 'value', this.label );
54
52
  }
55
53
  }
56
54
  }
@@ -1 +1 @@
1
- <div class="stringview" id="value#{_ID}" title="#{this.label}"></div>
1
+ <div class="stringview" id="value#{_ID}"></div>
@@ -152,23 +152,16 @@ HTextControl = HControl.extend({
152
152
  textBlur: function(){
153
153
  this.hasTextFocus = false;
154
154
  this._clearChangeEventFn();
155
- this._updateValueFromField();
156
155
  if(this.options.refreshOnBlur){
156
+ this._updateValueFromField();
157
157
  this.refreshValue();
158
158
  }
159
159
  return true;
160
160
  },
161
161
 
162
162
  idle: function(){
163
- if( !this.options.refreshOnIdle ){ return; }
164
- this.hasTextFocus && this._updateValueFromField();
165
- try{
166
- this.base();
167
- }
168
- catch(e){
169
- console.error('HTextControl::onIdle error -> ',e);
170
- debugger;
171
- this.base();
163
+ if( this.hasTextFocus && this.options.refreshOnIdle && this.options.refreshOnInput ){
164
+ this._updateValueFromField();
172
165
  }
173
166
  },
174
167
 
@@ -354,12 +347,12 @@ HTextControl = HControl.extend({
354
347
  *
355
348
  **/
356
349
  textEnter: function(){
357
- this.setValue(
358
- this.validateText(
359
- this.getTextFieldValue()
360
- )
361
- );
362
350
  if(this.options.refreshOnInput){
351
+ this.setValue(
352
+ this.validateText(
353
+ this.getTextFieldValue()
354
+ )
355
+ );
363
356
  this.refreshValue();
364
357
  }
365
358
  return false;
@@ -380,7 +373,8 @@ HNumericTextControl = HTextControl.extend({
380
373
  defaultEvents: {
381
374
  mouseWheel: true,
382
375
  textEnter: true,
383
- contextMenu: true
376
+ contextMenu: true,
377
+ keyDown: true
384
378
  },
385
379
 
386
380
  /** Uses the mouseWheel event to step up/down the value.
@@ -391,6 +385,18 @@ HNumericTextControl = HTextControl.extend({
391
385
  this.setValue(Math.round(this.validateText(_value)));
392
386
  },
393
387
 
388
+ keyDown: function(_key){
389
+ if(_key===Event.KEY_UP){
390
+ this.mouseWheel(1);
391
+ return true;
392
+ }
393
+ else if(_key===Event.KEY_DOWN){
394
+ this.mouseWheel(-1);
395
+ return true;
396
+ }
397
+ return false;
398
+ },
399
+
394
400
  /** = Description
395
401
  * Extends the validateText method to ensure the
396
402
  * input is a number.
@@ -7,8 +7,8 @@
7
7
  color: #000;
8
8
  background-color: transparent;
9
9
  vertical-align: middle;
10
- border: 0px;
11
- left: 0px; top: 0px;
10
+ border: 0;
11
+ left: 0; top: 0;
12
12
  #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:4px;bottom:2px;':'padding:2px;right:0px;bottom:0px;width:auto;height:auto;'}
13
13
  }
14
14
 
@@ -23,7 +23,8 @@
23
23
 
24
24
  .default .textcontrol_input_parent {
25
25
  position: absolute;
26
- #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;bottom:1px;':'left:-2px;top:-2px;right:-2px;bottom:-2px;'}
26
+ #{(BROWSER_TYPE.chrome||BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;bottom:1px;':'left:-2px;top:-2px;right:-2px;bottom:-2px;'}
27
+ #{(BROWSER_TYPE.chrome)?'top:1px;':''}
27
28
  }
28
29
 
29
30
  .default .textcontrol_bg {
@@ -34,10 +35,10 @@
34
35
  }
35
36
 
36
37
  .default .active>.textcontrol_bg {
37
- left: 0px; top: 0px; right: 0px; bottom: 0px;
38
- -moz-box-shadow: 0px 0px 3px #333;
39
- -webkit-box-shadow: 0px 0px 3px #333;
40
- box-shadow: 0px 0px 3px #333;
38
+ left: 0; top: 0; right: 0; bottom: 0;
39
+ -moz-box-shadow: 0 0 3px #333;
40
+ -webkit-box-shadow: 0 0 3px #333;
41
+ box-shadow: 0 0 3px #333;
41
42
  }
42
43
 
43
44
  .default .disabled .textcontrol_bg {
@@ -57,22 +58,22 @@
57
58
  }
58
59
 
59
60
  .default .textcontrol_nw {
60
- left: 0px; top: 0px;
61
- background-position: 0px 0px;
61
+ left: 0; top: 0;
62
+ background-position: 0 0;
62
63
  }
63
64
 
64
65
  .default .textcontrol_ne {
65
- right: 0px; top: 0px;
66
- background-position: -7px 0px;
66
+ right: 0; top: 0;
67
+ background-position: -7px 0;
67
68
  }
68
69
 
69
70
  .default .textcontrol_sw {
70
- left: 0px; bottom: 0px;
71
- background-position: 0px -7px;
71
+ left: 0; bottom: 0;
72
+ background-position: 0 -7px;
72
73
  }
73
74
 
74
75
  .default .textcontrol_se {
75
- right: 0px; bottom: 0px;
76
+ right: 0; bottom: 0;
76
77
  background-position: -7px -7px;
77
78
  }
78
79
 
@@ -88,13 +89,13 @@
88
89
  }
89
90
 
90
91
  .default .textcontrol_w {
91
- left: 0px;
92
- background-position: 0px 0px;
92
+ left: 0;
93
+ background-position: 0 0;
93
94
  }
94
95
 
95
96
  .default .textcontrol_e {
96
- right: 0px;
97
- background-position: -7px 0px;
97
+ right: 0;
98
+ background-position: -7px 0;
98
99
  }
99
100
 
100
101
 
@@ -109,13 +110,13 @@
109
110
  }
110
111
 
111
112
  .default .textcontrol_n {
112
- top: 0px;
113
- background-position: 0px 0px;
113
+ top: 0;
114
+ background-position: 0 0;
114
115
  }
115
116
 
116
117
  .default .textcontrol_s {
117
- bottom: 0px;
118
- background-position: 0px -7px;
118
+ bottom: 0;
119
+ background-position: 0 -7px;
119
120
  }
120
121
 
121
122