rsence-pre 2.3.0.16 → 2.3.0.17

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 (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