romo 0.0.1 → 0.1.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/.gitignore +2 -0
  2. data/Gemfile +9 -1
  3. data/README.md +1 -1
  4. data/assets/css/romo/_mixins.scss +486 -0
  5. data/assets/css/romo/_vars.scss +159 -0
  6. data/assets/css/romo/base.scss +454 -0
  7. data/assets/css/romo/buttons.scss +211 -0
  8. data/assets/css/romo/datepicker.scss +73 -0
  9. data/assets/css/romo/dropdown.scss +33 -0
  10. data/assets/css/romo/forms.scss +193 -0
  11. data/assets/css/romo/grid.scss +271 -0
  12. data/assets/css/romo/grid_table.scss +129 -0
  13. data/assets/css/romo/labels.scss +41 -0
  14. data/assets/css/romo/lists.scss +37 -0
  15. data/assets/css/romo/modal.scss +32 -0
  16. data/assets/css/romo/normalize.scss +425 -0
  17. data/assets/css/romo/select.scss +89 -0
  18. data/assets/css/romo/sortable.scss +14 -0
  19. data/assets/css/romo/table.scss +99 -0
  20. data/assets/css/romo/tabs.scss +71 -0
  21. data/assets/css/romo/tooltip.scss +89 -0
  22. data/assets/css/romo/z_index.scss +26 -0
  23. data/assets/js/romo/base.js +177 -0
  24. data/assets/js/romo/datepicker.js +541 -0
  25. data/assets/js/romo/dropdown.js +309 -0
  26. data/assets/js/romo/dropdown_form.js +92 -0
  27. data/assets/js/romo/form.js +182 -0
  28. data/assets/js/romo/indicator.js +88 -0
  29. data/assets/js/romo/inline.js +77 -0
  30. data/assets/js/romo/inline_form.js +86 -0
  31. data/assets/js/romo/invoke.js +87 -0
  32. data/assets/js/romo/modal.js +311 -0
  33. data/assets/js/romo/modal_form.js +101 -0
  34. data/assets/js/romo/select.js +139 -0
  35. data/assets/js/romo/select_dropdown.js +325 -0
  36. data/assets/js/romo/sortable.js +201 -0
  37. data/assets/js/romo/tooltip.js +258 -0
  38. data/lib/romo/dassets.rb +64 -0
  39. data/lib/romo/version.rb +1 -1
  40. data/lib/romo.rb +9 -0
  41. data/romo.gemspec +4 -2
  42. data/test/support/.gitkeep +0 -0
  43. data/test/system/.gitkeep +0 -0
  44. data/test/unit/dassets_tests.rb +67 -0
  45. data/test/unit/romo_tests.rb +21 -0
  46. metadata +53 -10
@@ -0,0 +1,89 @@
1
+ @import 'css/romo/vars';
2
+ @import 'css/romo/mixins';
3
+
4
+ .romo-select-dropdown-options-parent {
5
+ display: none;
6
+ }
7
+
8
+ .romo-select-wrapper {
9
+ display: inline-block;
10
+ text-align: left;
11
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
12
+ cursor: pointer;
13
+ @include user-select(none);
14
+ position: relative;
15
+ }
16
+
17
+ .romo-select {
18
+ min-width: 50px;
19
+ font-weight: normal;
20
+ text-align: left;
21
+ padding-left: 6px;
22
+ padding-right: 6px;
23
+ }
24
+
25
+ .romo-select:focus{ @include input-focus; }
26
+
27
+ .romo-select:active,
28
+ .romo-select.active {
29
+ background-image: none;
30
+ outline: 0;
31
+ @include box-shadow((inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)));
32
+ }
33
+
34
+ .romo-select-text {
35
+ white-space: nowrap;
36
+ overflow: hidden;
37
+ display: inline-block;
38
+ width: 100%;
39
+ }
40
+ .romo-select-caret {
41
+ position: absolute;
42
+ right: 6px;
43
+ vertical-align: middle;
44
+ }
45
+
46
+ .romo-select-option-list {
47
+ cursor: pointer;
48
+ font-weight: normal;
49
+ padding: 4px 0;
50
+ @include user-select(none);
51
+
52
+ background-color: $inputBackground;
53
+ color: $inputColor;
54
+ }
55
+
56
+ .romo-select-option-list UL {
57
+ list-style: none outside none;
58
+ margin: 0;
59
+ padding: 0;
60
+ white-space: nowrap;
61
+ overflow: hidden;
62
+ }
63
+
64
+ .romo-select-option-list UL.romo-select-optgroup LI {
65
+ padding-left: $spacingSize1;
66
+ }
67
+
68
+ .romo-select-option-list LI {
69
+ @include select-option;
70
+ }
71
+
72
+ .romo-select-option-list LI[data-romo-select-item="optgroup"] {
73
+ @include select-optgroup;
74
+ }
75
+
76
+ .romo-select-option-list LI.romo-select-highlight {
77
+ background-color: $inputHighlightBackround;
78
+ color: $inputBackground;
79
+ }
80
+
81
+ .romo-select-option-list LI.disabled {
82
+ cursor: $notAllowedCursor;
83
+ }
84
+
85
+ .romo-select-option-list LI.disabled,
86
+ .romo-select-option-list LI.disabled.romo-select-highlight {
87
+ background-color: $inputBackground;
88
+ color: $disabledColor;
89
+ }
@@ -0,0 +1,14 @@
1
+ @import 'css/romo/mixins';
2
+
3
+ [data-romo-sortable-item="true"] {
4
+ @include user-select(text);
5
+ }
6
+
7
+ .romo-sortable-grab {
8
+ @include cursor-grab;
9
+ @include user-select(none);
10
+ }
11
+
12
+ .romo-sortable-grabbing {
13
+ @include cursor-grabbing;
14
+ }
@@ -0,0 +1,99 @@
1
+ @import 'css/romo/vars';
2
+ @import 'css/romo/mixins';
3
+
4
+ .romo-table { width: 100%; }
5
+
6
+ .romo-table th,
7
+ .romo-table td {
8
+ @include rm-pad;
9
+ @include align-left;
10
+ @include align-middle;
11
+ @include border1-bottom;
12
+ }
13
+
14
+ .romo-table th { @include font-weight(bold); }
15
+ .romo-table thead th { @include align-bottom; }
16
+
17
+ .romo-table-alt { @include bg-alt; }
18
+
19
+ .romo-table-striped tbody > tr:nth-child(odd) { @include bg-striped; }
20
+ .romo-table-striped.romo-table-striped-alt tbody > tr:nth-child(odd) { @include bg-base; }
21
+ .romo-table-striped.romo-table-striped-alt { @include bg-striped; }
22
+
23
+ .romo-table tr.romo-muted { @include bg-muted; }
24
+ .romo-table tr.romo-warning { @include bg-warning; }
25
+ .romo-table tr.romo-error { @include bg-error; }
26
+ .romo-table tr.romo-info { @include bg-info; }
27
+ .romo-table tr.romo-success { @include bg-success; }
28
+ .romo-table tr.romo-inverse { @include bg-inverse; }
29
+
30
+ .romo-table-hover tbody tr:hover,
31
+ .romo-table-hover.romo-table-alt tbody tr:hover { @include bg-hover; }
32
+
33
+ .romo-table-hover tbody tr.romo-muted:hover { @include bg-muted-hover; }
34
+ .romo-table-hover tbody tr.romo-warning:hover { @include bg-warning-hover; }
35
+ .romo-table-hover tbody tr.romo-error:hover { @include bg-error-hover; }
36
+ .romo-table-hover tbody tr.romo-info:hover { @include bg-info-hover; }
37
+ .romo-table-hover tbody tr.romo-success:hover { @include bg-success-hover; }
38
+ .romo-table-hover tbody tr.romo-inverse:hover { @include bg-inverse-hover; }
39
+
40
+ .romo-table-border,
41
+ .romo-table-border0,
42
+ .romo-table-border1,
43
+ .romo-table-border2 { border-collapse: collapse; *border-collapse: collapse; }
44
+
45
+ .romo-table-border,
46
+ .romo-table-border1 { @include border1-top; @include border1-left; }
47
+ .romo-table-border0 { @include border0-top; @include border0-left; }
48
+ .romo-table-border2 { @include border2-top; @include border2-left; }
49
+
50
+ .romo-table-border th, .romo-table-border td,
51
+ .romo-table-border1 th, .romo-table-border1 td { @include border1-bottom; @include border1-right; }
52
+ .romo-table-border0 th, .romo-table-border0 td { @include border0-bottom; @include border0-right; }
53
+ .romo-table-border2 th, .romo-table-border2 td { @include border2-bottom; @include border2-right; }
54
+
55
+ .romo-table-border-muted { @include border-muted; }
56
+ .romo-table-border-warning { @include border-warning; }
57
+ .romo-table-border-error { @include border-error; }
58
+ .romo-table-border-info { @include border-info; }
59
+ .romo-table-border-success { @include border-success; }
60
+ .romo-table-border-inverse { @include border-inverse; }
61
+ .romo-table-border-alt { @include border-alt; }
62
+
63
+ .romo-table-border-muted th, .romo-table-border-muted td { @include border-muted; }
64
+ .romo-table-border-warning th, .romo-table-border-warning td { @include border-warning; }
65
+ .romo-table-border-error th, .romo-table-border-error td { @include border-error; }
66
+ .romo-table-border-info th, .romo-table-border-info td { @include border-info; }
67
+ .romo-table-border-success th, .romo-table-border-success td { @include border-success; }
68
+ .romo-table-border-inverse th, .romo-table-border-inverse td { @include border-inverse; }
69
+ .romo-table-border-alt th, .romo-table-border-alt td { @include border-alt; }
70
+
71
+ .romo-table-pad th, .romo-table-pad td,
72
+ .romo-table-pad1 th, .romo-table-pad1 td { @include pad1; }
73
+ .romo-table-pad0 th, .romo-table-pad0 td { @include pad0; }
74
+ .romo-table-pad2 th, .romo-table-pad2 td { @include pad2; }
75
+ .romo-table-rm-pad th, .romo-table-rm-pad td { @include rm-pad; }
76
+
77
+ .romo-table-pad-top th, .romo-table-pad-top td,
78
+ .romo-table-pad1-top th, .romo-table-pad1-top td { @include pad1-top; }
79
+ .romo-table-pad0-top th, .romo-table-pad0-top td { @include pad0-top; }
80
+ .romo-table-pad2-top th, .romo-table-pad2-top td { @include pad2-top; }
81
+ .romo-table-rm-pad-top th, .romo-table-rm-pad-top td { @include rm-pad-top; }
82
+
83
+ .romo-table-pad-right th, .romo-table-pad-right td,
84
+ .romo-table-pad1-right th, .romo-table-pad1-right td { @include pad1-right; }
85
+ .romo-table-pad0-right th, .romo-table-pad0-right td { @include pad0-right; }
86
+ .romo-table-pad2-right th, .romo-table-pad2-right td { @include pad2-right; }
87
+ .romo-table-rm-pad-right th, .romo-table-rm-pad-right td { @include rm-pad-right; }
88
+
89
+ .romo-table-pad-bottom th, .romo-table-pad-bottom td,
90
+ .romo-table-pad1-bottom th, .romo-table-pad1-bottom td { @include pad1-bottom; }
91
+ .romo-table-pad0-bottom th, .romo-table-pad0-bottom td { @include pad0-bottom; }
92
+ .romo-table-pad2-bottom th, .romo-table-pad2-bottom td { @include pad2-bottom; }
93
+ .romo-table-rm-pad-bottom th, .romo-table-rm-pad-bottom td { @include rm-pad-bottom; }
94
+
95
+ .romo-table-pad-left th, .romo-table-pad-left td,
96
+ .romo-table-pad1-left th, .romo-table-pad1-left td { @include pad1-left; }
97
+ .romo-table-pad0-left th, .romo-table-pad0-left td { @include pad0-left; }
98
+ .romo-table-pad2-left th, .romo-table-pad2-left td { @include pad2-left; }
99
+ .romo-table-rm-pad-left th, .romo-table-rm-pad-left td { @include rm-pad-left; }
@@ -0,0 +1,71 @@
1
+ @import 'css/romo/vars';
2
+ @import 'css/romo/mixins';
3
+
4
+ /* tabs */
5
+
6
+ .romo-tabs {
7
+ display: block;
8
+ @include list-unstyled;
9
+ @include clearfix;
10
+
11
+ border-bottom: $tabDividerSize solid $tabBackgroundActive;
12
+ }
13
+
14
+ .romo-tabs > li {
15
+ float: left;
16
+ @include rm-push;
17
+ @include rm-pad;
18
+ }
19
+
20
+ .romo-tabs-pull-left > li { float: left; }
21
+ .romo-tabs-pull-right > li { float: right; }
22
+
23
+ .romo-tabs > li > a {
24
+ display: block;
25
+ cursor: pointer;
26
+
27
+ @include border1;
28
+ background-color: $tabBackground;
29
+ border-color: $tabBackground;
30
+ color: $tabColor;
31
+
32
+ &:hover,
33
+ &:focus {
34
+ outline: 0;
35
+ text-decoration: none;
36
+ background-color: $tabBackgroundHover;
37
+ border-color: $tabBackgroundHover;
38
+ }
39
+ }
40
+
41
+ .romo-tabs > li.active > a {
42
+ background-color: $tabBackgroundActive;
43
+ border-color: $tabBackgroundActive;
44
+ color: $tabColorActive;
45
+ }
46
+
47
+ .romo-tabs > li.disabled a,
48
+ .romo-tabs > li:disabled a {
49
+ color: $tabColorDisabled;
50
+ cursor: $notAllowedCursor;
51
+
52
+ &:hover,
53
+ &:focus {
54
+ background-color: $tabBackground;
55
+ border-color: $tabBackgroundHover;
56
+ }
57
+ }
58
+
59
+ .romo-tabs.romo-tabs-small > li > a,
60
+ .romo-tabs.romo-tabs0 > li > a { @include font-size0; @include font-weight0; @include line-height0; @include button-pad0; }
61
+ .romo-tabs > li > a,
62
+ .romo-tabs.romo-tabs1 > li > a { @include font-size1; @include font-weight1; @include line-height1; @include button-pad1; }
63
+ .romo-tabs.romo-tabs-large > li > a,
64
+ .romo-tabs.romo-tabs2 > li > a { @include font-size2; @include font-weight2; @include line-height2; @include button-pad2; }
65
+ .romo-tabs.romo-tabs3 > li > a { @include font-size3; @include font-weight3; @include line-height3; @include button-pad3; }
66
+
67
+ .romo-tabs.romo-tabs-stacked { @include rm-border; }
68
+ .romo-tabs.romo-tabs-stacked > li { float: none; }
69
+ .romo-tabs.romo-tabs-stacked > li > a { @include border1; border-color: $baseBorderColor; }
70
+ .romo-tabs.romo-tabs-stacked > li.active > a { border-color: $tabBackgroundActive; }
71
+ .romo-tabs.romo-tabs-stacked > li:not(:last-child) > a { @include rm-border-bottom; }
@@ -0,0 +1,89 @@
1
+ @import 'css/romo/vars';
2
+ @import 'css/romo/mixins';
3
+
4
+ .romo-tooltip {
5
+ cursor: pointer;
6
+ }
7
+
8
+ .romo-tooltip-popup {
9
+ position: absolute;
10
+ float: left;
11
+ @include border1-radius;
12
+
13
+ white-space: normal;
14
+ text-align: center;
15
+
16
+ font-size: 11px;
17
+ line-height: 1.4;
18
+ font-weight: 300;
19
+ }
20
+
21
+ .romo-tooltip-popup:not([class*="romo-tooltip-open"]) {
22
+ display: none;
23
+ }
24
+
25
+ .romo-tooltip-arrow {
26
+ position: absolute;
27
+ width: 0;
28
+ height: 0;
29
+ border-color: transparent;
30
+ border-style: solid;
31
+ }
32
+
33
+ .romo-tooltip-popup[data-romo-tooltip-position="top"] .romo-tooltip-arrow {
34
+ border-width: 6px 6px 0;
35
+ bottom: -6px;
36
+ left: 50%;
37
+ margin-left: -6px;
38
+ }
39
+
40
+ .romo-tooltip-popup[data-romo-tooltip-position="right"] .romo-tooltip-arrow {
41
+ border-width: 6px 6px 6px 0;
42
+ left: -6px;
43
+ top: 50%;
44
+ margin-top: -6px;
45
+ }
46
+
47
+ .romo-tooltip-popup[data-romo-tooltip-position="bottom"] .romo-tooltip-arrow {
48
+ border-width: 0 6px 6px;
49
+ top: -6px;
50
+ left: 50%;
51
+ margin-left: -6px;
52
+ }
53
+
54
+ .romo-tooltip-popup[data-romo-tooltip-position="left"] .romo-tooltip-arrow {
55
+ border-width: 6px 0 6px 6px;
56
+ right: -6px;
57
+ top: 50%;
58
+ margin-top: -6px;
59
+ }
60
+
61
+ .romo-tooltip-popup[data-romo-tooltip-alignment="left"] { @include align-left; }
62
+ .romo-tooltip-popup[data-romo-tooltip-alignment="center"] { @include align-center; }
63
+ .romo-tooltip-popup[data-romo-tooltip-alignment="right"] { @include align-right; }
64
+
65
+ .romo-tooltip-body {
66
+ padding: 6px 8px;
67
+ overflow: hidden;
68
+ }
69
+
70
+
71
+ /* theme */
72
+
73
+ .romo-tooltip-popup {
74
+ background-color: $tooltipBackground;
75
+ color: $tooltipColor;
76
+ }
77
+
78
+ .romo-tooltip-popup[data-romo-tooltip-position="top"] .romo-tooltip-arrow {
79
+ border-top-color: $tooltipBackground;
80
+ }
81
+ .romo-tooltip-popup[data-romo-tooltip-position="right"] .romo-tooltip-arrow {
82
+ border-right-color: $tooltipBackground;
83
+ }
84
+ .romo-tooltip-popup[data-romo-tooltip-position="bottom"] .romo-tooltip-arrow {
85
+ border-bottom-color: $tooltipBackground;
86
+ }
87
+ .romo-tooltip-popup[data-romo-tooltip-position="left"] .romo-tooltip-arrow {
88
+ border-left-color: $tooltipBackground;
89
+ }
@@ -0,0 +1,26 @@
1
+ @import 'css/romo/vars';
2
+ @import 'css/romo/mixins';
3
+
4
+ .romo-tooltip-popup {
5
+ z-index: $tooltipZIndex;
6
+ }
7
+ .romo-tooltip-popup * {
8
+ z-index: inherit;
9
+ }
10
+
11
+ .romo-dropdown-popup {
12
+ z-index: $dropdownZIndex;
13
+ }
14
+ .romo-dropdown-popup * {
15
+ z-index: inherit;
16
+ }
17
+
18
+ // 1300 is reserved for app specific things like nav bars, etc
19
+ // modals should appear on top of everything though
20
+
21
+ .romo-modal-popup {
22
+ z-index: $modalZIndex;
23
+ }
24
+ .romo-modal-popup * {
25
+ z-index: inherit;
26
+ }
@@ -0,0 +1,177 @@
1
+ (function() {
2
+ var Romo = function() {
3
+ this._eventCallbacks = [];
4
+ }
5
+
6
+ Romo.prototype.doInit = function() {
7
+ $.each(this._eventCallbacks, function(idx, eventCallback) {
8
+ $('body').on(eventCallback.eventName, eventCallback.callback);
9
+ });
10
+
11
+ this.triggerInitUI($('body'));
12
+ }
13
+
14
+ // init UI
15
+
16
+ Romo.prototype.onInitUI = function(callback) {
17
+ this._addEventCallback('romo:initUI', callback);
18
+ }
19
+
20
+ Romo.prototype.triggerInitUI = function(elems) {
21
+ elems.trigger('romo:initUI');
22
+ }
23
+
24
+ Romo.prototype.initUIElems = function(e, selector) {
25
+ var elems = $(e.target).find(selector).get();
26
+ if ($(e.target).is(selector)) {
27
+ elems.push(e.target)
28
+ }
29
+ return $(elems);
30
+ }
31
+
32
+ Romo.prototype.initHtml = function(elem, data) {
33
+ var htmlElems = $(data)
34
+ elem.html(htmlElems);
35
+ this.triggerInitUI(htmlElems);
36
+ return htmlElems;
37
+ }
38
+
39
+ Romo.prototype.initReplace = function(elem, data) {
40
+ var replacementElem = $(data);
41
+ elem.replaceWith(replacementElem);
42
+ this.triggerInitUI(replacementElem);
43
+ return replacementElem;
44
+ }
45
+
46
+ Romo.prototype.initPrepend = function(elem, data) {
47
+ var prependedElem = $(data);
48
+ elem.prepend(prependedElem);
49
+ this.triggerInitUI(prependedElem);
50
+ return prependedElem;
51
+ }
52
+
53
+ Romo.prototype.initAppend = function(elem, data) {
54
+ var appendedElem = $(data);
55
+ elem.append(appendedElem);
56
+ this.triggerInitUI(appendedElem);
57
+ return appendedElem;
58
+ }
59
+
60
+ Romo.prototype.initBefore = function(elem, data) {
61
+ var insertedElem = $(data);
62
+ elem.before(insertedElem);
63
+ this.triggerInitUI(insertedElem);
64
+ return insertedElem;
65
+ }
66
+
67
+ Romo.prototype.initAfter = function(elem, data) {
68
+ var insertedElem = $(data);
69
+ elem.after(insertedElem);
70
+ this.triggerInitUI(insertedElem);
71
+ return insertedElem;
72
+ }
73
+
74
+ // page handling
75
+
76
+ Romo.prototype.reloadPage = function() {
77
+ window.location = window.location;
78
+ }
79
+
80
+ Romo.prototype.redirectPage = function(redirectUrl) {
81
+ window.location = redirectUrl;
82
+ }
83
+
84
+ // param serialization
85
+
86
+ Romo.prototype.param = function(data, opts) {
87
+ var paramData = $.extend({}, data);
88
+
89
+ if (opts && opts.removeEmpty) {
90
+ $.each(paramData, function(key, value) {
91
+ if (value === '') {
92
+ delete paramData[key];
93
+ }
94
+ })
95
+ }
96
+
97
+ var paramString = $.param(paramData);
98
+
99
+ if (opts && opts.decodeValues) {
100
+ paramString = this.decodeParam(paramString);
101
+ }
102
+
103
+ return paramString;
104
+ }
105
+
106
+ Romo.prototype.decodeParam = function(string) {
107
+ return this.decodeParamMap.reduce(function(prev, curr) {
108
+ return prev.replace(curr[0], curr[1]);
109
+ }, string);
110
+ }
111
+
112
+ Romo.prototype.decodeParamMap = [
113
+ [/%20/g, '+'],
114
+ [/%21/g, '!'],
115
+ [/%24/g, '$'],
116
+ [/%28/g, '('],
117
+ [/%29/g, ')'],
118
+ [/%2A/g, '*'],
119
+ [/%2B/g, '+'],
120
+ [/%2C/g, ','],
121
+ [/%2D/g, '-'],
122
+ [/%2E/g, '.'],
123
+ [/%2F/g, '/'],
124
+ [/%5B/g, '['],
125
+ [/%5C/g, '\\'],
126
+ [/%5D/g, ']'],
127
+ [/%3A/g, ':'],
128
+ [/%3C/g, '<'],
129
+ [/%3E/g, '>'],
130
+ [/%3F/g, '?'],
131
+ [/%40/g, '@'],
132
+ [/%5E/g, '^'],
133
+ [/%5F/g, '_'],
134
+ [/%60/g, '`'],
135
+ [/%7B/g, '{'],
136
+ [/%7C/g, '|'],
137
+ [/%7D/g, '}'],
138
+ [/%7E/g, '~']
139
+ ];
140
+
141
+ // style handling
142
+
143
+ Romo.prototype.parseZIndex = function(elem) {
144
+ // for the case where the browser doesn't suck and can read inherited z-index
145
+ var val = parseInt(elem.css('z-index'));
146
+ if (!isNaN(val)) {
147
+ return val;
148
+ }
149
+
150
+ // for the case where the browser sucks and can't read inherited z-index - we'll do it for you!
151
+ var parentIndexes = $.map(elem.parents(), function(item) {
152
+ return item; // converts the collection to an array
153
+ }).reduce($.proxy(function(prev, curr) {
154
+ var pval = parseInt($(curr).css('z-index'));
155
+ if (!isNaN(pval)) {
156
+ prev.push(pval);
157
+ }
158
+ return prev;
159
+ }, this), []);
160
+ parentIndexes.push(0); // in case z-index is 'auto' all the way up
161
+ return parentIndexes[0];
162
+ }
163
+
164
+ // private
165
+
166
+ Romo.prototype._addEventCallback = function(name, callback) {
167
+ this._eventCallbacks.push({ eventName: name, callback: callback });
168
+ }
169
+
170
+ window.Romo = new Romo();
171
+ })();
172
+
173
+ $(function() {
174
+
175
+ Romo.doInit();
176
+
177
+ })