caboose-cms 0.1.101 → 0.1.102

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/app/assets/images/caboose/caboose_logo_small.png +0 -0
  2. data/app/assets/images/caboose/caboose_nav_black.png +0 -0
  3. data/app/assets/images/caboose/loading_small_white_on_black.gif +0 -0
  4. data/app/assets/images/caboose/loading_white_on_black.gif +0 -0
  5. data/app/assets/javascripts/caboose/admin.js +3 -2
  6. data/app/assets/javascripts/caboose/application.js +3 -24
  7. data/app/assets/javascripts/caboose/login.js +7 -3
  8. data/app/assets/javascripts/caboose/modal.js +36 -0
  9. data/app/assets/javascripts/caboose/modal_integration.js +56 -0
  10. data/app/assets/javascripts/caboose/model.form.user.js +36 -0
  11. data/app/assets/javascripts/caboose/register.js +29 -0
  12. data/app/assets/javascripts/caboose/station_modal.js +42 -0
  13. data/app/assets/stylesheets/caboose/admin.css +43 -2
  14. data/app/assets/stylesheets/caboose/application.css +6 -2
  15. data/app/assets/stylesheets/caboose/caboose.css +0 -271
  16. data/app/assets/stylesheets/caboose/login.css +23 -0
  17. data/app/assets/stylesheets/caboose/modal.css +68 -0
  18. data/app/assets/stylesheets/caboose/page_bar_generator.css +34 -0
  19. data/app/assets/stylesheets/caboose/register.css +25 -0
  20. data/app/assets/stylesheets/caboose/station_modal.css +104 -0
  21. data/app/assets/stylesheets/caboose/station_sidebar.css +232 -0
  22. data/app/controllers/caboose/login_controller.rb +4 -0
  23. data/app/controllers/caboose/register_controller.rb +52 -0
  24. data/app/controllers/caboose/station_controller.rb +12 -1
  25. data/app/views/caboose/login/index.html.erb +19 -18
  26. data/app/views/caboose/register/index.html.erb +32 -0
  27. data/app/views/caboose/station/index.html.erb +40 -0
  28. data/app/views/caboose/users/edit.html.erb +9 -0
  29. data/app/views/caboose/users/index.html.erb +6 -0
  30. data/app/views/layouts/caboose/_admin_top_nav.html.erb +14 -0
  31. data/app/views/layouts/caboose/_top_nav.html.erb +7 -2
  32. data/app/views/layouts/caboose/admin.html.erb +2 -2
  33. data/app/views/layouts/caboose/modal.html.erb +21 -0
  34. data/config/routes.rb +10 -6
  35. data/lib/caboose/engine.rb +1 -0
  36. data/lib/caboose/version.rb +1 -1
  37. metadata +202 -119
@@ -12,6 +12,8 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
+ //= require colorbox-rails
16
+ //= require caboose/modal_integration
15
17
  //= require jquery.ui.all
16
18
  //= require tinymce-jquery
17
19
  //= require class
@@ -33,5 +35,4 @@
33
35
  //= require attribute/textjs
34
36
  //= require attribute/h1
35
37
  //= require attribute/time
36
- //= require attribute/video
37
- //= require caboose/station
38
+ //= require attribute/video
@@ -12,27 +12,6 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
- //= require jquery.ui.all
16
- //= require tinymce-jquery
17
- //= require class
18
- //= require model
19
- //= require attribute
20
- //= require form
21
- //= require form/embedded
22
- //= require attribute/checkbox-multiple
23
- //= require attribute/checkbox
24
- //= require attribute/date-time
25
- //= require attribute/file
26
- //= require attribute/hidden
27
- //= require attribute/image
28
- //= require attribute/password
29
- //= require attribute/radio
30
- //= require attribute/rich-text
31
- //= require attribute/select
32
- //= require attribute/texarea
33
- //= require attribute/textjs
34
- //= require attribute/h1
35
- //= require attribute/time
36
- //= require attribute/video
37
- //= require caboose/station
38
- //= require application
15
+ //= require colorbox-rails
16
+ //= require caboose/modal_integration
17
+ //= require application
@@ -1,7 +1,10 @@
1
1
 
2
2
  function login()
3
3
  {
4
+ $('#message').hide();
4
5
  $('#message').html("<p class='loading'>Logging in...</p>");
6
+ $('#message').slideDown({ duration: 350 });
7
+ parent.$.fn.colorbox.resize({ height:"340px" })
5
8
 
6
9
  $.ajax({
7
10
  url: '/login',
@@ -9,13 +12,14 @@ function login()
9
12
  data: $('#login_form').serialize(),
10
13
  success: function(resp) {
11
14
  if (resp.error)
12
- $('#message').html("<p class='note error'>" + resp.error + "</p>");
15
+ $('#message').html("<p class='note error'>" + resp.error + "</p>");
13
16
  else if (resp.redirect != false)
14
- window.location = resp.redirect;
17
+ parent.window.location = resp.redirect;
18
+ else
19
+ parent.location.reload(true);
15
20
  },
16
21
  error: function() {
17
22
  $('#message').html("<p class='note error'>Error</p>");
18
23
  }
19
24
  });
20
25
  }
21
-
@@ -0,0 +1,36 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require jquery.ui.all
16
+ //= require tinymce-jquery
17
+ //= require class
18
+ //= require model
19
+ //= require attribute
20
+ //= require form
21
+ //= require form/embedded
22
+ //= require attribute/checkbox-multiple
23
+ //= require attribute/checkbox
24
+ //= require attribute/date-time
25
+ //= require attribute/file
26
+ //= require attribute/hidden
27
+ //= require attribute/image
28
+ //= require attribute/password
29
+ //= require attribute/radio
30
+ //= require attribute/rich-text
31
+ //= require attribute/select
32
+ //= require attribute/texarea
33
+ //= require attribute/textjs
34
+ //= require attribute/h1
35
+ //= require attribute/time
36
+ //= require attribute/video
@@ -0,0 +1,56 @@
1
+
2
+ $(document).ready(function() {
3
+ $('#caboose_login').colorbox({
4
+ iframe: true,
5
+ initialWidth: 400,
6
+ initialHeight: 200,
7
+ innerWidth: 400,
8
+ innerHeight: 200,
9
+ scrolling: false,
10
+ transition: 'fade',
11
+ closeButton: false,
12
+ onComplete: fix_colorbox,
13
+ opacity: 0.50
14
+ });
15
+ $('#caboose_register').colorbox({
16
+ iframe: true,
17
+ initialWidth: 400,
18
+ initialHeight: 324,
19
+ innerWidth: 400,
20
+ innerHeight: 324,
21
+ scrolling: false,
22
+ transition: 'fade',
23
+ closeButton: false,
24
+ onComplete: fix_colorbox,
25
+ opacity: 0.50
26
+ });
27
+ $.ajax({
28
+ url: '/station/plugin-count',
29
+ success: function (count) {
30
+ $('#caboose_station').colorbox({
31
+ iframe: true,
32
+ innerWidth: 200,
33
+ innerHeight: count * 50,
34
+ transition: 'fade',
35
+ closeButton: false,
36
+ onComplete: fix_colorbox,
37
+ opacity: 0.50
38
+ });
39
+ }
40
+ });
41
+ });
42
+
43
+ function fix_colorbox() {
44
+ $("#cboxTopLeft" ).css('background', '#111');
45
+ $("#cboxTopRight" ).css('background', '#111');
46
+ $("#cboxBottomLeft" ).css('background', '#111');
47
+ $("#cboxBottomRight" ).css('background', '#111');
48
+ $("#cboxMiddleLeft" ).css('background', '#111');
49
+ $("#cboxMiddleRight" ).css('background', '#111');
50
+ $("#cboxTopCenter" ).css('background', '#111');
51
+ $("#cboxBottomCenter" ).css('background', '#111');
52
+ $("#cboxClose" ).hide();
53
+ //$('#cboxLoadedContent').css('margin-bottom', 0);
54
+ //h = $('#cboxLoadedContent').height();
55
+ //$('#cboxLoadedContent').css('height', ''+(h+28)+'px');
56
+ }
@@ -0,0 +1,36 @@
1
+
2
+ Model.Form.User = Model.Form.extend({
3
+
4
+ class_name: 'Model.Form.User',
5
+
6
+ // Returns the form for editing a model or false for an embedded form.
7
+ edit: function()
8
+ {
9
+ var m = this.model;
10
+
11
+ var this2 = this;
12
+ var div = $('<div/>');
13
+ $(m.attributes).each(function(i, a) {
14
+ if (a.type == 'hidden')
15
+ return;
16
+ div.append(
17
+ $('<div/>')
18
+ .attr('id', m.name + '_' + m.id + '_' + a.name + '_container')
19
+ .click(function() { m.edit_attribute(a.name); })
20
+ .append($('<input/>')
21
+ .attr('placeholder', a.nice_name)
22
+ .val(a.value)
23
+ )
24
+ );
25
+ });
26
+
27
+ div.append($('<div/>').attr('id', this.message))
28
+ .append($('<p/>')
29
+ .append($('<input/>').attr('type', 'button').val('Back').click(function() { caboose_station.close_url('/pages/'+m.id+'/redirect'); }))
30
+ .append(' ')
31
+ .append($('<input/>').attr('type', 'button').val('Delete ' + m.name).click(function() { m.ajax_delete(); }))
32
+ );
33
+ return div;
34
+ }
35
+
36
+ });
@@ -0,0 +1,29 @@
1
+
2
+ function register()
3
+ {
4
+ resize_colorbox("<p class='loading'>Registering...</p>");
5
+
6
+ $.ajax({
7
+ url: '/register',
8
+ type: 'post',
9
+ data: $('#register_form').serialize(),
10
+ success: function(resp) {
11
+ if (resp.error)
12
+ resize_colorbox("<p class='note error'>" + resp.error + "</p>");
13
+ else if (resp.redirect != false)
14
+ window.location = resp.redirect;
15
+ else
16
+ parent.location.reload(true);
17
+ },
18
+ error: function() {
19
+ $('#message').html("<p class='note error'>Error</p>");
20
+ }
21
+ });
22
+ }
23
+
24
+ function resize_colorbox(html)
25
+ {
26
+ $('#message').html(html);
27
+ height = $('#modal_content').outerHeight(true);
28
+ parent.$.fn.colorbox.resize({ innerHeight: '' + height + 'px' })
29
+ }
@@ -0,0 +1,42 @@
1
+
2
+ $(document).ready(function() {
3
+
4
+ // Make the main nav open the subnav
5
+ $('#station > ul > li > a').each(function(i, a) {
6
+ var href = $(a).attr('href');
7
+ $(a).click(function(event) {
8
+ event.preventDefault();
9
+ id = $(this).parent().attr('id').replace('nav_item_', '');
10
+ caboose_subnav(id, href);
11
+ })
12
+ });
13
+
14
+ // Make the subnav links take over the entire page instead of just the iframe
15
+ //$('#station ul li ul li a').each(function(i, a) {
16
+ // var href = $(a).attr('href');
17
+ // $(a).click(function(event) {
18
+ // event.preventDefault();
19
+ // parent.window.location = href;
20
+ // })
21
+ //});
22
+
23
+ });
24
+
25
+ function caboose_subnav(id, href)
26
+ {
27
+ parent.$.fn.colorbox.resize({ innerHeight: plugin_count * 50, innerWidth: '400px' });
28
+
29
+ $('#station > ul > li').each(function(i, li) {
30
+ id2 = $(li).attr('id').replace('nav_item_', '');
31
+ if (id == id2)
32
+ $(li).addClass('selected');
33
+ else
34
+ $(li).removeClass('selected');
35
+ });
36
+
37
+ $('#station ul li ul').hide();
38
+ $('#station ul li#nav_item_' + id + ' ul').show();
39
+
40
+ var height = $('#station > ul').height();
41
+ $('#station ul li#nav_item_' + id + ' ul').height(height);
42
+ }
@@ -8,23 +8,64 @@
8
8
  * You're free to add application-wide styles to this file and they'll appear at the top of the
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
10
  *
11
+ *= require colorbox-rails
11
12
  *= require modeljs
12
13
  *= require caboose/fonts
13
14
  *= require caboose/caboose
14
15
  */
15
16
 
17
+ #cboxLoadedContent { margin-bottom: 0; }
18
+
16
19
  body {
17
20
  margin: 0;
18
21
  padding: 0;
19
22
  }
20
23
 
21
24
  #top_nav {
22
- display: none;
25
+ background: #000;
26
+ border-bottom: #333 1px solid;
27
+ height: 50px;
28
+ position: relative;
29
+ }
30
+
31
+ #top_nav .caboose_logo {
32
+ position: absolute;
33
+ top: 0;
34
+ left: 0;
35
+ width: 50px;
36
+ height: 50px;
37
+ background: url(/assets/caboose/caboose_logo_small.png);
38
+ }
39
+
40
+ #top_nav ul {
41
+ margin: 0;
42
+ padding: 0 8px 0 0;
43
+ list-style: none;
44
+ text-align: right;
23
45
  }
24
46
 
47
+ #top_nav ul li {
48
+ margin: 0;
49
+ padding: 0;
50
+ list-style: none;
51
+ display: inline-block;
52
+ }
53
+
54
+ #top_nav ul li a {
55
+ display: block;
56
+ margin: 8px 4px;
57
+ padding: 8px 16px;
58
+ border: #333 1px solid;
59
+ text-decoration: none;
60
+ height: 16px;
61
+ }
62
+
63
+ #top_nav ul li a { color: #ccc; border: #333 1px solid; background: #000; }
64
+ #top_nav ul li a:hover { color: #fff; border: #444 1px solid; background: #000; }
65
+ #top_nav ul li a:active { color: #fff; border: #666 1px solid; background: #333; }
66
+
25
67
  #content_wrapper {
26
68
  position: relative;
27
- margin-left: 208px;
28
69
  }
29
70
 
30
71
  #content {
@@ -7,9 +7,13 @@
7
7
  *
8
8
  * You're free to add application-wide styles to this file and they'll appear at the top of the
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
- *
11
- *= require modeljs
10
+ *
11
+ *= require colorbox-rails
12
+ *= require modeljs
12
13
  *= require caboose/fonts
14
+ *= require caboose/page_bar_generator
13
15
  *= require caboose/caboose
14
16
  *= require application
15
17
  */
18
+
19
+ #cboxLoadedContent { margin-bottom: 0; }
@@ -2,274 +2,3 @@
2
2
  body {
3
3
  font-family: Helvetica, Tahoma, Arial;
4
4
  }
5
-
6
- #wrapper {
7
- width: 960px;
8
- position: relative;
9
- }
10
-
11
- .page_links {
12
-
13
- }
14
-
15
- .page_links a {
16
- display: inline-block;
17
- margin: 0 2px;
18
- padding: 5px 8px 3px 8px;
19
-
20
- border: #505050 1px solid;
21
- background: #e1e1e1;
22
- color: #505050;
23
- text-decoration: none;
24
- }
25
-
26
- .page_links a:hover {
27
- background: #505050;
28
- color: #fff;
29
- }
30
-
31
- .page_links .middle_links a {
32
-
33
- }
34
-
35
- .page_links span.current_page {
36
- display: inline-block;
37
- padding: 5px 8px 3px 8px;
38
-
39
- border: #941403 1px solid;
40
- background: #941403;
41
- color: #fff;
42
- text-decoration: none;
43
- }
44
-
45
- #caboose_white {
46
- z-index: 99;
47
- }
48
-
49
- #caboose_station_wrapper {
50
- display: none;
51
- position: absolute;
52
- top: 0;
53
- right: 0;
54
- z-index: 100;
55
- width: 210px;
56
- height: 100%;
57
- overflow: hidden;
58
- }
59
-
60
- #caboose_station {
61
- width: 208px;
62
- height: 100%;
63
- background: #e1e1e1;
64
- border: #aaa 1px solid;
65
- font-family: BigNoodleTitling, Tahoma;
66
- }
67
-
68
- #caboose_station .caboose_logo {
69
- height: 100px;
70
- background-image: url('/assets/caboose/caboose_nav.png');
71
- background-position: 64px 0;
72
- margin: 0;
73
- padding: 0;
74
- border-bottom: #aaa 1px solid;
75
- }
76
-
77
- #caboose_station h2 {
78
- display: none;
79
- height: 40px;
80
- background-image: url('/assets/caboose/caboose_nav.png');
81
- background-position: 64px 0;
82
- margin: 0;
83
- padding: 80px 0 0 0;
84
- border-bottom: #aaa 1px solid;
85
-
86
- /* Hide the text. */
87
- /*
88
- text-indent: 100%;
89
- white-space: nowrap;
90
- overflow: hidden;
91
- */
92
- }
93
-
94
- #caboose_station h2 span {
95
- display: block;
96
- color: #941403;
97
- text-align: center;
98
- font-size: 20px;
99
- font-weight: normal;
100
- background: #e1e1e1;
101
- height: 40px;
102
- }
103
-
104
- #caboose_station ul.account {
105
- margin: 0;
106
- padding: 0;
107
- list-style: none;
108
- height: 33px;
109
- }
110
-
111
- #caboose_station ul.account li {
112
- margin: 0;
113
- padding: 0;
114
- list-style: none;
115
- float: left;
116
- border: 0;
117
- background: #ccc;
118
- }
119
-
120
- #caboose_station ul.account li a {
121
- display: block;
122
- margin: 0;
123
- padding: 0;
124
- height: 33px;
125
-
126
- /* Hide the text. */
127
- /*
128
- text-indent: 100%;
129
- white-space: nowrap;
130
- overflow: hidden;
131
- */
132
- font-family: BigNoodleTitling, Tahoma;
133
- font-size: 16px;
134
- color: #505050;
135
- background: #aaa;
136
- text-decoration: none;
137
- text-align: center;
138
- border-bottom: #cecece 1px solid;
139
- }
140
- #caboose_station ul.account li a span {
141
- padding-top: 8px;
142
- }
143
-
144
- #caboose_station ul.account li.my_account a { width: 103px; border-right: #828181 1px solid; }
145
- #caboose_station ul.account li.logout a { width: 103px; border-left: #cecece 1px solid; }
146
-
147
- #caboose_station ul.account li a:hover {
148
- color: #941403;
149
- }
150
-
151
- #caboose_station ul.admin {
152
- margin: 0;
153
- padding: 0;
154
- list-style: none;
155
- }
156
-
157
- #caboose_station ul.admin li {
158
- margin: 0;
159
- padding: 0;
160
- list-style: none;
161
- }
162
-
163
- #caboose_station ul.admin li ul {
164
- margin: 0;
165
- padding: 0;
166
- list-style: none;
167
- }
168
-
169
- #caboose_station ul.admin a {
170
- display: block !important;
171
- margin: 1px 0 0 0;
172
- padding: 8px 10px;
173
- color: #505050;
174
- text-decoration: none;
175
- }
176
-
177
- #caboose_station ul.admin a:hover {
178
- color: #941403;
179
- }
180
-
181
- #caboose_station ul.admin li a.top_level {
182
- background-image: url('/assets/caboose/caboose_nav.png');
183
- background-repeat: no-repeat;
184
- background-position: 0 0;
185
-
186
- width: 208px;
187
- height: 50px;
188
- margin: 0;
189
- padding: 0;
190
- border-top: #f7f7f7 1px solid;
191
- border-bottom: #aaa 1px solid;
192
- position: relative;
193
-
194
- /* Hide the text. */
195
- /*
196
- text-indent: 100%;
197
- white-space: nowrap;
198
- overflow: hidden;
199
- */
200
- font-family: BigNoodleTitling, Tahoma;
201
- font-size: 16px;
202
- }
203
-
204
- #caboose_station ul.admin li a.top_level span {
205
- display: block !important;
206
- margin: 0 0 0 60px;
207
- padding: 16px 0 0 0;
208
- height: 34px;
209
- background: #e1e1e1;
210
- vertical-align: middle;
211
- font-family: BigNoodleTitling, Tahoma;
212
- font-size: 16px;
213
- }
214
- #caboose_station ul.admin li a.top_level:hover span { color: #941403; }
215
- #caboose_station ul.admin li a.top_level:active span { color: #941403; }
216
-
217
- #caboose_station ul.admin li a.top_level { background-position: 0px -350px; }
218
- #caboose_station ul.admin li#nav_item_users a.top_level { background-position: 0px -100px; }
219
- #caboose_station ul.admin li#nav_item_roles a.top_level { background-position: 0px -150px; }
220
- #caboose_station ul.admin li#nav_item_permissions a.top_level { background-position: 0px -200px; }
221
- #caboose_station ul.admin li#nav_item_pages a.top_level { background-position: 0px -250px; }
222
- #caboose_station ul.admin li#nav_item_settings a.top_level { background-position: 0px -300px; }
223
- #caboose_station ul.admin li#nav_item_star a.top_level { background-position: 0px -350px; }
224
-
225
- #caboose_station ul.admin li a.top_level:hover { background-position: -250px -350px; }
226
- #caboose_station ul.admin li#nav_item_users a.top_level:hover { background-position: -250px -100px; }
227
- #caboose_station ul.admin li#nav_item_roles a.top_level:hover { background-position: -250px -150px; }
228
- #caboose_station ul.admin li#nav_item_permissions a.top_level:hover { background-position: -250px -200px; }
229
- #caboose_station ul.admin li#nav_item_pages a.top_level:hover { background-position: -250px -250px; }
230
- #caboose_station ul.admin li#nav_item_settings a.top_level:hover { background-position: -250px -300px; }
231
- #caboose_station ul.admin li#nav_item_star a.top_level:hover { background-position: -250px -350px; }
232
-
233
- #caboose_station ul.admin li a.top_level:active { background-position: -500px -350px; }
234
- #caboose_station ul.admin li#nav_item_users a.top_level:active { background-position: -500px -100px; }
235
- #caboose_station ul.admin li#nav_item_roles a.top_level:active { background-position: -500px -150px; }
236
- #caboose_station ul.admin li#nav_item_permissions a.top_level:active { background-position: -500px -200px; }
237
- #caboose_station ul.admin li#nav_item_pages a.top_level:active { background-position: -500px -250px; }
238
- #caboose_station ul.admin li#nav_item_settings a.top_level:active { background-position: -500px -300px; }
239
- #caboose_station ul.admin li#nav_item_star a.top_level:active { background-position: -500px -350px; }
240
-
241
- #caboose_station_wrapper.state_min a.close,
242
- #caboose_station_wrapper.state_left a.close,
243
- #caboose_station_wrapper.state_right a.close {
244
- display: block;
245
- background-image: url('/assets/caboose/caboose_nav.png');
246
- background-repeat: no-repeat;
247
- background-position: 0 0;
248
- width: 208px;
249
- height: 50px;
250
- font-family: BigNoodleTitling, Tahoma;
251
- text-decoration: none;
252
- }
253
-
254
- #caboose_station_wrapper a.close span {
255
- display: block;
256
- margin: 0 0 0 60px;
257
- padding: 16px 0 0 0;
258
- height: 34px;
259
-
260
- font-family: BigNoodleTitling, Tahoma;
261
- font-size: 16px;
262
- }
263
- #caboose_station_wrapper a.close span { background: #e1e1e1; color: #505050; }
264
- #caboose_station_wrapper a.close:hover span { background: #e1e1e1; color: #941403; }
265
- #caboose_station_wrapper a.close:active span { background: #d2d2d2; color: #941403; }
266
-
267
- #caboose_station_wrapper.state_left a.close { background-position: 0px -450px; }
268
- #caboose_station_wrapper.state_right a.close { background-position: 0px -400px; }
269
- #caboose_station_wrapper.state_min a.close { background-position: 0px -400px; }
270
- #caboose_station_wrapper.state_left a.close:hover { background-position: -250px -450px; }
271
- #caboose_station_wrapper.state_right a.close:hover { background-position: -250px -400px; }
272
- #caboose_station_wrapper.state_min a.close:hover { background-position: -250px -400px; }
273
- #caboose_station_wrapper.state_left a.close:active { background-position: -500px -450px; }
274
- #caboose_station_wrapper.state_right a.close:active { background-position: -500px -400px; }
275
- #caboose_station_wrapper.state_min a.close:active { background-position: -500px -400px; }