mitamirri 0.13.8 → 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. data/Capfile +4 -0
  2. data/Gemfile +29 -0
  3. data/README.rdoc +6 -55
  4. data/Rakefile +34 -21
  5. data/VERSION +1 -1
  6. data/app/controllers/admin/tracking/reports_controller.rb +78 -0
  7. data/app/controllers/admin/tracking/trackable_sessions_controller.rb +7 -0
  8. data/app/controllers/application_controller.rb +1 -8
  9. data/app/controllers/trackable_actions_controller.rb +0 -2
  10. data/app/helpers/application_helper.rb +21 -0
  11. data/app/helpers/layout_helper.rb +18 -0
  12. data/app/models/content_report.rb +35 -0
  13. data/app/models/content_stat.rb +4 -0
  14. data/app/models/destination.rb +4 -0
  15. data/app/models/intersite_traffic_report.rb +47 -0
  16. data/app/models/keyword_stat.rb +4 -0
  17. data/app/models/lead.rb +3 -0
  18. data/app/models/lead_stat.rb +5 -0
  19. data/app/models/leads_report.rb +32 -0
  20. data/app/models/location_stat.rb +37 -0
  21. data/app/models/referrer_stat.rb +4 -0
  22. data/app/models/report.rb +83 -0
  23. data/app/models/stat_base.rb +11 -0
  24. data/app/models/trackable_action.rb +114 -91
  25. data/app/models/trackable_base.rb +12 -0
  26. data/app/models/trackable_location.rb +7 -13
  27. data/app/models/trackable_session.rb +255 -171
  28. data/app/models/trackable_stat.rb +45 -27
  29. data/app/models/traffic_explorer_report.rb +92 -0
  30. data/app/models/traffic_summary_report.rb +142 -0
  31. data/app/models/user_agent_stat.rb +4 -0
  32. data/app/models/visit.rb +6 -0
  33. data/app/models/visit_stat.rb +5 -0
  34. data/app/models/visitor.rb +4 -0
  35. data/app/models/visitor_profile_report.rb +23 -0
  36. data/app/views/admin/tracking/reports/_content.html.erb +28 -0
  37. data/app/views/admin/tracking/reports/_conversion_rate.html.erb +30 -0
  38. data/app/views/admin/tracking/reports/_criteria.html.erb +33 -0
  39. data/app/views/admin/tracking/reports/_entrance_pages.html.erb +29 -0
  40. data/app/views/admin/tracking/reports/_exit_pages.html.erb +28 -0
  41. data/app/views/admin/tracking/reports/_explorer_criteria.html.erb +22 -0
  42. data/app/views/admin/tracking/reports/_explorer_summary.html.erb +22 -0
  43. data/app/views/admin/tracking/reports/_intersite_destinations.html.erb +28 -0
  44. data/app/views/admin/tracking/reports/_intersite_referrals.html.erb +30 -0
  45. data/app/views/admin/tracking/reports/_leads.html.erb +30 -0
  46. data/app/views/admin/tracking/reports/_locations.html.erb +47 -0
  47. data/app/views/admin/tracking/reports/_recent_visits.html.erb +33 -0
  48. data/app/views/admin/tracking/reports/_referring_keywords.html.erb +28 -0
  49. data/app/views/admin/tracking/reports/_referring_sites.html.erb +28 -0
  50. data/app/views/admin/tracking/reports/_traffic_summary.html.erb +26 -0
  51. data/app/views/admin/tracking/reports/_user_agents.html.erb +28 -0
  52. data/app/views/{trackable_sessions/_visits_graph.html.erb → admin/tracking/reports/_visits_by_kind.html.erb} +3 -3
  53. data/app/views/admin/tracking/reports/content.html.erb +12 -0
  54. data/app/views/admin/tracking/reports/explorer.html.erb +13 -0
  55. data/app/views/admin/tracking/reports/index.html.erb +16 -0
  56. data/app/views/admin/tracking/reports/intersite.html.erb +11 -0
  57. data/app/views/admin/tracking/reports/leads.html.erb +11 -0
  58. data/app/views/admin/tracking/reports/summary.html.erb +16 -0
  59. data/app/views/admin/tracking/reports/visitor_profile.html.erb +11 -0
  60. data/app/views/{trackable_sessions → admin/tracking/trackable_sessions}/show.html.erb +5 -4
  61. data/app/views/layouts/application.html.erb +51 -18
  62. data/config.ru +4 -0
  63. data/config/application.rb +13 -0
  64. data/config/boot.rb +13 -110
  65. data/config/cucumber.yml +10 -0
  66. data/config/deploy.rb +40 -0
  67. data/config/environment.rb +4 -23
  68. data/config/environments/development.rb +24 -13
  69. data/config/environments/production.rb +41 -20
  70. data/config/environments/test.rb +28 -24
  71. data/config/initializers/formats.rb +19 -0
  72. data/config/initializers/metric_fu.rb +9 -0
  73. data/config/initializers/secret_token.rb +7 -0
  74. data/config/initializers/session_store.rb +3 -10
  75. data/config/locales/en.yml +1 -1
  76. data/config/mongoid.yml +19 -0
  77. data/config/routes.rb +16 -10
  78. data/features/access_reports.feature +26 -0
  79. data/features/step_definitions/reports_steps.rb +9 -0
  80. data/features/step_definitions/web_steps.rb +219 -0
  81. data/features/support/env.rb +32 -0
  82. data/features/support/hooks.rb +1 -0
  83. data/features/support/paths.rb +33 -0
  84. data/features/traffic_summary_report.feature +43 -0
  85. data/init.rb +0 -7
  86. data/lib/mitamirri.rb +9 -12
  87. data/lib/mitamirri/engine.rb +7 -0
  88. data/lib/mitamirri/helper.rb +13 -29
  89. data/lib/mitamirri/railtie.rb +10 -0
  90. data/lib/tasks/cucumber.rake +60 -0
  91. data/lib/tasks/rcov.rake +44 -0
  92. data/mitamirri.gemspec +228 -100
  93. data/public/404.html +26 -0
  94. data/public/422.html +26 -0
  95. data/public/500.html +26 -0
  96. data/{config/database.yml → public/favicon.ico} +0 -0
  97. data/public/images/icons/add.png +0 -0
  98. data/public/images/icons/collapsed.gif +0 -0
  99. data/public/images/icons/delete.png +0 -0
  100. data/public/images/icons/drag.png +0 -0
  101. data/public/images/icons/edit.png +0 -0
  102. data/public/images/icons/expanded.gif +0 -0
  103. data/public/images/icons/help_icon.png +0 -0
  104. data/public/images/icons/link_icon.png +0 -0
  105. data/public/images/icons/move.png +0 -0
  106. data/public/images/icons/move_white.png +0 -0
  107. data/public/images/icons/note.png +0 -0
  108. data/public/images/icons/note_white.png +0 -0
  109. data/public/images/icons/notification_icon_sprite.png +0 -0
  110. data/public/images/icons/spinner.gif +0 -0
  111. data/public/images/icons/view.png +0 -0
  112. data/public/images/icons/warning.png +0 -0
  113. data/public/images/icons/warning_2.png +0 -0
  114. data/public/images/icons/warning_box.png +0 -0
  115. data/public/images/icons/warning_icon.png +0 -0
  116. data/public/images/icons/warning_white.png +0 -0
  117. data/public/images/layout/arrow_asc.png +0 -0
  118. data/public/images/layout/arrow_desc.png +0 -0
  119. data/public/images/layout/back.png +0 -0
  120. data/public/images/layout/black_bar.png +0 -0
  121. data/public/images/layout/branding.png +0 -0
  122. data/public/images/layout/breadcrumb_bg.png +0 -0
  123. data/public/images/layout/button_bg.png +0 -0
  124. data/public/images/layout/content_left_bg.png +0 -0
  125. data/public/images/layout/content_right_bg.png +0 -0
  126. data/public/images/layout/footer_bg.png +0 -0
  127. data/public/images/layout/h1_bg.png +0 -0
  128. data/public/images/layout/h2_bg.png +0 -0
  129. data/public/images/layout/h2_bg_for_table.png +0 -0
  130. data/public/images/layout/header_bg_grey.png +0 -0
  131. data/public/images/layout/header_bg_purple.png +0 -0
  132. data/public/images/layout/legend_bg.png +0 -0
  133. data/public/images/layout/menu_box_bg.png +0 -0
  134. data/public/images/layout/shadow_border.png +0 -0
  135. data/public/images/layout/shadow_border_2.png +0 -0
  136. data/public/images/layout/shadow_border_3.png +0 -0
  137. data/public/images/layout/shadow_border_4.png +0 -0
  138. data/public/images/layout/tab.png +0 -0
  139. data/public/images/layout/tab_active.png +0 -0
  140. data/public/images/layout/table_header.png +0 -0
  141. data/public/images/layout/text_field_bg.jpg +0 -0
  142. data/public/images/layout/text_field_error_bg.png +0 -0
  143. data/public/images/layout/th_bg.png +0 -0
  144. data/public/images/layout/th_bg_selected.png +0 -0
  145. data/public/images/menu_icons/content_report.png +0 -0
  146. data/public/images/menu_icons/content_report_on.png +0 -0
  147. data/public/images/menu_icons/funnel.png +0 -0
  148. data/public/images/menu_icons/funnel_on.png +0 -0
  149. data/public/images/menu_icons/intersite_traffic.png +0 -0
  150. data/public/images/menu_icons/intersite_traffic_on.png +0 -0
  151. data/public/images/menu_icons/leads.png +0 -0
  152. data/public/images/menu_icons/leads_on.png +0 -0
  153. data/public/images/menu_icons/traffic_explorer.png +0 -0
  154. data/public/images/menu_icons/traffic_explorer_on.png +0 -0
  155. data/public/images/menu_icons/traffic_summary.png +0 -0
  156. data/public/images/menu_icons/traffic_summary_on.png +0 -0
  157. data/public/images/menu_icons/visitor_profile.png +0 -0
  158. data/public/images/menu_icons/visitor_profile_on.png +0 -0
  159. data/public/index.html +8 -0
  160. data/public/javascripts/application.js +2 -0
  161. data/public/javascripts/controls.js +965 -0
  162. data/public/javascripts/dragdrop.js +974 -0
  163. data/public/javascripts/effects.js +1123 -0
  164. data/public/javascripts/prototype.js +6001 -0
  165. data/public/javascripts/rails.js +175 -0
  166. data/public/robots.txt +5 -0
  167. data/public/stylesheets/.gitkeep +0 -0
  168. data/public/stylesheets/application.css +876 -0
  169. data/public/stylesheets/core.css +1146 -0
  170. data/public/stylesheets/core_ie.css +52 -0
  171. data/public/stylesheets/csshover3.htc +14 -0
  172. data/public/stylesheets/mitamirri.css +37 -724
  173. data/public/stylesheets/mitamirri_print.css +3 -0
  174. data/script/cucumber +10 -0
  175. data/script/rails +6 -0
  176. data/spec/blueprints.rb +13 -0
  177. data/spec/helpers/application_helper_spec.rb +23 -35
  178. data/spec/{lib → models}/content_report_spec.rb +12 -8
  179. data/spec/{lib → models}/intersite_traffic_report_spec.rb +6 -9
  180. data/spec/{lib → models}/leads_report_spec.rb +11 -12
  181. data/spec/models/location_stat_spec.rb +18 -0
  182. data/spec/models/trackable_action_spec.rb +46 -14
  183. data/spec/models/trackable_base_spec.rb +27 -0
  184. data/spec/models/trackable_session_spec.rb +181 -57
  185. data/spec/{lib/session_report_spec.rb → models/traffic_explorer_report_spec.rb} +8 -25
  186. data/spec/spec_helper.rb +8 -28
  187. data/{lib/mitamirri/tasks.rb → tasks/mitamirri.rake} +6 -7
  188. data/vendor/plugins/.gitkeep +0 -0
  189. metadata +316 -77
  190. data/.gitignore +0 -26
  191. data/app/controllers/trackable_sessions_controller.rb +0 -100
  192. data/app/views/trackable_sessions/_keywords_graph.html.erb +0 -24
  193. data/app/views/trackable_sessions/_print_buttons.html.erb +0 -3
  194. data/app/views/trackable_sessions/_sessions.html.erb +0 -26
  195. data/app/views/trackable_sessions/_top_referrers.html.erb +0 -24
  196. data/app/views/trackable_sessions/_traffic_summary_all.html.erb +0 -64
  197. data/app/views/trackable_sessions/_traffic_summary_by_kind.html.erb +0 -48
  198. data/app/views/trackable_sessions/content.html.erb +0 -119
  199. data/app/views/trackable_sessions/explorer.html.erb +0 -67
  200. data/app/views/trackable_sessions/export.xls.erb +0 -5
  201. data/app/views/trackable_sessions/index.html.erb +0 -47
  202. data/app/views/trackable_sessions/intersite.html.erb +0 -97
  203. data/app/views/trackable_sessions/leads.html.erb +0 -98
  204. data/app/views/trackable_sessions/visitor_profile.html.erb +0 -114
  205. data/config/initializers/backtrace_silencers.rb +0 -7
  206. data/config/initializers/database.rb +0 -1
  207. data/config/initializers/inflections.rb +0 -10
  208. data/config/initializers/mime_types.rb +0 -5
  209. data/config/initializers/new_rails_defaults.rb +0 -21
  210. data/db/development.sqlite3 +0 -0
  211. data/db/migrate/20100810173533_create_trackable_sessions.rb +0 -23
  212. data/db/migrate/20100810173605_create_trackable_actions.rb +0 -20
  213. data/db/test.sqlite3 +0 -1
  214. data/lib/mitamirri/content_report.rb +0 -75
  215. data/lib/mitamirri/intersite_traffic_report.rb +0 -122
  216. data/lib/mitamirri/leads_report.rb +0 -90
  217. data/lib/mitamirri/session_report.rb +0 -219
  218. data/lib/mitamirri/stat_report.rb +0 -216
  219. data/lib/mitamirri/visitor_profile_report.rb +0 -127
  220. data/script/about +0 -4
  221. data/script/console +0 -3
  222. data/script/dbconsole +0 -3
  223. data/script/destroy +0 -3
  224. data/script/generate +0 -3
  225. data/script/performance/benchmarker +0 -3
  226. data/script/performance/profiler +0 -3
  227. data/script/plugin +0 -3
  228. data/script/runner +0 -3
  229. data/script/server +0 -3
  230. data/spec/controllers/trackable_actions_controller_spec.rb +0 -5
  231. data/spec/controllers/trackable_sessions_controller_spec.rb +0 -5
  232. data/spec/custom_matchers.rb +0 -23
  233. data/spec/lib/stat_report_spec.rb +0 -106
  234. data/spec/rcov.opts +0 -4
  235. data/spec/schema.rb +0 -34
  236. data/spec/spec.opts +0 -4
@@ -0,0 +1,175 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+ })();
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
File without changes
@@ -0,0 +1,876 @@
1
+ /* @override http://localhost:3000/stylesheets/application.css */
2
+
3
+ /* @group General Typography */
4
+
5
+ html {
6
+ height: 100%;
7
+ }
8
+
9
+ a:link {
10
+ color: #440000;
11
+ }
12
+
13
+ a:visited {
14
+ color: #444444;
15
+ }
16
+
17
+ body {
18
+ position: relative;
19
+ width: 100%;
20
+ height: 100%;
21
+ min-width: 1030px;
22
+ font-family: "Lucida Grande", Lucida, Verdana, sans-serif;
23
+ background-color: #ffffff;
24
+ /*background: #ffffff url(/images/layout/content_left_bg.png) repeat-y;*/
25
+ }
26
+
27
+ .bold {
28
+ font-weight: bold;
29
+ }
30
+
31
+ h1 {
32
+ color: #333333;
33
+ height: 50px;
34
+ margin-left: -6px;
35
+ margin-top: -15px;
36
+ padding-top: 13px;
37
+ padding-left: 1em;
38
+ padding-bottom: 15px;
39
+ width: 75%;
40
+ font-size: 1.2em;
41
+ background: url(../images/layout/h1_bg.png) no-repeat;
42
+ }
43
+
44
+ h2 {
45
+ color: #444444;
46
+ font-weight: bold;
47
+ font-size: 1.1em;
48
+ text-transform: uppercase;
49
+ }
50
+
51
+ h2.for_table {
52
+ position: relative;
53
+ margin-top: 0em;
54
+ margin-bottom: -25px;
55
+ z-index: 1000;
56
+ padding-top: 21px;
57
+ height: 40px;
58
+ background-image: url(../images/layout/h2_bg_for_table.png);
59
+ }
60
+
61
+ ul.bulleted {
62
+ list-style-type: disc;
63
+ margin-left: 1.5em;
64
+ }
65
+
66
+ ul.no_bullets {
67
+ list-style-type: none;
68
+ }
69
+
70
+ .subtle {
71
+ color: #999999;
72
+ }
73
+
74
+ .subtle a:link, .subtle a:visited {
75
+ text-decoration: none;
76
+ color: #999999;
77
+ }
78
+
79
+ .subtle a:hover {
80
+ color: #756b7f;
81
+ /*text-decoration: underline;*/
82
+ }
83
+
84
+ /* @end */
85
+
86
+ /* @group Layout Tricks */
87
+
88
+ div#container {
89
+ min-height: 100%;
90
+ position: relative;
91
+ /*background: url(/images/layout/content_right_bg.png) repeat-y right 0;*/
92
+ }
93
+
94
+ /* @end */
95
+
96
+
97
+ /* @group Header */
98
+
99
+ div#header {
100
+ margin-top: 0em;
101
+ background: none;
102
+ background-color: #000000;
103
+ height: 10px;
104
+ background: url(/images/layout/black_bar.png) repeat-x top;
105
+ width: 100%;
106
+ border: none;
107
+ }
108
+
109
+ div#page_header {
110
+ padding-top: 63px;
111
+ padding-left: 25px;
112
+ }
113
+
114
+ div#branding {
115
+ position: absolute;
116
+ top: 0px;
117
+ right: 2px;
118
+ margin: 0em;
119
+ padding: 0em;
120
+ /*background: url(/images/layout/branding.png) no-repeat;*/
121
+ height: 100px;
122
+ width: 310px;
123
+ }
124
+
125
+ /* @end */
126
+
127
+ /* @group Navbar */
128
+
129
+ div#navigation {
130
+ font-family: "Lucida Grande", Lucida, Verdana, sans-serif;
131
+ position: absolute;
132
+ top: -9px;
133
+ width: auto;
134
+ margin-top: 0em;
135
+ margin-left: 15px;
136
+ margin-right: auto;
137
+ background: none;
138
+ border: none;
139
+ }
140
+
141
+ div#navigation ul li {
142
+ background: none;
143
+ border: none;
144
+ }
145
+
146
+ div#navigation ul li:hover {
147
+ background: none !important;
148
+ color: #ffffff;
149
+ }
150
+
151
+ div#navigation ul li:hover a:link {
152
+ background: none !important;
153
+ }
154
+
155
+ div#navigation ul li a:link {
156
+ color: #aaaaaa;
157
+ text-decoration: none;
158
+ }
159
+
160
+ div#navigation ul li a:hover {
161
+ color: #ffffff !important;
162
+ background: none;
163
+ }
164
+
165
+ div#navigation ul li a:visited {
166
+ color: #aaaaaa;
167
+ text-decoration: none;
168
+ }
169
+
170
+ /* @end */
171
+
172
+ /* @group Breadcrumbs */
173
+
174
+ ol.breadcrumbs {
175
+ margin-top: 1.25em;
176
+ margin-left: 1em;
177
+ list-style: none;
178
+ height: 1em;
179
+ width: 100%;
180
+ }
181
+
182
+ ol.breadcrumbs li {
183
+ display: block;
184
+ float: left;
185
+ margin-top: -10px;
186
+ margin-left: -1px;
187
+ margin-right: 1em;
188
+ height: 2em;
189
+ width: auto;
190
+ padding-top: 12px;
191
+ padding-right: 2em;
192
+ background: url(../images/layout/breadcrumb_bg.png) no-repeat right 3px;
193
+ text-transform: uppercase;
194
+ }
195
+
196
+ ol.breadcrumbs a:link, ol.breadcrumbs a:visited {
197
+ display: block;
198
+ text-decoration: none;
199
+ font-size: .8em;
200
+ color: #aaaaaa !important;
201
+ }
202
+
203
+ /* @end */
204
+
205
+ /* @group Content Area */
206
+
207
+ div#content_area {
208
+ padding: 10px 25px 35px 25px;
209
+ height: 100%;
210
+ font-size: 11px;
211
+ }
212
+
213
+ /* @end */
214
+
215
+ /* @group Footer */
216
+
217
+ div#footer {
218
+ position: absolute;
219
+ bottom: 0px;
220
+ height: 35px;
221
+ width: 100%;
222
+ padding: 0px;
223
+ margin: 0px !important;
224
+ background: url(/images/layout/black_bar.png) repeat-x bottom;
225
+ color: #aaaaaa;
226
+ border: none;
227
+ font-family: "Lucida Grande", Lucida, Verdana, sans-serif;
228
+ font-size: 11px;
229
+ }
230
+
231
+ div#footer p {
232
+ margin: 12px 25px 0px 25px;
233
+ }
234
+
235
+ div#footer a:link, div#footer a:visited {
236
+ text-decoration: none;
237
+ color: #aaaaaa;
238
+ }
239
+
240
+ div#footer a:hover {
241
+ text-decoration: underline;
242
+ }
243
+
244
+ /* @end */
245
+
246
+
247
+ /* @group Forms */
248
+
249
+ .faux_legend {
250
+ background: url(../images/layout/legend_bg.png) no-repeat 0 0px;
251
+ margin-top: -28px;
252
+ margin-left: -27px;
253
+ padding: 0em;
254
+ padding-left: 27px;
255
+ padding-top: 11px;
256
+ padding-bottom: 10px;
257
+ width: 319px !important;
258
+ height: 13px;
259
+ font-weight: bold;
260
+ font-size: 10px;
261
+ color: #ffffff;
262
+ text-transform: uppercase;
263
+ text-shadow: #333333 0 0 5px;
264
+ border: none;
265
+ }
266
+
267
+ legend {
268
+ background: url(../images/layout/legend_bg.png) no-repeat 0 0px;
269
+ margin-left: -27px;
270
+ padding: 0em;
271
+ padding-left: 27px;
272
+ padding-top: 11px;
273
+ padding-bottom: 10px;
274
+ width: 319px !important;
275
+ height: 13px;
276
+ font-weight: bold;
277
+ font-size: 10px;
278
+ color: #ffffff;
279
+ text-transform: uppercase;
280
+ text-shadow: #333333 0 0 5px;
281
+ border: none;
282
+ }
283
+
284
+ legend a:hover, .faux_legend a:hover {
285
+ color: #ffffff !important;
286
+ }
287
+
288
+ .form_container {
289
+ background-color: #efefef;
290
+ border: 1px solid #dddddd;
291
+ padding: 1em 1em 1em 1em;
292
+ margin-top: 2.5em;
293
+ margin-bottom: 1.5em;
294
+ text-align: left;
295
+ }
296
+
297
+ .three_column {
298
+ width: 33%;
299
+ text-align: left;
300
+ padding: 0em;
301
+ margin: 0em;
302
+ }
303
+
304
+ .faux_field {
305
+ background-color: #fafafa;
306
+ border: 1px solid #dddddd;
307
+ width: 75%;
308
+ }
309
+
310
+ .button {
311
+ color: #555555 !important;
312
+ background-color: #cccccc;
313
+ border: 1px solid #aaaaaa;
314
+ background-image: url(../images/layout/button_bg.png);
315
+ font-size: 9px;
316
+ margin-top: 10px;
317
+ margin-bottom: 10px;
318
+ }
319
+
320
+ .button a:link {
321
+ color: #555555 !important;
322
+ cursor: pointer;
323
+ }
324
+
325
+ .button a:visited {
326
+ color: #555555 !important;
327
+ cursor: pointer;
328
+ }
329
+
330
+ .button a:visited {
331
+ color: #555555 !important;
332
+ cursor: pointer;
333
+ }
334
+
335
+ .button:active {
336
+ background-color: #999999;
337
+ border: 1px solid #333333;
338
+ background-image: url(../images/layout/button_bg.png);
339
+ }
340
+
341
+ fieldset.inline {
342
+ margin-right: 1em;
343
+ float: left;
344
+ }
345
+
346
+ /* @end */
347
+
348
+ /* @group Tables */
349
+
350
+ table {
351
+ border: 1px solid #aaaaaa !important;
352
+ }
353
+
354
+ th {
355
+ /*background: #7e7587 !important;*/
356
+ font-size: .8em !important;
357
+ padding: .5em;
358
+ color: #ffffff !important;
359
+ }
360
+
361
+ th.sortable_header {
362
+ cursor: pointer;
363
+ }
364
+
365
+ th.sortable_header:hover {
366
+ background: #444444;
367
+ }
368
+
369
+ table h1 {
370
+ font-size: 1.1em;
371
+ background: none;
372
+ padding: 0px;
373
+ margin: 0px !important;
374
+ height: auto;
375
+ }
376
+
377
+ td {
378
+ font-size: .8em;
379
+ }
380
+
381
+ table.report {
382
+ }
383
+
384
+ table.report td {
385
+ text-align: right;
386
+ border: 1px solid #cccccc;
387
+ }
388
+
389
+ table.report td.metric, table.report th.metric {
390
+ width: auto;
391
+ text-align: left !important;
392
+ }
393
+
394
+ table.report td.metric {
395
+ background-color: #e0e0e0;
396
+ }
397
+
398
+ table.report td.metric a:link, table.report td.metric a:visited {
399
+ text-decoration: none;
400
+ }
401
+
402
+ table.report td.metric a:hover {
403
+ text-decoration: underline;
404
+ }
405
+
406
+ table.report td.data, table.report th.data {
407
+ width: 6%;
408
+ text-align: right;
409
+ padding-right: 1em;
410
+ }
411
+
412
+ table.report td.gained {
413
+ background-color: #ccddcc;
414
+ }
415
+
416
+ table.report td.lost {
417
+ background-color: #ddcccc;
418
+ }
419
+
420
+ table.report td.new {
421
+ background-color: #fff5cc;
422
+ color: #444444;
423
+ }
424
+
425
+ table.results th {
426
+ }
427
+
428
+ table.report th.transparent {
429
+ background: none;
430
+ border: 1px solid #eeeeee;
431
+ border-bottom: 1px solid #cccccc;
432
+ }
433
+
434
+ table.bifurcated_results th {
435
+ vertical-align: middle;
436
+ text-align: center !important;
437
+ font-size: .75em;
438
+ background-color: #888888;
439
+ color: #ffffff;
440
+ padding: .3em;
441
+ margin: 0px;
442
+ text-transform: uppercase;
443
+ }
444
+
445
+ table.standard th {
446
+ text-align: left;
447
+ color: #444444;
448
+ font-weight: bold;
449
+ text-transform: uppercase;
450
+ font-size: .8em;
451
+ padding: 1em .5em 1em .5em;
452
+ background: #7e7587 url(../images/layout/table_header.png)}
453
+
454
+ table.standard th a {
455
+ color: #ffffff !important;
456
+ text-decoration: none !important;
457
+ }
458
+
459
+ table.standard th a.arrow-desc:after{
460
+ content: "\25BC";
461
+ margin-left: 1em;
462
+ }
463
+
464
+ table.standard th a.arrow-asc:after {
465
+ content: "\25B2";
466
+ margin-left: 1em;
467
+ }
468
+
469
+ table.standard tr:hover td, table.results tr:hover td {
470
+ background-color: #cccccc !important;
471
+ }
472
+
473
+ table.results tr.summary {
474
+ font-weight: bold;
475
+ }
476
+
477
+ table.results tr td {
478
+ height: 3em;
479
+ vertical-align: top;
480
+ }
481
+
482
+ table.standard td {
483
+ }
484
+
485
+ table.standard td a:link, table.standard td a:visited {
486
+ text-decoration: none;
487
+ }
488
+
489
+ table tr.parent {
490
+ border-top: 1px solid #cccccc;
491
+ }
492
+
493
+ table.drag_highlight {
494
+ /*background-color: #aaaaaa !important;*/
495
+ border: 3px solid #999999;
496
+ }
497
+
498
+ tr.drag_highlight td {
499
+ /*background-color: #cccccc !important;*/
500
+ border: none;
501
+ border-bottom: 3px solid #999999;
502
+ }
503
+
504
+ table.with_form_fields td {
505
+ padding: 1em;
506
+ padding-bottom: 0em;
507
+ }
508
+
509
+ /* @end */
510
+
511
+ /* @group Admin Menu */
512
+
513
+ div.menu_icon {
514
+ float: left;
515
+ width: 150px;
516
+ height: 50px;
517
+ text-align: center;
518
+ padding-top: 120px;
519
+ margin-right: 2em;
520
+ margin-top: 2em;
521
+ cursor: pointer;
522
+ }
523
+
524
+ div.menu_icon h2 {
525
+ background: none;
526
+ color: #7e7587;
527
+ text-shadow: 0;
528
+ margin-bottom: 0px;
529
+ padding-bottom: 3px;
530
+ margin-top: -10px;
531
+ }
532
+
533
+ div.menu_icon#locations {
534
+ background: url(../images/menu/locations.png) no-repeat center top;
535
+ }
536
+
537
+ div.menu_icon#pages {
538
+ background: url(../images/menu/pages.png) no-repeat center top;
539
+ }
540
+
541
+ div.menu_icon#publications {
542
+ background: url(../images/menu/publications.png) no-repeat center top;
543
+ }
544
+
545
+ div.menu_icon#nav_items {
546
+ background: url(../images/menu/nav_items.png) no-repeat center top;
547
+ }
548
+
549
+ div.menu_icon#redirects {
550
+ background: url(../images/menu/redirects.png) no-repeat center top;
551
+ }
552
+
553
+ div.menu_icon#style_guide {
554
+ background: url(../images/menu/style_guide.png) no-repeat center top;
555
+ }
556
+
557
+ div.menu_icon#configuration {
558
+ background: url(../images/menu/configuration.png) no-repeat center top;
559
+ }
560
+
561
+ div.menu_icon#users {
562
+ background: url(../images/menu/users.png) no-repeat center top;
563
+ }
564
+
565
+ div.menu_icon#users:hover {
566
+ background: url(../images/menu/users_on.png) no-repeat center top;
567
+ }
568
+
569
+ div.menu_icon#messages {
570
+ background: url(../images/menu/messages.png) no-repeat center top;
571
+ }
572
+
573
+ div.menu_icon#messages:hover {
574
+ background: url(../images/menu/messages_on.png) no-repeat center top;
575
+ }
576
+
577
+ div.menu_icon#reports {
578
+ background: url(../images/menu/reports.png) no-repeat center top;
579
+ }
580
+
581
+ div.menu_icon#reports:hover {
582
+ background: url(../images/menu/reports_on.png) no-repeat center top;
583
+ }
584
+
585
+ div.menu_icon#locations:hover {
586
+ background: url(../images/menu/locations_on.png) no-repeat center top;
587
+ }
588
+
589
+ div.menu_icon#pages:hover {
590
+ background: url(../images/menu/pages_on.png) no-repeat center top;
591
+ }
592
+
593
+ div.menu_icon#publications:hover {
594
+ background: url(../images/menu/publications_on.png) no-repeat center top;
595
+ }
596
+
597
+ div.menu_icon#nav_items:hover {
598
+ background: url(../images/menu/nav_items_on.png) no-repeat center top;
599
+ }
600
+
601
+ div.menu_icon#redirects:hover {
602
+ background: url(../images/menu/redirects_on.png) no-repeat center top;
603
+ }
604
+
605
+ div.menu_icon#style_guide:hover {
606
+ background: url(../images/menu/style_guide_on.png) no-repeat center top;
607
+ }
608
+
609
+ div.menu_icon#configuration:hover {
610
+ background: url(../images/menu/configuration_on.png) no-repeat center top;
611
+ }
612
+
613
+ /* @end */
614
+
615
+
616
+ /* @group Charts */
617
+
618
+ .geochart {
619
+ border: 1px solid #cccccc;
620
+ width: 556px;
621
+ float: left;
622
+ margin-right: 1em;
623
+ }
624
+
625
+
626
+ /* @end */
627
+
628
+
629
+ /* @group Components */
630
+
631
+ .float_right {
632
+ float: right !important;
633
+ }
634
+
635
+ .link_block {
636
+ clear: both;
637
+ height: 2.75em;
638
+ margin-left: -1.1em;
639
+ margin-right: -1.1em;
640
+ margin-top: 2em;
641
+ margin-bottom: -2.5em;
642
+ border: 1px solid #bbbbbb;
643
+ background: #ffffff url(../images/layout/shadow_border_4.png) repeat-x 0 2px;
644
+ }
645
+
646
+ div.link_block.attached {
647
+ margin: -17px 0px 1em 0px;
648
+ width: 99.9%;
649
+ }
650
+
651
+ div.link_block.attached.table {
652
+ margin: -1px 0px 1em 0px;
653
+ width: 99.9%;
654
+ }
655
+
656
+ table .link_block {
657
+ height: 3.1em;
658
+ margin-top: -3px;
659
+ margin-left: -5px;
660
+ margin-right: -5px;
661
+ margin-bottom: -5px;
662
+ }
663
+
664
+ a.back_button {
665
+ display: block;
666
+ text-decoration: none !important;
667
+ padding-left: 2.25em;
668
+ margin-top: 1em;
669
+ color: #9a9a9a;
670
+ background: url(../images/layout/back.png) no-repeat 0 -1px;
671
+ text-transform: uppercase;
672
+ }
673
+
674
+ input[type='submit'].link_button {
675
+ margin-top: 2px;
676
+ height: 28px !important;
677
+ padding-top: 0em !important;
678
+ /*padding: 0em 1.5em 0em 1.25em !important;*/
679
+ background-color: #dddddd;
680
+ border: none;
681
+ border-right: 1px solid #bbbbbb;
682
+ color: #440000;
683
+ }
684
+
685
+ a.link_button {
686
+ color: #440000 !important;
687
+ }
688
+
689
+ .link_button {
690
+ display: block;
691
+ float: left;
692
+ width: auto;
693
+ height: 2em !important;
694
+ padding-top: 1em;
695
+ padding-left: 1.25em;
696
+ padding-right: 1.5em;
697
+ text-decoration: none !important;
698
+ font-weight: bold;
699
+ font-size: 10px;
700
+ text-transform: uppercase;
701
+ border-right: 1px solid #bbbbbb;
702
+ }
703
+
704
+ .link_button:hover {
705
+ background-color: #cccccc;
706
+ margin-top: .1em;
707
+ height: 1.9em !important;
708
+ }
709
+
710
+ .menu_box {
711
+ width: 45%;
712
+ height: 100px;
713
+ float: left;
714
+ }
715
+
716
+ .no_bg {
717
+ margin-top: 0em;
718
+ background-color: #ffffff;
719
+ border: none !important;
720
+ }
721
+
722
+ div.jump_links {
723
+ position: absolute;
724
+ right: 25px;
725
+ color: #444444;
726
+ text-align: right;
727
+ margin-top: 1em;
728
+ }
729
+
730
+ .jump_links a:link, .jump_links a:visited {
731
+ color: #444444;
732
+ text-decoration: none;
733
+ }
734
+
735
+ .jump_links ul {
736
+ display: inline;
737
+ float: right;
738
+ list-style-type: none;
739
+ }
740
+
741
+ .jump_links ul li {
742
+ float: left;
743
+ margin-left: .25em;
744
+ margin-top: 2px;
745
+ height: 28px;
746
+ width: 75px;
747
+ cursor: pointer;
748
+ padding: 7px 1em 1em 1em;
749
+ text-align: center;
750
+ background: url(../images/layout/tab.png) no-repeat;
751
+ font-size: 9px;
752
+ }
753
+
754
+ .jump_links ul li.active {
755
+ background: url(../images/layout/tab_active.png) no-repeat;
756
+ margin-top: 2px;
757
+ height: 32px;
758
+ font-weight: bold;
759
+ }
760
+
761
+ img.move_icon {
762
+ margin-top: 4px;
763
+ visibility: hidden;
764
+ }
765
+
766
+ tr:hover td img.move_icon {
767
+ visibility: visible;
768
+ }
769
+
770
+ /* @end */
771
+
772
+ /* @group Info Icons */
773
+
774
+ div.note {
775
+ color: #000000;
776
+ margin-top: 1em;
777
+ margin-bottom: 2em;
778
+ background-color: #eeeeee;
779
+ border: 1px solid #999999;
780
+ font-size: 1em;
781
+ }
782
+
783
+ div.note span.notification {
784
+ float: left;
785
+ display: block;
786
+ margin-top: -25px;
787
+ margin-left: -15px;
788
+ height: 45px;
789
+ width: 40px;
790
+ }
791
+
792
+ span.notification.detail {
793
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat 0px 0px;
794
+ }
795
+
796
+ span.notification.info {
797
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat 0px -45px;
798
+ }
799
+
800
+ span.notification.reminder {
801
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat 0px -90px;
802
+ }
803
+
804
+ span.notification.error {
805
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -45px 0px;
806
+ }
807
+
808
+ span.notification.alert {
809
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -45px -45px;
810
+ }
811
+
812
+ span.notification.idea {
813
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -45px -90px;
814
+ }
815
+
816
+ span.notification.clarification {
817
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -90px 0px;
818
+ }
819
+
820
+ span.notification.question {
821
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -90px -45px;
822
+ }
823
+
824
+ span.notification.confusion {
825
+ background: url(../images/icons/notification_icon_sprite.png) no-repeat -90px -90px;
826
+ }
827
+
828
+ div.note p {
829
+ margin-top: 1.5em;
830
+ padding: 1em 1em .5em 1em;
831
+ }
832
+
833
+
834
+
835
+ /* @end */
836
+
837
+ /* @group Reports */
838
+
839
+ .negative {
840
+ color: #793441;
841
+ font-weight: bold;
842
+ }
843
+
844
+ .new {
845
+ color: #827e38;
846
+ font-weight: bold;
847
+ }
848
+
849
+ .positive {
850
+ color: #6b7c35;
851
+ font-weight: bold;
852
+ }
853
+
854
+ /* @end */
855
+
856
+
857
+ /* @group Rails Overrides */
858
+
859
+ div#flash_error {
860
+ border: 1px solid #aaaaaa;
861
+ color: #660000;
862
+ padding: 1em;
863
+ background-color: #eeeeee;
864
+ }
865
+
866
+ .errorExplanation h2 {
867
+ display: none;
868
+ }
869
+
870
+ .errorExplanation ul li {
871
+ margin-left: 1.5em;
872
+ list-style-type: disc;
873
+ }
874
+
875
+ /* @end */
876
+