rsence-pre 2.3.0.16 → 2.3.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/VERSION +1 -1
  2. data/conf/default_conf.yaml +53 -200
  3. data/js/chat/chat_panel/chat_panel.coffee +120 -0
  4. data/js/chat/speech_bubble/speech_bubble.coffee +56 -0
  5. data/js/chat/speech_bubble/themes/default/speech_bubble.css +84 -0
  6. data/js/chat/speech_bubble/themes/default/speech_bubble.html +7 -0
  7. data/js/chat/speech_bubble/themes/default/user_anon.png +0 -0
  8. data/js/comm/sessionwatcher/sessionwatcher.js +1 -1
  9. data/js/comm/values/values.js +2 -34
  10. data/js/controls/numerictextcontrol/numerictextcontrol.coffee +109 -0
  11. data/js/controls/onoffbutton/onoffbutton.coffee +44 -0
  12. data/js/controls/onoffbutton/themes/default/onoffbutton.css +50 -0
  13. data/js/controls/onoffbutton/themes/default/onoffbutton.html +10 -0
  14. data/js/controls/textcontrol/textcontrol.coffee +291 -0
  15. data/js/core/class/class.js +1 -1
  16. data/js/core/elem/elem.coffee +83 -1
  17. data/js/core/util/util_methods/util_methods.coffee +103 -0
  18. data/js/datetime/calendar/calendar.coffee +3 -0
  19. data/js/datetime/calendar_pulldown/calendar_pulldown.coffee +62 -0
  20. data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.css +16 -0
  21. data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.html +1 -0
  22. data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.png +0 -0
  23. data/js/datetime/datepicker/datepicker.coffee +59 -0
  24. data/js/datetime/datetimepicker/datetimepicker.coffee +7 -0
  25. data/js/datetime/datetimepicker/datetimepicker.js +2 -2
  26. data/js/datetime/momentjs/momentjs.js +1400 -0
  27. data/js/datetime/timepicker/timepicker.coffee +7 -0
  28. data/js/foundation/application/application.js +1 -1
  29. data/js/foundation/control/valueaction/valueaction.js +8 -1
  30. data/js/foundation/control/valueresponder/valueresponder.js +1 -1
  31. data/js/foundation/view/morphanimation/morphanimation.js +9 -3
  32. data/js/foundation/view/view.js +43 -33
  33. data/js/views/scrollview/scrollview.js +10 -0
  34. data/lib/rsence/default_config.rb +10 -6
  35. data/plugins/client_pkg/lib/client_pkg_build.rb +2 -2
  36. metadata +22 -4
  37. data/js/controls/textcontrol/textcontrol.js +0 -420
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.0.16.pre
1
+ 2.3.0.17.pre
@@ -1,3 +1,4 @@
1
+ ---
1
2
  #### Server configuration
2
3
  #
3
4
  # The :base_url specifies the prefix for all default http responders.
@@ -27,7 +28,7 @@
27
28
  # A list of javascript dependencies to include in the html
28
29
  :deps: [ ]
29
30
  #
30
- # Boot library:
31
+ # Boot library (default dependency, the package to load into html):
31
32
  :boot_lib: rsence
32
33
  #
33
34
  # Default additional libraries to use:
@@ -42,6 +43,57 @@
42
43
  # how many milliseconds to wait before doing an idle poll
43
44
  :server_poll_interval: 2000 # 2 seconds
44
45
  #
46
+ # Mobile browser default settings, by device group and model:
47
+ :mobile:
48
+ #
49
+ # iOS devices, defaults to iPads:
50
+ ios:
51
+ scale: 1.0
52
+ scale_min: 1.0
53
+ scale_max: 1.0
54
+ #
55
+ # Horizontal mode:
56
+ landscape:
57
+ # Fullscreen (app) mode
58
+ fullscreen:
59
+ width: 1024
60
+ height: 672
61
+ browser:
62
+ width: 1024
63
+ height: 600
64
+ #
65
+ # Horizontal mode:
66
+ portrait:
67
+ # Fullscreen (app) mode
68
+ fullscreen:
69
+ width: 768
70
+ height: 1024
71
+ browser:
72
+ width: 768
73
+ height: 928
74
+ #
75
+ # Dummy iPad override (same as default)
76
+ ipad:
77
+ # nothing to override
78
+ iphone:
79
+ scale: 0.5
80
+ scale_min: 0.5
81
+ scale_max: 0.5
82
+ landscape:
83
+ fullscreen:
84
+ width: 960
85
+ height: 600
86
+ browser:
87
+ width: 960
88
+ height: 536
89
+ portrait:
90
+ fullscreen:
91
+ width: 640
92
+ height: 920
93
+ browser:
94
+ width: 640
95
+ height: 856
96
+ #
45
97
  # The settings for the daemon
46
98
  :daemon:
47
99
  #
@@ -208,202 +260,3 @@
208
260
  :broker_urls: { }
209
261
 
210
262
 
211
- #### Client package build configuration
212
- #
213
- #
214
- :client_pkg:
215
-
216
- # Source directories to scan
217
- :src_dirs: []
218
-
219
- # List of theme names to include and pack
220
- :theme_names:
221
- - default # Makes default_theme.js containing css and html templates
222
- - bright # Makes bright_theme.js containing css and html templates
223
-
224
- # List of packages to build
225
- :packages:
226
-
227
- # The core package, loaded by default using a script tag in index_html
228
- core:
229
-
230
- # RSence.*
231
- - rsence_ns
232
-
233
- - locale_settings # HLocaleSettings
234
-
235
- # RSence.Core
236
- - class # HClass
237
- - elem # ELEM
238
- - event # Event
239
-
240
- # RSence.Util
241
- - sha # SHA
242
-
243
- # RSence.Foundation
244
- - system # HSystem
245
- - valueresponder # HValueResponder
246
- - application # HApplication
247
-
248
- # COMM
249
- - comm # COMM
250
- - queue # COMM.Queue
251
- - session # COMM.Session
252
- - transporter # COMM.Transporter
253
- - sessionwatcher # COMM.SessionWatcher
254
- - urlresponder # COMM.URLResponder
255
- - autosync # ( automatic sync setup )
256
- - values # COMM.Values
257
- - value # HValue
258
- - jsloader # COMM.JSLoader
259
- - json_renderer # COMM.JSONRenderer
260
- - valuematrix # HValueMatrixInterface & HValueMatrix
261
- - point # HPoint
262
- - rect # HRect
263
- - thememanager # HThemeManager
264
- - markupview # HMarkupView
265
- - morphanimation # HMorphAnimation
266
- - viewdefaults # HViewDefaults
267
- - view # HView
268
- - eventresponder # HEventResponder
269
- - dummyvalue # HDummyValue
270
- - eventmanager # EVENT
271
- - controldefaults # HControlDefaults
272
- - control # HControl
273
- - valueaction # HValueAction
274
- - dyncontrol # HDynControl
275
- - centerview # HCenterView
276
- - scrollview # HScrollView
277
- - inlineview # HInlineView
278
-
279
- # The default collection of simple control widgets (components)
280
- controls:
281
- - button # HButton & HClickValueButton
282
- - checkbox # HCheckbox
283
- - radiobutton # HRadioButton
284
- - stringview # HStringView
285
- - textcontrol # HTextControl
286
- - passwordcontrol # HPasswordControl
287
- - textarea # HTextArea
288
- - searchfield # HSearchField
289
- - uploader # HUploader
290
- - slider # HSlider
291
- - vslider # HVSlider
292
- - progressbar # HProgressBar
293
- - progressindicator # HProgressIndicator
294
- - imageview # HImageView
295
- - stepper # HStepper
296
- - validatorview # HValidatorView
297
- - window # HWindow
298
- - tab # HTab & HTabView & HTabItem
299
- - sheet # HSheet
300
- - alert_sheet # HAlertSheet
301
- - confirm_sheet # HConfirmSheet
302
-
303
- # Server error message application ( the Reload / Reset Session dialog )
304
- servermessage:
305
- - reloadapp # ReloadApp
306
-
307
- # Special package for Internet Explorer 6.0
308
- iefix:
309
- - iefix
310
-
311
- # Date and time -related control widgets (components)
312
- # These are not complete; they are still under development
313
- # and will be included in the controls package when finalized.
314
- datetime:
315
- - datetimevalue # HDateTime
316
- - calendar # HCalendar
317
- - datetimepicker # HDateTimePicker
318
- - timesheet # HTimeSheet
319
- - timesheet_item # HTimeSheetItem
320
- - timesheet_item_edit # HTimeSheetItemEditor
321
-
322
- # List related control widgets (components)
323
- # These are not complete; they are still under development
324
- # and will be included in the controls package when finalized.
325
- lists:
326
- - listitems # HListItems
327
- - checkboxlist # HCheckboxList
328
- - radiobuttonlist # HRadiobuttonList
329
- - propertylist # HPropertyList
330
- - propertylisteditor # HPropertyEditor
331
- - minimenu # HMiniMenu
332
- - minimenuitem # HMiniMenuItem
333
- - popupmenu # HPopupMenu
334
- - menuitem # HMenuItem
335
-
336
- tables:
337
- - table # HTable
338
-
339
- # Graphics related control widgets (components)
340
- # These are not complete and there will probably never be any
341
- # serious efforts to support legacy browsers, like old IE versions,
342
- # unless someone is interested in sponsoring such efforts.
343
- graphics:
344
- - svgcontrol
345
-
346
- # Special packages that include other packages
347
- :compound_packages:
348
- rsence:
349
- - core
350
- - default_theme
351
- - controls
352
- - lists
353
- - datetime
354
- - tables
355
- - graphics
356
- - servermessage
357
- std_widgets:
358
- - default_theme
359
- - controls
360
- - lists
361
- - datetime
362
- - tables
363
- - graphics
364
- - servermessage
365
-
366
- # List of variables and other names beginning
367
- # with a underscore that should not be obfuscated
368
- :reserved_names:
369
- - _ID
370
- - _id
371
- - _WIDTH
372
- - _width
373
- - _HEIGHT
374
- - _height
375
- - _
376
-
377
- # List of file extensions considered graphics image types.
378
- # Used for theme graphics inclusion.
379
- :gfx_formats:
380
- - .jpg
381
- - .gif
382
- - .png
383
- - .swf
384
- - .svg
385
- - .pdf
386
-
387
- # If disabled, makes packages out of single source bundles automatically
388
- :dont_pack_undefined: true
389
-
390
- # Replacement prefix for obfuscated names
391
- :repl_prefix: _
392
-
393
- # If enabled, doesn't obfuscate code (useful for debugging)
394
- :no_obfuscation: false
395
-
396
- # If enabled, doesn't remove whitespace (useful for debugging)
397
- :no_whitespace_removal: false
398
-
399
- # If enabled, doesn't make gzipped packages
400
- :no_gzip: false
401
-
402
- # The strategy for gzip, a number between 0 and 9
403
- # - 0 means largest size, but fast compression
404
- # - 9 means smallest size, but slow compression
405
- # - any number in between is a compromise
406
- :gz_strategy: 9
407
-
408
-
409
-
@@ -0,0 +1,120 @@
1
+ HChatPanel = HScrollView.extend
2
+ textSelectable: true
3
+ controlDefaults: HScrollView.prototype.controlDefaults.extend
4
+ scrollX: false
5
+ scrollY: 'auto'
6
+ selfOrientation: 'right'
7
+ otherOrientation: 'left'
8
+ defaultEvents:
9
+ resize: true
10
+ resize: ->
11
+ @refreshValue()
12
+ refreshValue: ->
13
+ return unless @typeChr(@value) == 'h'
14
+ if @speechBubbles
15
+ for _bubble in @speechBubbles
16
+ _bubble.die()
17
+ if @userIcons
18
+ for _userIcon in @userIcons
19
+ _userIcon.die()
20
+ @speechBubbles = []
21
+ @userIcons = []
22
+ _users = @value.users
23
+ _themeUser = {}
24
+ _defaultBubble = HVM.clone( HSpeechBubble.prototype.controlDefaults.prototype.colors )
25
+ for _userId, _user of _users
26
+ _colors = HVM.clone( _defaultBubble )
27
+ if _user.color_bg?
28
+ _gradientStart = _user.color_bg
29
+ _gradientStep1 = @hexColorSubtract( _gradientStart, '#111' )
30
+ _gradientStep2 = @hexColorSubtract( _gradientStep1, '#030303' )
31
+ _gradientEnd = @hexColorAdd( _gradientStep2, '#111' )
32
+ _colors.start = _gradientStart
33
+ _colors.end = _gradientEnd
34
+ _colors.steps = [
35
+ [ 9, _gradientStep1 ]
36
+ [ 91, _gradientStep2 ]
37
+ ]
38
+ if _user.color_fg?
39
+ _colors.text = _user.color_fg
40
+ _themeUser[_userId] = _colors
41
+ _topPx = 3
42
+ _prevDate = new Date().getTime()/1000
43
+ _minWidth = @rect.width - 80
44
+ for [ _userId, _text, _date ], i in @value.lines
45
+ _nextLine = @value.lines[i+1]
46
+ if _nextLine?
47
+ _nextSame = ( _userId == _nextLine[0] )
48
+ else
49
+ _nextSame = false
50
+ _prevLine = @value.lines[i-1]
51
+ if _prevLine?
52
+ _prevSame = ( _userId == _prevLine[0] )
53
+ else
54
+ _nextSame = false
55
+ if _date?
56
+ # _date = new Date(_date*1000)
57
+ _prevDate = _date
58
+ else
59
+ _date = _prevDate
60
+ _userInfo = _users[_userId]
61
+ if _userInfo.self
62
+ _orientation = @options.selfOrientation
63
+ else
64
+ _orientation = @options.otherOrientation
65
+ if _orientation == 'right'
66
+ _rectBubble = [ 120, _topPx, null, 40, 40, null ]
67
+ else
68
+ _rectBubble = [ 40, _topPx, null, 40, 120, null ]
69
+ _bubble = HSpeechBubble.new( _rectBubble, @,
70
+ autoHeight: true
71
+ autoWidth: true
72
+ colors: _themeUser[_userId]
73
+ orientation: _orientation
74
+ value: _text
75
+ )
76
+ @speechBubbles.push( _bubble )
77
+ _bottomPx = _bubble.rect.bottom
78
+ _bottomDiff = _bottomPx - _topPx
79
+ if _bottomDiff < 48 and not _prevSame
80
+ _bubble.offsetBy( 0, 48 - _bottomDiff )
81
+ _bottomPx = _bubble.rect.bottom
82
+ _topPx = _bottomPx+3
83
+ if _nextSame
84
+ _bubble.setStyleOfPart('directionbg','display','none')
85
+ _bubble.setStyleOfPart('directionupperfg','display','none')
86
+ _bubble.setStyleOfPart('directionlowerfg','display','none')
87
+ else
88
+ _dateStr = HLocale.dateTime.formatDateTime( _date )
89
+ if _userInfo.name?
90
+ _name = _userInfo.name
91
+ else
92
+ _name = _userId
93
+ if _orientation == 'right'
94
+ _rectLabel = [ 120, _topPx, null, 18, 4, null ]
95
+ _rectIcon = [ null, _topPx-34, 32, 32, 2, null ]
96
+ _styleLabel = { textAlign: 'right' }
97
+ _labelText = _dateStr+'&nbsp;&bull;&nbsp;<b>'+_name+'</b>'
98
+ else
99
+ _rectLabel = [ 4, _topPx, null, 18, 120, null ]
100
+ _rectIcon = [ 2, _topPx-34, 32, 32 ]
101
+ _styleLabel = { textAlign: 'left' }
102
+ _labelText = '<b>'+_name+'</b>&nbsp;&bull;&nbsp;'+_dateStr
103
+ _iconStyle =
104
+ border: '2px solid black'
105
+ borderRadius: '5px'
106
+ if _userInfo.icon?
107
+ _iconSrc = _userInfo.icon
108
+ else
109
+ _iconSrc = @getThemeGfxFile('user_anon.png')
110
+ _icon = HImageView.new( _rectIcon, @,
111
+ style: _iconStyle
112
+ value: _iconSrc
113
+ )
114
+ @userIcons.push( _icon )
115
+ _label = HLabel.new( _rectLabel, @,
116
+ style: _styleLabel
117
+ label: _labelText
118
+ )
119
+ @userIcons.push( _label )
120
+ @scrollToBottom()
@@ -0,0 +1,56 @@
1
+ HSpeechBubble = HControl.extend
2
+ textSelectable: true
3
+ componentName: 'speech_bubble'
4
+ markupElemNames: [
5
+ 'bg'
6
+ 'subview'
7
+ 'value'
8
+ 'directionbg'
9
+ 'directionupperfg'
10
+ 'directionlowerfg'
11
+ ]
12
+ controlDefaults: HControlDefaults.extend
13
+ orientation: 'left'
14
+ colors:
15
+ start: '#ffffff'
16
+ steps: [
17
+ [ 9, '#efefef' ]
18
+ [ 91, '#e0e0e0' ]
19
+ ]
20
+ end: '#efefef'
21
+ text: '#333'
22
+ autoHeight: false
23
+ autoWidth: false
24
+ adjustHeight: ->
25
+ if @options.autoHeight or @options.autoWidth
26
+ _size = ELEM.getScrollSize( @markupElemIds.value )
27
+ if @options.autoHeight
28
+ _height = _size[1] + 3
29
+ @rect.setHeight( _height )
30
+ if @options.autoWidth
31
+ _width = _size[0] + 25
32
+ @rect.setWidth( _width )
33
+ @drawRect() if @options.autoHeight or @options.autoWidth
34
+ setOrientationClass: (_orientation)->
35
+ if _orientation == 'left'
36
+ ELEM.addClassName( @elemId, 'orientation_left' )
37
+ ELEM.delClassName( @elemId, 'orientation_right' )
38
+ else
39
+ ELEM.addClassName( @elemId, 'orientation_right' )
40
+ ELEM.delClassName( @elemId, 'orientation_left' )
41
+ refreshProperties: ->
42
+ _colors = @options.colors
43
+ [ _bgKey, _bgVal ] = ELEM._linearGradientStyle(_colors)
44
+ @setOrientationClass(@options.orientation)
45
+ @setStyleOfPart( 'directionbg', 'borderColor', "transparent transparent #{_colors.text} transparent" )
46
+ @setStyleOfPart( 'directionupperfg', 'borderColor', "transparent transparent #{_colors.steps[_colors.steps.length-1][1]} transparent" )
47
+ @setStyleOfPart( 'directionlowerfg', 'borderColor', "transparent transparent #{_colors.end} transparent" )
48
+ @setStyleOfPart( 'bg', _bgKey, _bgVal )
49
+ @setStyleOfPart( 'bg', 'borderColor', _colors.text )
50
+ @setStyleOfPart( 'value', 'color', _colors.text )
51
+ refresh: ->
52
+ @base()
53
+ @refreshProperties() if @markupElemIds?
54
+ refreshValue: ->
55
+ @base()
56
+ @adjustHeight() if @options.autoHeight
@@ -0,0 +1,84 @@
1
+ .default > .speechbubble,
2
+ .default > .speechbubble > .subview,
3
+ /*.default > .speechbubble > .text,*/
4
+ .default > .speechbubble > .direction_inner,
5
+ .default > .speechbubble > .direction_inner2,
6
+ .default > .speechbubble > .direction {
7
+ position: absolute;
8
+ }
9
+ .default > .speechbubble {
10
+ top: 0; bottom: 0;
11
+ overflow: visible;
12
+ border: 2px solid #333; border-radius: 9px;
13
+ }
14
+ .default.orientation_left > .speechbubble {
15
+ left: 16px; right: 0;
16
+ border-bottom-left-radius: 0;
17
+ }
18
+ .default.orientation_right > .speechbubble {
19
+ right: 16px; left: 0;
20
+ border-bottom-right-radius: 0;
21
+ }
22
+
23
+ .default > .speechbubble > .text {
24
+ padding-left: 6px; padding-top: 3px; padding-bottom: 3px; padding-right: 6px;
25
+ vertical-align: middle;
26
+ font-family: Arial, sans-serif;
27
+ font-size: 12px; font-weight: bold;
28
+ color: #333;
29
+ }
30
+ /*.default.orientation_left > .speechbubble > .text {
31
+ left: 0;
32
+ }
33
+ .default.orientation_left > .speechbubble > .text {
34
+ right: 0;
35
+ }
36
+ .default.orientation_left > .speechbubble {
37
+ text-align: left;
38
+ }
39
+ .default.orientation_right > .speechbubble {
40
+ text-align: right;
41
+ }*/
42
+ .default > .speechbubble > .subview {
43
+ left: 0; top: 0; right: 0; bottom: 0;
44
+ }
45
+ .default > .speechbubble > .direction {
46
+ width: 0; height: 0;
47
+ border-style: solid;
48
+ border-color: transparent transparent #333 transparent;
49
+ }
50
+ .default.orientation_left > .speechbubble > .direction {
51
+ left: -16px; bottom: -2px;
52
+ border-width: 0 0 16px 16px; /* top, right, bottom, left */
53
+ }
54
+ .default.orientation_right > .speechbubble > .direction {
55
+ right: -16px; bottom: -2px;
56
+ border-width: 0 16px 16px 0;
57
+ }
58
+ .default > .speechbubble > .direction_inner {
59
+ width: 0; height: 0; bottom: 0;
60
+ border-style: solid;
61
+ border-color: transparent transparent #e0e0e0 transparent;
62
+ }
63
+ .default.orientation_left > .speechbubble > .direction_inner {
64
+ left: -11px;
65
+ border-width: 0 0 11px 11px;
66
+ }
67
+ .default.orientation_right > .speechbubble > .direction_inner {
68
+ right: -11px;
69
+ border-width: 0 11px 11px 0;
70
+ }
71
+ .default > .speechbubble > .direction_inner2 {
72
+ bottom: 0;
73
+ width: 0; height: 0;
74
+ border-style: solid;
75
+ border-color: transparent transparent #efefef transparent;
76
+ }
77
+ .default.orientation_left > .speechbubble > .direction_inner2 {
78
+ left: -11px;
79
+ border-width: 0 0 4px 11px;
80
+ }
81
+ .default.orientation_right > .speechbubble > .direction_inner2 {
82
+ right: -11px;
83
+ border-width: 0 11px 4px 0;
84
+ }
@@ -0,0 +1,7 @@
1
+ <div class="speechbubble" #{BROWSER_TYPE.ie9?'style="filter:none;" ':' '}id="bg#{_ID}">
2
+ <div class="subview" id="subview#{_ID}"></div>
3
+ <div class="direction" id="directionbg#{_ID}"></div>
4
+ <div class="direction_inner" id="directionupperfg#{_ID}"></div>
5
+ <div class="direction_inner2" id="directionlowerfg#{_ID}"></div>
6
+ <div class="text" id="value#{_ID}"></div>
7
+ </div>
@@ -19,7 +19,7 @@ COMM.SessionWatcher = HApplication.extend({
19
19
 
20
20
  // gets the HValue represented by
21
21
  // sesTimeoutValueId (:client_time in server)
22
- this.sesTimeoutValue = COMM.Values.values[_sesTimeoutValueId];
22
+ this.sesTimeoutValue = this.getValueById(_sesTimeoutValueId);
23
23
  this.timeoutSecs = _timeoutSecs;
24
24
 
25
25
  // onIdle is called when HSystem's ticker count % 100 == 0
@@ -5,7 +5,7 @@
5
5
  ** Keeps track of all +HValue+ instances present.
6
6
  ***/
7
7
  //var//RSence.COMM
8
- COMM.Values = HClass.extend({
8
+ COMM.Values = UtilMethods.extend({
9
9
 
10
10
  /** No constructor, singleton class.
11
11
  **/
@@ -116,13 +116,6 @@ COMM.Values = HClass.extend({
116
116
  }
117
117
  },
118
118
 
119
- // List of primitive object types.
120
- _builtins: [
121
- 'b', // boolean
122
- 'n', // number
123
- 's' // string
124
- ],
125
-
126
119
  /** = Description
127
120
  * Use this method to detect the type of the object given.
128
121
  *
@@ -142,29 +135,7 @@ COMM.Values = HClass.extend({
142
135
  *
143
136
  **/
144
137
  type: function(_obj){
145
- if(_obj === null){
146
- return '~';
147
- }
148
- else if (_obj === undefined){
149
- return '-';
150
- }
151
- var _type = (typeof _obj).slice(0,1);
152
- if(~this._builtins.indexOf(_type)){
153
- return _type;
154
- }
155
- else if(_type==='o'){
156
- if(_obj.constructor === Array){
157
- return 'a'; // array
158
- }
159
- else if(_obj.constructor === Object){
160
- return 'h'; // hash
161
- }
162
- else if(_obj.constructor === Date){
163
- return 'd'; // date
164
- }
165
- return false;
166
- }
167
- return false;
138
+ return this.typeChr( _obj );
168
139
  },
169
140
 
170
141
  // Returns an encoded version of the array _arr as a string
@@ -485,8 +456,6 @@ COMM.Values = HClass.extend({
485
456
  _syncValues.push( [ _id, _value ] );
486
457
  }
487
458
  }
488
- // console.log('response:',_response);
489
- // console.log('encoded:',_this.encode(_response));
490
459
  return _this.encode(_response);
491
460
  },
492
461
 
@@ -524,7 +493,6 @@ COMM.Values = HClass.extend({
524
493
  }
525
494
  }
526
495
  });
527
-
528
496
  COMM.Values._detectNativeJSONSupport();
529
497
 
530
498
  // Backwards compatibility assignment for code that still