pwpush 0.1.0

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 (139) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/Capfile +8 -0
  4. data/Gemfile +51 -0
  5. data/Gemfile.lock +224 -0
  6. data/LICENSE.txt +674 -0
  7. data/Procfile +3 -0
  8. data/README.md +91 -0
  9. data/Rakefile +8 -0
  10. data/TODO +21 -0
  11. data/app.json +21 -0
  12. data/app/assets/flash/clippy.swf +0 -0
  13. data/app/assets/flash/github-clippy.swf +0 -0
  14. data/app/assets/images/apple-touch-icon-ipad.png +0 -0
  15. data/app/assets/images/apple-touch-icon-ipad3.png +0 -0
  16. data/app/assets/images/apple-touch-icon-iphone.png +0 -0
  17. data/app/assets/images/apple-touch-icon-iphone4.png +0 -0
  18. data/app/assets/images/black_wood.jpg +0 -0
  19. data/app/assets/images/broken_noise.png +0 -0
  20. data/app/assets/images/button_down.png +0 -0
  21. data/app/assets/images/button_over.png +0 -0
  22. data/app/assets/images/button_up.png +0 -0
  23. data/app/assets/images/concrete_wall_3.png +0 -0
  24. data/app/assets/images/favicon.ico +0 -0
  25. data/app/assets/images/forkme.png +0 -0
  26. data/app/assets/images/outlets.png +0 -0
  27. data/app/assets/images/pwpush_favicon.jpg +0 -0
  28. data/app/assets/images/pwpush_logo.png +0 -0
  29. data/app/assets/images/rails.png +0 -0
  30. data/app/assets/javascripts/api.js.coffee +4 -0
  31. data/app/assets/javascripts/application.js +52 -0
  32. data/app/assets/javascripts/errors.js.coffee +3 -0
  33. data/app/assets/javascripts/fd-slider.js +1299 -0
  34. data/app/assets/javascripts/jquery-cookie.js +117 -0
  35. data/app/assets/javascripts/jquery.noty.js +520 -0
  36. data/app/assets/javascripts/layouts/top.js +34 -0
  37. data/app/assets/javascripts/passwords.js +62 -0
  38. data/app/assets/javascripts/spoiler.js +101 -0
  39. data/app/assets/javascripts/themes/default.js +156 -0
  40. data/app/assets/stylesheets/api.css.scss +3 -0
  41. data/app/assets/stylesheets/application.css +7 -0
  42. data/app/assets/stylesheets/errors.css.scss +3 -0
  43. data/app/assets/stylesheets/fd-slider.css +650 -0
  44. data/app/assets/stylesheets/global.css.scss +52 -0
  45. data/app/assets/stylesheets/passwords.css.scss +114 -0
  46. data/app/assets/stylesheets/users.css.scss +11 -0
  47. data/app/controllers/api_controller.rb +30 -0
  48. data/app/controllers/application_controller.rb +23 -0
  49. data/app/controllers/errors_controller.rb +7 -0
  50. data/app/controllers/passwords_controller.rb +153 -0
  51. data/app/controllers/users/omniauth_callbacks_controller.rb +71 -0
  52. data/app/controllers/views_controller.rb +11 -0
  53. data/app/helpers/api_helper.rb +2 -0
  54. data/app/helpers/application_helper.rb +31 -0
  55. data/app/helpers/errors_helper.rb +2 -0
  56. data/app/helpers/passwords_helper.rb +2 -0
  57. data/app/helpers/views_helper.rb +2 -0
  58. data/app/mailers/.gitkeep +0 -0
  59. data/app/models/.gitkeep +0 -0
  60. data/app/models/password.rb +51 -0
  61. data/app/models/user.rb +20 -0
  62. data/app/models/view.rb +4 -0
  63. data/app/views/api/config.html.haml +2 -0
  64. data/app/views/api/create.html.haml +2 -0
  65. data/app/views/api/generate.html.haml +2 -0
  66. data/app/views/api/list.html.haml +2 -0
  67. data/app/views/devise/confirmations/new.html.erb +12 -0
  68. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  69. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  70. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  71. data/app/views/devise/passwords/edit.html.erb +16 -0
  72. data/app/views/devise/passwords/new.html.erb +12 -0
  73. data/app/views/devise/registrations/edit.html.erb +25 -0
  74. data/app/views/devise/registrations/new.html.haml +50 -0
  75. data/app/views/devise/sessions/new.html.haml +51 -0
  76. data/app/views/devise/shared/_links.erb +25 -0
  77. data/app/views/devise/unlocks/new.html.erb +12 -0
  78. data/app/views/errors/error_404.html.haml +21 -0
  79. data/app/views/errors/error_500.html.haml +21 -0
  80. data/app/views/layouts/_ga.html.erb +14 -0
  81. data/app/views/layouts/application.html.haml +41 -0
  82. data/app/views/pages/about.html.haml +159 -0
  83. data/app/views/passwords/edit.html.haml +7 -0
  84. data/app/views/passwords/index.html.haml +17 -0
  85. data/app/views/passwords/new.html.haml +68 -0
  86. data/app/views/passwords/show.html.haml +58 -0
  87. data/app/views/shared/_auth_providers.html.haml +9 -0
  88. data/app/views/shared/_messages.html.haml +4 -0
  89. data/app/views/views/_form.html.erb +16 -0
  90. data/app/views/views/edit.html.erb +8 -0
  91. data/app/views/views/index.html.erb +21 -0
  92. data/app/views/views/new.html.erb +5 -0
  93. data/app/views/views/show.html.erb +20 -0
  94. data/bin/bundle +13 -0
  95. data/config.ru +4 -0
  96. data/config/application.rb +51 -0
  97. data/config/boot.rb +6 -0
  98. data/config/capistrano_database_yml.rb +158 -0
  99. data/config/database.yml +19 -0
  100. data/config/deploy.rb +140 -0
  101. data/config/deploy/database.yml.erb +52 -0
  102. data/config/deploy/local_cap_config.rb.example +54 -0
  103. data/config/environment.rb +42 -0
  104. data/config/environments/development.rb +30 -0
  105. data/config/environments/engineyard.rb +60 -0
  106. data/config/environments/private.rb +60 -0
  107. data/config/environments/production.rb +60 -0
  108. data/config/environments/test.rb +39 -0
  109. data/config/initializers/backtrace_silencers.rb +7 -0
  110. data/config/initializers/devise.rb +211 -0
  111. data/config/initializers/inflections.rb +10 -0
  112. data/config/initializers/mime_types.rb +5 -0
  113. data/config/initializers/secret_token.rb +7 -0
  114. data/config/initializers/session_store.rb +8 -0
  115. data/config/initializers/wrap_parameters.rb +14 -0
  116. data/config/locales/devise.en.yml +58 -0
  117. data/config/locales/en.yml +5 -0
  118. data/config/routes.rb +16 -0
  119. data/config/unicorn.rb +22 -0
  120. data/db/migrate/20111128183630_create_passwords.rb +12 -0
  121. data/db/migrate/20111228183300_create_views.rb +16 -0
  122. data/db/migrate/20120102210558_devise_create_users.rb +54 -0
  123. data/db/migrate/20120102210559_create_rails_admin_histories_table.rb +18 -0
  124. data/db/migrate/20120102220933_add_admin_to_user.rb +9 -0
  125. data/db/migrate/20120129211750_add_lockable_to_users.rb +10 -0
  126. data/db/migrate/20120220172426_add_user_to_password.rb +11 -0
  127. data/db/migrate/20121105144421_add_deleted_to_password.rb +5 -0
  128. data/db/migrate/20150323145847_add_first_view_flag.rb +9 -0
  129. data/db/migrate/20160214205926_add_deletable_to_password.rb +5 -0
  130. data/db/schema.rb +78 -0
  131. data/db/seeds.rb +7 -0
  132. data/log/.gitkeep +0 -0
  133. data/public/404.html +26 -0
  134. data/public/422.html +26 -0
  135. data/public/500.html +26 -0
  136. data/public/favicon.ico +0 -0
  137. data/public/robots.txt +3 -0
  138. data/script/rails +6 -0
  139. metadata +226 -0
@@ -0,0 +1,34 @@
1
+ ;(function($) {
2
+
3
+ $.noty.layouts.top = {
4
+ name: 'top',
5
+ options: {},
6
+ container: {
7
+ object: '<ul id="noty_top_layout_container" />',
8
+ selector: 'ul#noty_top_layout_container',
9
+ style: function() {
10
+ $(this).css({
11
+ top: 0,
12
+ left: '5%',
13
+ position: 'fixed',
14
+ width: '90%',
15
+ height: 'auto',
16
+ margin: 0,
17
+ padding: 0,
18
+ listStyleType: 'none',
19
+ zIndex: 9999999
20
+ });
21
+ }
22
+ },
23
+ parent: {
24
+ object: '<li />',
25
+ selector: 'li',
26
+ css: {}
27
+ },
28
+ css: {
29
+ display: 'none'
30
+ },
31
+ addClass: ''
32
+ };
33
+
34
+ })(jQuery);
@@ -0,0 +1,62 @@
1
+ // # Place all the behaviors and hooks related to the matching controller here.
2
+ // # All this logic will automatically be available in application.js.
3
+ // # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
4
+
5
+ function saveExpirations()
6
+ {
7
+ days_value = document.getElementById("password_expire_after_days").value
8
+ views_value = document.getElementById("password_expire_after_views").value
9
+ dbv = document.getElementById("password_deletable_by_viewer")
10
+
11
+ $.cookie('pwpush_days', days_value, { expires: 365 });
12
+ $.cookie('pwpush_views', views_value, { expires: 365 });
13
+ $.cookie('pwpush_dbv', dbv.checked.toString(), { expires: 365 });
14
+
15
+ e = document.getElementById("cookie-save")
16
+ e.innerHTML = "Saved!"
17
+ return true;
18
+ }
19
+
20
+ $(document).ready(function() {
21
+ days = $.cookie('pwpush_days');
22
+ views = $.cookie('pwpush_views');
23
+
24
+ de = document.getElementById("password_expire_after_days")
25
+ dr = document.getElementById("daysrange")
26
+ if (days) {
27
+ de.value = days
28
+ dr.innerHTML = days + " Days"
29
+ } else {
30
+ showDaysValue(de.value)
31
+ }
32
+
33
+ ve = document.getElementById("password_expire_after_views")
34
+ vr = document.getElementById("viewsrange")
35
+ if (views) {
36
+ ve.value = views
37
+ vr.innerHTML = views + " Views"
38
+ } else {
39
+ showViewsValue(ve.value)
40
+ }
41
+
42
+ dbv_checkbox = document.getElementById('password_deletable_by_viewer')
43
+ dbv_check_state = $.cookie('pwpush_dbv')
44
+ if (dbv_check_state) {
45
+ if (dbv_check_state == "false") {
46
+ dbv = false
47
+ } else {
48
+ dbv = true
49
+ }
50
+ if (dbv_checkbox.checked != dbv) {
51
+ dbv_checkbox.click()
52
+ }
53
+ }
54
+ });
55
+
56
+ $('#password_payload').keypress(function() {
57
+ if ($('#password_payload').val().length > 250) {
58
+ noty({text: 'Passwords can be up to 250 characters maximum in length.', type: 'warning'});
59
+ $.noty.clearQueue()
60
+ return false;
61
+ }
62
+ });
@@ -0,0 +1,101 @@
1
+ (function( $ ) {
2
+ var userAgent = navigator.userAgent.toLowerCase();
3
+ var browser = {}
4
+ browser.mozilla = /mozilla/.test(userAgent) && !/webkit/.test(userAgent);
5
+ browser.webkit = /webkit/.test(userAgent);
6
+ browser.opera = /opera/.test(userAgent);
7
+ browser.msie = /msie/.test(userAgent);
8
+
9
+ var defaults = {
10
+ max: 4,
11
+ partial: 2,
12
+ hintText: 'Click to reveal completely'
13
+ }
14
+
15
+ var alertShown = false
16
+
17
+ $.fn.spoilerAlert = function(opts) {
18
+ opts = $.extend(defaults, opts || {})
19
+ var maxBlur = opts.max
20
+ var partialBlur = opts.partial
21
+ var hintText = opts.hintText
22
+ if (!alertShown && browser.msie) {
23
+ alert("WARNING, this site contains spoilers!")
24
+ alertShown = true
25
+ }
26
+ return this.each(function() {
27
+ var $spoiler = $(this)
28
+ $spoiler.data('spoiler-state', 'shrouded')
29
+
30
+ var animationTimer = null
31
+ var currentBlur = maxBlur
32
+
33
+ var cancelTimer = function() {
34
+ if (animationTimer) {
35
+ clearTimeout(animationTimer)
36
+ animationTimer = null
37
+ }
38
+ }
39
+
40
+ var applyBlur = function(radius) {
41
+ currentBlur = radius
42
+ if (browser.msie) {
43
+ var filterValue = "progid:DXImageTransform.Microsoft.Blur(pixelradius="+radius+")"
44
+ $spoiler.css('filter', filterValue)
45
+ } else if (browser.mozilla) {
46
+ var filterValue = radius > 0 ? "url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'>" +
47
+ "<filter id='blur'><feGaussianBlur stdDeviation='" + radius + "' /></filter></svg>#blur\")" : ''
48
+ $spoiler.css('filter', filterValue)
49
+ } else {
50
+ var filterValue = radius > 0 ? 'blur('+radius+'px)' : ''
51
+ $spoiler.css('filter', filterValue)
52
+ .css('-webkit-filter', filterValue)
53
+ .css('-moz-filter', filterValue)
54
+ .css('-o-filter', filterValue)
55
+ .css('-ms-filter', filterValue)
56
+ }
57
+ }
58
+
59
+ var performBlur = function(targetBlur, direction) {
60
+ cancelTimer()
61
+ if (currentBlur != targetBlur) {
62
+ applyBlur(currentBlur + direction)
63
+ animationTimer = setTimeout(function() { performBlur(targetBlur, direction) }, 10)
64
+ }
65
+ }
66
+
67
+ // Does the user have IE 9 or less?
68
+ var ieLessThanTen = function() {
69
+ // This conditional check will return true if browser supports CANVAS
70
+ // IE9 and under do not support CANVAS and this function is only ever
71
+ // called by the IE checking function anyway
72
+ return !document.createElement('canvas').getContext
73
+ }
74
+
75
+ applyBlur(currentBlur)
76
+
77
+ $spoiler.on('mouseover', function(e) {
78
+ $spoiler.css('cursor', 'pointer')
79
+ .attr('title', hintText)
80
+ if ($spoiler.data('spoiler-state') == 'shrouded') performBlur(partialBlur, -1)
81
+ })
82
+ $spoiler.on('mouseout', function(e) {
83
+ if ($spoiler.data('spoiler-state') == 'shrouded') performBlur(maxBlur, 1)
84
+ })
85
+ $spoiler.on('click', function(e) {
86
+ if ($spoiler.data('spoiler-state') == 'shrouded') {
87
+ $spoiler.data('spoiler-state', 'revealed')
88
+ .attr('title', '')
89
+ .css('cursor', 'auto')
90
+ performBlur(0, -1)
91
+ } else {
92
+ $spoiler.data('spoiler-state', 'shrouded')
93
+ .attr('title', hintText)
94
+ .css('cursor', 'pointer')
95
+ performBlur(partialBlur, 1)
96
+ }
97
+ })
98
+ })
99
+
100
+ };
101
+ })( jQuery );
@@ -0,0 +1,156 @@
1
+ ;(function($) {
2
+
3
+ $.noty.themes.defaultTheme = {
4
+ name: 'defaultTheme',
5
+ helpers: {
6
+ borderFix: function() {
7
+ if (this.options.dismissQueue) {
8
+ var selector = this.options.layout.container.selector + ' ' + this.options.layout.parent.selector;
9
+ switch (this.options.layout.name) {
10
+ case 'top':
11
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
12
+ $(selector).last().css({borderRadius: '0px 0px 5px 5px'}); break;
13
+ case 'topCenter': case 'topLeft': case 'topRight':
14
+ case 'bottomCenter': case 'bottomLeft': case 'bottomRight':
15
+ case 'center': case 'centerLeft': case 'centerRight': case 'inline':
16
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
17
+ $(selector).first().css({'border-top-left-radius': '5px', 'border-top-right-radius': '5px'});
18
+ $(selector).last().css({'border-bottom-left-radius': '5px', 'border-bottom-right-radius': '5px'}); break;
19
+ case 'bottom':
20
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
21
+ $(selector).first().css({borderRadius: '5px 5px 0px 0px'}); break;
22
+ default: break;
23
+ }
24
+ }
25
+ }
26
+ },
27
+ modal: {
28
+ css: {
29
+ position: 'fixed',
30
+ width: '100%',
31
+ height: '100%',
32
+ backgroundColor: '#000',
33
+ zIndex: 10000,
34
+ opacity: 0.6,
35
+ display: 'none',
36
+ left: 0,
37
+ top: 0
38
+ }
39
+ },
40
+ style: function() {
41
+
42
+ this.$bar.css({
43
+ overflow: 'hidden',
44
+ background: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAYAAAAPOoFWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPZJREFUeNq81tsOgjAMANB2ov7/7ypaN7IlIwi9rGuT8QSc9EIDAsAznxvY4pXPKr05RUE5MEVB+TyWfCEl9LZApYopCmo9C4FKSMtYoI8Bwv79aQJU4l6hXXCZrQbokJEksxHo9KMOgc6w1atHXM8K9DVC7FQnJ0i8iK3QooGgbnyKgMDygBWyYFZoqx4qS27KqLZJjA1D0jK6QJcYEQEiWv9PGkTsbqxQ8oT+ZtZB6AkdsJnQDnMoHXHLGKOgDYuCWmYhEERCI5gaamW0bnHdA3k2ltlIN+2qKRyCND0bhqSYCyTB3CAOc4WusBEIpkeBuPgJMAAX8Hs1NfqHRgAAAABJRU5ErkJggg==') repeat-x scroll left top #fff"
45
+ });
46
+
47
+ this.$message.css({
48
+ fontSize: '13px',
49
+ lineHeight: '16px',
50
+ textAlign: 'center',
51
+ padding: '8px 10px 9px',
52
+ width: 'auto',
53
+ position: 'relative'
54
+ });
55
+
56
+ this.$closeButton.css({
57
+ position: 'absolute',
58
+ top: 4, right: 4,
59
+ width: 10, height: 10,
60
+ background: "url(data:image/png;base64,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)",
61
+ display: 'none',
62
+ cursor: 'pointer'
63
+ });
64
+
65
+ this.$buttons.css({
66
+ padding: 5,
67
+ textAlign: 'right',
68
+ borderTop: '1px solid #ccc',
69
+ backgroundColor: '#fff'
70
+ });
71
+
72
+ this.$buttons.find('button').css({
73
+ marginLeft: 5
74
+ });
75
+
76
+ this.$buttons.find('button:first').css({
77
+ marginLeft: 0
78
+ });
79
+
80
+ this.$bar.bind({
81
+ mouseenter: function() { $(this).find('.noty_close').fadeIn(); },
82
+ mouseleave: function() { $(this).find('.noty_close').fadeOut(); }
83
+ });
84
+
85
+ switch (this.options.layout.name) {
86
+ case 'top':
87
+ this.$bar.css({
88
+ borderRadius: '0px 0px 5px 5px',
89
+ borderBottom: '2px solid #eee',
90
+ borderLeft: '2px solid #eee',
91
+ borderRight: '2px solid #eee',
92
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
93
+ });
94
+ break;
95
+ case 'topCenter': case 'center': case 'bottomCenter': case 'inline':
96
+ this.$bar.css({
97
+ borderRadius: '5px',
98
+ border: '1px solid #eee',
99
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
100
+ });
101
+ this.$message.css({fontSize: '13px', textAlign: 'center'});
102
+ break;
103
+ case 'topLeft': case 'topRight':
104
+ case 'bottomLeft': case 'bottomRight':
105
+ case 'centerLeft': case 'centerRight':
106
+ this.$bar.css({
107
+ borderRadius: '5px',
108
+ border: '1px solid #eee',
109
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
110
+ });
111
+ this.$message.css({fontSize: '13px', textAlign: 'left'});
112
+ break;
113
+ case 'bottom':
114
+ this.$bar.css({
115
+ borderRadius: '5px 5px 0px 0px',
116
+ borderTop: '2px solid #eee',
117
+ borderLeft: '2px solid #eee',
118
+ borderRight: '2px solid #eee',
119
+ boxShadow: "0 -2px 4px rgba(0, 0, 0, 0.1)"
120
+ });
121
+ break;
122
+ default:
123
+ this.$bar.css({
124
+ border: '2px solid #eee',
125
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)"
126
+ });
127
+ break;
128
+ }
129
+
130
+ switch (this.options.type) {
131
+ case 'alert': case 'notification':
132
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
133
+ case 'warning':
134
+ this.$bar.css({backgroundColor: '#FFEAA8', borderColor: '#FFC237', color: '#826200'});
135
+ this.$buttons.css({borderTop: '1px solid #FFC237'}); break;
136
+ case 'error':
137
+ this.$bar.css({backgroundColor: 'red', borderColor: 'darkred', color: '#FFF'});
138
+ this.$message.css({fontWeight: 'bold'});
139
+ this.$buttons.css({borderTop: '1px solid darkred'}); break;
140
+ case 'information':
141
+ this.$bar.css({backgroundColor: '#57B7E2', borderColor: '#0B90C4', color: '#FFF'});
142
+ this.$buttons.css({borderTop: '1px solid #0B90C4'}); break;
143
+ case 'success':
144
+ this.$bar.css({backgroundColor: 'lightgreen', borderColor: '#50C24E', color: 'darkgreen'});
145
+ this.$buttons.css({borderTop: '1px solid #50C24E'});break;
146
+ default:
147
+ this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); break;
148
+ }
149
+ },
150
+ callback: {
151
+ onShow: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); },
152
+ onClose: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); }
153
+ }
154
+ };
155
+
156
+ })(jQuery);
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the Api controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,7 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require_tree .
7
+ */
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the errors controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,650 @@
1
+ /*
2
+ Content-Type: multipart/related; boundary="_BASE64_SEPARATOR"
3
+
4
+ --_BASE64_SEPARATOR
5
+ Content-Location:handlenormal
6
+ Content-Transfer-Encoding:base64
7
+
8
+ iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKeSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIKobCBBALNgEGYGAYek5OQYhcW8Gdk5bBjZ2DbDEr583GH5+P8zw7uVWhmijR/+xRABAADGiiwHNYuZZdclaQkKiUEeY19aIm4FdkZ2RhYOJkfHHf4Z/J778/7ni4Yc9b1++mMgQZXAcqP8vsn6AAGLBcFnbCmUhIaESa1EeWyue/5wCLIzAYAGa9O8/AxsDA5MdDyOzoBK/+4w/v1jftK0oA2q5jexSgABC9zIbg4xSkKQQv5UQ01+2d78ZGN7+YvgHUg3CjFDMxcjE6iEnbL/vk3rkMwaGDqDQT5gBAAGEbiAXAzefA+Pv36wPvzEwPGFk+PfnPwNGOLEwMjD+ZWBiURYTcgMaOAnZQIAAQjeQB2ig6oPvvxkefWP4izc6GYEW/eeQButhYHgPEwYIIEwv//vH9OIHmE04C/0DhwYbshBAAGEmm1dPXgjIKAjzsTAysgKj4x8WY5mAAfn7HwPD1+fPXr9FkwMIIHQDfzHcuXyVQVZRi5uZkZEXaChI859/iEhhgVry+S/Dv18Pb9wA60ECAAGEbuAXhr1r9v2UUzL6p6mrKsDCxCjACjKUkYEZKAkK1H/AFPLh9///3x/devT7wMa9YD1IACCA0LPeN4bjO89937J04+PLF+4//PH337e////zMjMySAFTNogG8Z/duvb48Yal69/uWH0SrAcJAAQQSk4BJ2wGBl4gVmHQs7RjsPNzZtAwUmGQUhAGK3j24C3DjXN3GA5t2stw6fghoMgdIP6MnLABAghr1gNS3EAsBcQKUJoXKv0ZZCwQP4DSX9GzHkAAMWIrYKEuZQMndEg6Y4NHGiTMQN78ha1wAAggRmqX2AABRPXyECDAAK8q7HNsZWwXAAAAAElFTkSuQmCC==
9
+ --_BASE64_SEPARATOR
10
+ Content-Location:handleglow
11
+ Content-Transfer-Encoding:base64
12
+
13
+ iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPcSURBVHjaYvz//z8DGmBEohmR+DDwHwkzINFgABBALFgMYoKyWaBsZiQ5kOa/QPwPiP9A+f+QDQYIIBY0w5ihmBWI2aCYBSrGADUMZNAvKP4NFfsLNeM/QAAhu5AZqpkdiDmhmAvKh6kDGfYTiL8B8Xco/olkGQNAALFATYZ5DaSZ+9evX/zLn/9QW/2B0enuH2bDNwwsMiDFIgx/niiz/D0fKvB/X6Qkxy02NjYmtHD9BxBAjMBIYYQaxgHEPO/evRPufvbP8dwf9hghbg5tAy5GVnl2BiYORkbG7/8Z/p/+8v/3ibffLliz/VxaKc18UEhI6C1Q3xcg/gFyJUAAsSBFANvPnz+5Vj79onXyJ2+cqiC7jgUPI6sgCwMj0Gog/s/Aycjw35aXgU2QmdNo+/M/zEC1r5O4uc+ys7P/ggbHP4AAYkLyMtuLFy/4N3xgcGfk4NIUZv7P8vHPP8YHP/4zAPH/+xAMZP9j5Gb6z6ItxKO7/yuTD0gPNPLAZgEEEMyF4Ah5/vw5/4N/CkZy//8xP/vJyPDyN8P/fwygIEGkmn/AMAIq/v/7PwMTIzun2fPnt/nl5eVfw5IXQAAhJxvmN2/e8L4T0JBi/PGX8cVvxv/MjEwMwKD7j5x2QRnh7/9////+A5r4j1UYpAc5rQIEEHKyYfj69SsrA/8/ple//jEwMzMBDQQ5g4EROVmDXPgXhP8C1fz7A9GDBAACiAU5B/z+/fuPwNf3734JiPIKsTEysgIdCPQwI8xEUMSAc+p/Joaff/8zsH/8+AGkB5oGwd4ACCAWpOz0B+i9rxLvntx/KCAqxw4U5mMBeRsoCfU0JPYY//8Buu4jMHDFPzx/CNIDjWGwoQABxIKUH39xc3O/1bx/49gHXhG1P1JyUjyMDMyCrIwgbzOADf7HCDT8P+N7oHq2ty9eKb24eYxbWvAtNBuCzPgPEEBMUAPB+VNWVvad6p9PZxVvnzzw8+mDlw+///n75c/f/5zAsBQFpkcQ/eXPv//fXzx5w3vtxH7Zb29OgvRADQQXFgABhByGv5WVlT/du3fv7qdLl7Zyn37x6Z6MtsUZMUWZj3yifCBF/J9efxJ5df+J0pOrJ1QYvh9W0NO7C9IDLSTAYQgQQMhe/isgIPBDW1v7NTCgLzNcv/5J6NKuG8DcIwWMVB5w2mJk/ALMFc+A2e2upqbmQ6DatyA9SEXaf4AAYoQWsCjFFzBtsZ09e5bn6dOnfKDE/ufPHw6w7SwsPyQlJT9KS0t/MjY2/iIiIvILqfgC+xQggBiRSmyqFLAAAcSCVrQzICn4R04VABBgAIVgtDIhSVTgAAAAAElFTkSuQmCC==
14
+ --_BASE64_SEPARATOR
15
+ Content-Location:handledisabled
16
+ Content-Transfer-Encoding:base64
17
+
18
+ iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJSSURBVHjaYvz//z8DNQFAADExUBkABBDVDQQIIKobCBBALNgEGYHA1dVVjp2d3ZuZmdkWiDVA4n///r0BxId//vy5dffu3Y/+Y4kAgABiRBcDmsXs4eFhJSQklCcqKmoLpNm4ubmZWVhYQAb+f/Pmza87d+7s+/DhwxSgoceB+v8i6wcIIBZ0l1lYWCjz8fEVSUpK2gAN5GBjY2MCamIEGgaS/w8UYwaKuV6+fJkVqPYVUOw2sksBAgjdyyDXBAENtAZqYgd6jen79+8gcWRvMAENYVNQULD7/ft3GJDfDcQ/YZIAAYRuIBcrK6sD0ELWz58/M3758uUftnQKNBBEsQoLCzsD6anIBgIEELqBPEADVYGGMQENI5TiQaYqgPQA8XuYIEAAYXgZ6CJs3sQKoK5nQxYDCCCMZAM07AU/P78Q0KWMUK/hNAzok1fo4gABhG7gr48fP14FGqgJTHuMoKQCMhQ5HGH8P3/+/AcaeA2kB9kAgABCN/DLkydP9vHy8hoBk40KMKYZgRjFILCtv34xANPhvUePHu0F6UE2ACCA0A389uLFi3OcnJwbgexgoKEKTExMjBwcHAygIAAmk/8/fvxgAKp5CEzcGx8+fHgGpAfZAIAAYkTzDijQeIFYBZgk7KSkpJwFBQVVuLi4hMG2ffv29v3793eePXu29+3bt4eAQneA+DNywgYIIKxZD0hxA7EUNFlIQS0Bgc9A/AyIH0Dpr+hZDyCAGHEkXEZocuCCpjNY0vgFDTOQN39hKxwAAoiR2iU2QABRvTwECDAAxcXwW8Zw7FoAAAAASUVORK5CYII==
19
+ --_BASE64_SEPARATOR
20
+ Content-Location:blank
21
+ Content-Transfer-Encoding:base64
22
+
23
+ R0lGODlhFAAUAIAAAP///wAAACH5BAEAAAAALAAAAAAUABQAAAIRhI+py+0Po5y02ouz3rz7rxUAOw==
24
+ --_BASE64_SEPARATOR
25
+ Content-Location:handlenovalue
26
+ Content-Transfer-Encoding:base64
27
+
28
+ iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNrMVE1PE0EYfmZ32a1ugXVrS0FsoKWKxBps4kFNOBnjybPR/8Nv8A+Y1K+DxgMeIMYLngiBxGyQKK1NWxq3VpGW7tc4O25C024rBw5MMpnknXmfeeZ9nncIpRSnOQSc8jj7gFJYkLCBZxs69IkclHNzkJUk37A6NXTau2jsb+NJvkFDBCC9MYYlRF9sZZLJ5L3rsdFsXoU0qxAhIhByREE//aF2odg0zP3aKh4vfmX53kCGnNlyIa7r+v278ejcnSiVNYnFQOF5FDI7shQl8oX0+MJTxxJ/LBdes5R6N9PeJ4uYTt+c1MczuuBKDRswLfDT/iTBPE8E8UEqll37ffVWBVhhIWcQoAx17AqxbbHYAsoE1KHoq5NEQFwIYiahLzDAtWGACgOc2GvbKLXgDZXTp0ojGs8BWoMAJVYsUjs6oUc8rw+j3zb18i9tekYdY2KMMJd6IZ0pMHY2wzqsVg7M//jQwe52FZdnp1SRYJQVy092vGNRpOCSAxfUKhq17vqFAXaw+sropNIp71ouoUkC0UaYMZlzRLbp+q9kmjdtStulHdP+8MbgOUMALay/L7Xjlza/O4/yyC1elAURkwoH9oFQ7Xi0svP5Z/nd883mystvPGdQp3Bj/1MtgRu3s1h6OI/5fAJTMyo/UNk7hLFRx8e3BrbWv/gV9xl2Gzu09bgfAd8SsWCNBNu+/k02zWC1eluPhH2wAVMxAFa6SuMENfOf6Z7oczhz/+FfAQYATvji+0cdRCAAAAAASUVORK5CYII==
29
+ --_BASE64_SEPARATOR--
30
+ */
31
+
32
+ /*
33
+ Quick notes:
34
+
35
+ - This file is heavily commented, run it through a CSS minifier before putting into production but don't remove the MHTML comment at the start. http://www.google.com/search?q=css+minifier
36
+ - The script automagically adds the classname "oldie" to IE 6, 7 & 8
37
+ - A combination of the .oldie class and "safe css hacks" are used to target specific IE versions. See http://mathiasbynens.be/notes/safe-css-hacks
38
+ - MSHTML has been used to BASE 64 encode the various png images used for the drag handle states in IE6 and IE7. See http://www.phpied.com/the-proper-mhtml-syntax/
39
+ - All browsers except IE6 and IE7 get one regular base 64 encoded image sprite.
40
+ - The drag handle is only 20px in width & height and not suitable for touch screen devices. You will have to change the image etc if targeting a touch screen. 44px is the Apple norm.
41
+ - It's painless to BASE 64 your own image, use an online encoder. http://www.google.com/search?q=base+64+encoder - the only problem is that IE needs each frame of the handle sprite to be encoded individually.
42
+ - Remember to find and replace all occurences of ";-)" with an absolute path to this file on your server (no trailing slash required)
43
+ e.g. if your file is positioned at
44
+
45
+ http://www.mysite.com/css/fd-slider.css
46
+
47
+ Then you would run a find/replace, replacing ;-) (semi-colon, minus sign and rounded right bracket) by
48
+
49
+ http://www.mysite.com/css
50
+
51
+ Remember, don't include the trailing slash on the directory path.
52
+
53
+ */
54
+
55
+ /* The styles given to the associated form element in order to hide it */
56
+ .fd-form-element-hidden
57
+ {
58
+ display:none;
59
+ }
60
+ /* Horizontal Outer wrapper - all other DOM elements added as children to this top level wrapper */
61
+ .fd-slider
62
+ {
63
+ width:400px;
64
+ /* The height of the slider handle */
65
+ height:20px;
66
+ /* Set a 10 pixel bottom margin */
67
+ margin:0 auto 10px auto;
68
+ }
69
+ /* Vertical Outer wrapper - all other DOM elements added as children to this top level wrapper */
70
+ .fd-slider-vertical
71
+ {
72
+ /* The width of the slider handle */
73
+ width:20px;
74
+ /* Fill the available space */
75
+ height:100%;
76
+ /* Set a 10 pixel right and bottom margin */
77
+ margin:0 10px 10px 0;
78
+ /* You may wish to float the vertical sliders left or display:inline-block */
79
+ /* float:left; */
80
+ }
81
+ /* Shared rules - both horizontal & vertical sliders */
82
+ .fd-slider,
83
+ .fd-slider-vertical
84
+ {
85
+ text-align:center;
86
+ /* display:block required as the wrapper element is a span */
87
+ display:block;
88
+ /* This lets us absolutely position the drag handle */
89
+ position:relative;
90
+ /* Change the cursor */
91
+ cursor:pointer;
92
+ cursor:hand;
93
+ text-decoration:none;
94
+ border:0 none;
95
+ -moz-user-select:none;
96
+ -khtml-user-select:none;
97
+ -webkit-touch-callout:none;
98
+ user-select:none;
99
+ }
100
+ .fd-slider-inner
101
+ {
102
+ /* Used only by IE for the onfocus blur effect */
103
+ display:none;
104
+ }
105
+ /* IE 6, 7 & 8 onfocus blur effect */
106
+ .oldie .fd-slider-inner
107
+ {
108
+ display:none;
109
+ position:absolute;
110
+ height:2px;
111
+ border:1px solid #bbf;
112
+ background:#88f;
113
+ top:4px;
114
+ bottom:none;
115
+ left:4px;
116
+ right:12px;
117
+ z-index:2;
118
+ margin:0;
119
+ padding:0;
120
+ overflow:hidden;
121
+ line-height:4px;
122
+ /* IE 6 can't absolutely position on 4 sides so we reset the right to "auto" and use a nasty expression to calculate the width */
123
+ _right:auto;
124
+ _width:expression((this.parentNode.offsetWidth - 8) + "px");
125
+ /* Use the "blur" filter to simulate the box-shadow - not brilliant but the best we can do for IE */
126
+ filter:progid:DXImageTransform.Microsoft.Blur(pixelradius=3.5);
127
+ }
128
+ /* Reposition for the vertical slider for IE 6, 7 & 8 */
129
+ .oldie .fd-slider-vertical .fd-slider-inner
130
+ {
131
+ width:2px;
132
+ height:auto;
133
+ top:4px;
134
+ bottom:12px;
135
+ left:4px;
136
+ right:auto;
137
+ /* IE 6 can't absolutely position on 4 sides so we reset the bottom to "auto" and use a nasty expression to calculate the height */
138
+ _bottom:auto;
139
+ _height:expression((this.parentNode.offsetHeight - 8) + "px");
140
+ /* Note: The "blur" filter rule cascades from the rule above */
141
+ }
142
+ /* Display the "blurred" div for IE 6, 7 & 8 when the slider gains focus */
143
+ .oldie .fd-slider-focused .fd-slider-inner
144
+ {
145
+ display:block;
146
+ }
147
+ /* The inner track bar */
148
+ .fd-slider-bar
149
+ {
150
+ position:absolute;
151
+ display:block;
152
+ z-index:2;
153
+ height:2px;
154
+ width:auto;
155
+ /* Fallback rules for non rgba aware browsers */
156
+ border:1px solid #bbb;
157
+ border-bottom:1px solid #aaa;
158
+ border-right:1px solid #aaa;
159
+ /* rgba versions */
160
+ border:1px solid rgba(187, 187, 187, .8);
161
+ border-bottom:1px solid rgba(170, 170, 170, .8);
162
+ border-right:1px solid rgba(170, 170, 170, .8);
163
+ margin:0;
164
+ padding:0;
165
+ overflow:hidden;
166
+ line-height:4px;
167
+ top:8px;
168
+ right:10px;
169
+ left:10px;
170
+ -moz-border-radius:2px;
171
+ -webkit-border-radius:2px;
172
+ border-radius:2px;
173
+ -moz-background-clip: padding;
174
+ -webkit-background-clip: padding-box;
175
+ background-clip: padding-box;
176
+ background-color: #ddd;
177
+ /* Firefox 3.6+ */
178
+ background-image: -moz-linear-gradient(#ececec, #ccc);
179
+ /* Safari 4+, Chrome 1+ */
180
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ececec), to(#ccc));
181
+ /* Safari 5.1+, Chrome 10+ */
182
+ background-image: -webkit-linear-gradient(#ececec, #ccc);
183
+ /* Opera 11.10+ */
184
+ background-image: -o-linear-gradient(#ececec, #ccc);
185
+ }
186
+ .oldie .fd-slider-bar
187
+ {
188
+ /* IE6 does not recognise absolute positioning on four sides (top, right, bottom & left) so we use an expression
189
+ to dynamically calculate the track bar size. Yes, it is horrible - you don't need to remind me. */
190
+ _left:10px;
191
+ _right:auto;
192
+ _width:expression((this.parentNode.offsetWidth - 20) + "px");
193
+ /* Using the gradient filter for IE 6, 7 & 8. Colour strings in AARRGGBB format */
194
+ filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffececec',endColorstr='#ffcccccc');
195
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffececec',endColorstr='#ffcccccc')";
196
+ }
197
+ /* The animated range bar */
198
+ .fd-slider-range
199
+ {
200
+ position:absolute;
201
+ display:block;
202
+ z-index:3;
203
+ height:2px;
204
+ margin:0;
205
+ padding:0;
206
+ overflow:hidden;
207
+ line-height:2px;
208
+ top:9px;
209
+ left:11px;
210
+ -moz-border-radius:2px;
211
+ -webkit-border-radius:2px;
212
+ border-radius:2px;
213
+ -moz-background-clip: padding;
214
+ -webkit-background-clip: padding-box;
215
+ background-clip: padding-box;
216
+ background-color: #4cc;
217
+ /* Firefox 3.6+ */
218
+ background-image: -moz-linear-gradient(left, #6cc, #3cf);
219
+ /* Safari 4+, Chrome 1+ */
220
+ background-image: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#6cc), to(#3cf));
221
+ /* Safari 5.1+, Chrome 10+ */
222
+ background-image: -webkit-linear-gradient(left, #6cc, #3cf);
223
+ /* Opera 11.10+ */
224
+ background-image: -o-linear-gradient(left, #6cc, #3cf);
225
+ }
226
+ .oldie .fd-slider-range
227
+ {
228
+ /* IE6 - is this needed? To test... */
229
+ _left:10px;
230
+ /* IE 6, 7 & 8 */
231
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff66cccc',endColorstr='#ff33ccff');
232
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff66cccc',endColorstr='#ff33ccff')";
233
+ }
234
+ /* Styles for the vertical sliders range bar */
235
+ .fd-slider-vertical .fd-slider-range
236
+ {
237
+ height:auto;
238
+ width:2px;
239
+ top:auto;
240
+ right:auto;
241
+ bottom:11px;
242
+ left:9px;
243
+ /* Firefox 3.6+ */
244
+ background-image: -moz-linear-gradient(top, #3cf, #6cc);
245
+ /* Safari 4+, Chrome 1+ */
246
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3cf), to(#6cc));
247
+ /* Safari 5.1+, Chrome 10+ */
248
+ background-image: -webkit-linear-gradient(top, #3cf, #6cc);
249
+ /* Opera 11.10+ */
250
+ background-image: -o-linear-gradient(top, #3cf, #6cc);
251
+ }
252
+ .oldie .fd-slider-vertical .fd-slider-range
253
+ {
254
+ /* IE 6, 7 & 8 */
255
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff33ccff',endColorstr='#ff66cccc');
256
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff33ccff',endColorstr='#ff66cccc')";
257
+ }
258
+ .fd-slider-vertical .fd-slider-bar
259
+ {
260
+ width:2px;
261
+ top:10px;
262
+ right:auto;
263
+ bottom:10px;
264
+ left:8px;
265
+ height:auto;
266
+ /* Firefox 3.6+ */
267
+ background-image: -moz-linear-gradient(left, #ececec, #ccc);
268
+ /* Safari 4+, Chrome 1+ */
269
+ background-image: -webkit-gradient(linear, left top, right top, from(#ececec), to(#ccc));
270
+ /* Safari 5.1+, Chrome 10+ */
271
+ background-image: -webkit-linear-gradient(left, #ececec, #ccc);
272
+ /* Opera 11.10+ */
273
+ background-image: -o-linear-gradient(left, #ececec, #ccc);
274
+ }
275
+ .oldie .fd-slider-vertical .fd-slider-bar
276
+ {
277
+ /* Again, we use an expression to calculate the vertical track bar size for IE 6 */
278
+ _top:10px;
279
+ _bottom:auto;
280
+ _right:auto;
281
+ _left:8px;
282
+ _height:expression((this.parentNode.offsetHeight - 20) + "px");
283
+ /* Using the gradient filter for IE 6, 7 & 8. Colour strings in AARRGGBB format */
284
+ filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffececec',endColorstr='#ffcccccc');
285
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffececec',endColorstr='#ffcccccc')";
286
+ }
287
+ .fd-slider-vertical .fd-slider-handle,
288
+ .fd-slider-vertical .fd-slider-handle:link,
289
+ .fd-slider-vertical .fd-slider-handle:visited
290
+ {
291
+ cursor:N-resize;
292
+ }
293
+ /* The drag handle */
294
+ .fd-slider-handle,
295
+ .fd-slider-handle:link,
296
+ .fd-slider-handle:visited
297
+ {
298
+ position:absolute;
299
+ display:block;
300
+ padding:0;
301
+ border:0 none;
302
+ margin:0;
303
+ z-index:3;
304
+ top:0;
305
+ left:0;
306
+ width:20px;
307
+ height:20px;
308
+ outline:0 none;
309
+ background-color:transparent;
310
+ text-decoration:none;
311
+ /* Using a BASE64 encoded image sprite for the drag handle */
312
+ background-image:url(data:image/png;base64,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);
313
+ background-position:0 0;
314
+ cursor:hand;
315
+ line-height:20px;
316
+ font-size:10px;
317
+ -webkit-user-select: none;
318
+ -webkit-touch-callout:none;
319
+ -moz-user-select:none;
320
+ -moz-user-focus:none;
321
+ -moz-outline:0 none;
322
+ user-select:none;
323
+ }
324
+ .oldie .fd-slider-handle
325
+ {
326
+ /*
327
+
328
+ IE6 and IE7
329
+ -----------
330
+
331
+ Should not render the image above as they do not understand regular base 64 encoded images
332
+ but will render the MHTML image within the AlphaImageLoader filter below
333
+
334
+ IE8 in IE7 compat mode
335
+ ----------------------
336
+
337
+ Will render the image declared above (as it suddenly appears to understand regular base64 encoded images)
338
+ but not the MHTML base 64 encoded image below (as it suddenly appears to forget what MHTML is)
339
+
340
+ IE8
341
+ ---
342
+
343
+ Renders the regular base64 encoded image above but does not render the filter below
344
+
345
+ */
346
+ *filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='mhtml:http://passwordpusher.dev/assets/fd-slider.css!handlenormal');
347
+ /*
348
+
349
+ IE6, IE7 and IE8
350
+ ----------------
351
+
352
+ A nasty expression is used to not draw focus outline on drag handle.
353
+ Feel free to remove the rule if you prefer the outline.
354
+
355
+ */
356
+ outline:expression(hideFocus='true');
357
+ }
358
+ /* Focus styles */
359
+ .fd-slider-handle:focus
360
+ {
361
+ outline:0 none;
362
+ border:0 none;
363
+ -moz-user-focus:normal;
364
+ }
365
+ a.fd-slider-handle:focus::-moz-focus-inner
366
+ {
367
+ border-color: transparent;
368
+ }
369
+ /* Glowing slider handle when focused or when hovered */
370
+ .fd-slider-focused .fd-slider-handle,
371
+ .fd-slider-hover .fd-slider-handle
372
+ {
373
+ /* Move the background sprite into position */
374
+ background-position:0 -20px;
375
+ }
376
+ .oldie .fd-slider-focused .fd-slider-handle,
377
+ .oldie .fd-slider-hover .fd-slider-handle
378
+ {
379
+ /*
380
+
381
+ IE6 and IE7
382
+ -----------
383
+
384
+ Should not render the base64 encoded image sprite declared within the
385
+ .fd-slider-handle ruleset above but will render the MHTML image within
386
+ the AlphaImageLoader filter below
387
+
388
+ IE8 in IE7 compat mode
389
+ ----------------------
390
+
391
+ Will render the the base64 encoded image sprite declared within the
392
+ .fd-slider-handle ruleset (as it suddenly appears to understand regular
393
+ base64 encoded images) but not the MHTML base 64 encoded image below
394
+ (as it suddenly appears to forget what MHTML is)
395
+
396
+ IE8
397
+ ---
398
+
399
+ Will render the the base64 encoded image sprite declared within the
400
+ .fd-slider-handle ruleset but does not render the AlphaImageLoader
401
+ filter below
402
+
403
+ */
404
+ *filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='mhtml:http://passwordpusher.dev/assets/fd-slider.css!handleglow');
405
+ }
406
+ /* The slider is given this class whenever no value has been set by the user.
407
+ Opacity & png images won't work in IE though so the .oldie class is used to
408
+ pass a BASE64 encoded image to IE 6, 7 & 8
409
+
410
+ This does mean that IE doesn't get the :hover + :focus effect
411
+ */
412
+ .fd-slider-no-value .fd-slider-handle
413
+ {
414
+ opacity:.6;
415
+ }
416
+ /* IE 6, 7 & 8 - uses a BASE64 encoded image as the opacity & png mix doesn't work */
417
+ .oldie .fd-slider-no-value .fd-slider-handle
418
+ {
419
+ /* Reset opacity for IE8 as we are using png images */
420
+ opacity:1;
421
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjVJREFUeNrMVE1PE0EYfmZ32a1ugXVrS0FsoKWKxBps4kFNOBnjybPR/8Nv8A+Y1K+DxgMeIMYLngiBxGyQKK1NWxq3VpGW7tc4O25C024rBw5MMpnknXmfeeZ9nncIpRSnOQSc8jj7gFJYkLCBZxs69IkclHNzkJUk37A6NXTau2jsb+NJvkFDBCC9MYYlRF9sZZLJ5L3rsdFsXoU0qxAhIhByREE//aF2odg0zP3aKh4vfmX53kCGnNlyIa7r+v278ejcnSiVNYnFQOF5FDI7shQl8oX0+MJTxxJ/LBdes5R6N9PeJ4uYTt+c1MczuuBKDRswLfDT/iTBPE8E8UEqll37ffVWBVhhIWcQoAx17AqxbbHYAsoE1KHoq5NEQFwIYiahLzDAtWGACgOc2GvbKLXgDZXTp0ojGs8BWoMAJVYsUjs6oUc8rw+j3zb18i9tekYdY2KMMJd6IZ0pMHY2wzqsVg7M//jQwe52FZdnp1SRYJQVy092vGNRpOCSAxfUKhq17vqFAXaw+sropNIp71ouoUkC0UaYMZlzRLbp+q9kmjdtStulHdP+8MbgOUMALay/L7Xjlza/O4/yyC1elAURkwoH9oFQ7Xi0svP5Z/nd883mystvPGdQp3Bj/1MtgRu3s1h6OI/5fAJTMyo/UNk7hLFRx8e3BrbWv/gV9xl2Gzu09bgfAd8SsWCNBNu+/k02zWC1eluPhH2wAVMxAFa6SuMENfOf6Z7oczhz/+FfAQYATvji+0cdRCAAAAAASUVORK5CYII==);
422
+ /*
423
+
424
+ IE6 and IE7
425
+ -----------
426
+
427
+ Should not render the image above as they do not understand regular base 64 encoded images
428
+ but will render the MHTML image within the AlphaImageLoader filter below
429
+
430
+ IE8 in IE7 compat mode
431
+ ----------------------
432
+
433
+ Will render the image declared above (as it suddenly appears to understand regular base64 encoded images)
434
+ but not the MHTML base 64 encoded image below (as it suddenly appears to forget what MHTML is)
435
+
436
+ IE8
437
+ ---
438
+
439
+ Renders the regular base64 encoded image above but does not render the filter below
440
+
441
+ */
442
+
443
+ *filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='mhtml:http://passwordpusher.dev/assets/fd-slider.css!handleglow');
444
+ }
445
+ .oldie .fd-slider,
446
+ .oldie .fd-slider-vertical
447
+ {
448
+ /*
449
+
450
+ IE6 and IE7
451
+ -----------
452
+
453
+ Require either a solid background colour or a background image in order
454
+ for mouse hover events to work. We are using a MHTML base64 encoded
455
+ transparent gif image to get it to work
456
+
457
+ IE8 in IE7 compat mode
458
+ ----------------------
459
+
460
+ Setting the background image below seems to do the trick, even if the
461
+ image is not rendered. It just works - don't ask me why.
462
+
463
+ IE8
464
+ ---
465
+
466
+ Does not need the background hack to get mouse hover events to work so
467
+ we keep the following rule from being noticed by using the star hack
468
+
469
+ */
470
+ *background:transparent url('mhtml:http://passwordpusher.dev/assets/fd-slider.css!blank') repeat;
471
+ }
472
+ /* Drop shadow on the inner bar when focused - IE gets a "Blur" filter on an inner SPAN instead */
473
+ .fd-slider-focused .fd-slider-bar
474
+ {
475
+ -moz-box-shadow: 0 0 4px #aaf;
476
+ -webkit-box-shadow: 0 0 4px #aaf;
477
+ box-shadow: 0 0 4px #aaf;
478
+ }
479
+ /* Class given to body to change cursor when dragging */
480
+ .fd-slider-drag-vertical,
481
+ .fd-slider-drag-vertical *
482
+ {
483
+ /* Set the cursor to the correct resize cursor */
484
+ cursor:N-resize !important;
485
+ /* Stop text selection */
486
+ -moz-user-select:none;
487
+ -webkit-user-select:none;
488
+ user-select:none;
489
+ }
490
+ .fd-slider-drag-horizontal,
491
+ .fd-slider-drag-horizontal *
492
+ {
493
+ cursor:hand !important;
494
+ /* Stop text selection */
495
+ -moz-user-select:none;
496
+ -webkit-user-select:none;
497
+ user-select:none;
498
+ }
499
+ /* Disabled Sliders */
500
+ .fd-slider-disabled
501
+ {
502
+ /* Lower opacity - No IE 6, 7 or 8 though */
503
+ opacity:0.8;
504
+ /* Remove the pointer */
505
+ cursor:default;
506
+ }
507
+ /* Change the handle image */
508
+ .fd-slider-disabled .fd-slider-handle
509
+ {
510
+ /* Default cursor & black handle image */
511
+ cursor:default !important;
512
+ /* Move the image sprite to appropriate position */
513
+ background-position:0 -40px;
514
+ }
515
+ .oldie .fd-slider-disabled .fd-slider-handle
516
+ {
517
+ /*
518
+
519
+ IE8
520
+ ---
521
+
522
+ Need to reset the opacity as opacity + png images don't mix
523
+
524
+ */
525
+ opacity:1;
526
+ /*
527
+
528
+ IE6 and IE7
529
+ -----------
530
+
531
+ Should not render the image above as they do not understand regular base 64 encoded images
532
+ but will render the MHTML image within the AlphaImageLoader filter below
533
+
534
+ IE8 in IE7 compat mode
535
+ ----------------------
536
+
537
+ Will render the image declared above (as it suddenly appears to understand regular base64 encoded images)
538
+ but not the MHTML base 64 encoded image below (as it suddenly appears to forget what MHTML is)
539
+
540
+ */
541
+ *filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='mhtml:http://passwordpusher.dev/assets/fd-slider.css!handledisabled');
542
+ }
543
+ /* Disable the track bar */
544
+ .fd-slider-disabled .fd-slider-bar
545
+ {
546
+ /* Default cursor */
547
+ cursor:auto !important;
548
+ /* non rgba aware browsers fallback to the following border rules */
549
+ border:1px solid #888;
550
+ border-bottom:1px solid #999;
551
+ border-right:1px solid #999;
552
+ /* rgba aware browsers get the following border rules */
553
+ border:1px solid rgba(136,136,136,.8);
554
+ border-bottom:1px solid rgba(153,153,153,.8);
555
+ border-right:1px solid rgba(153,153,153,.8);
556
+ /* Black background */
557
+ background-color: #222;
558
+ /* Firefox 3.6+ */
559
+ background-image: -moz-linear-gradient(left, #222, #000);
560
+ /* Safari 4+, Chrome 1+ */
561
+ background-image: -webkit-gradient(linear, left top, right top, from(#222), to(#000));
562
+ /* Safari 5.1+, Chrome 10+ */
563
+ background-image: -webkit-linear-gradient(left, #222, #000);
564
+ /* Opera 11.10+ */
565
+ background-image: -o-linear-gradient(left, #222, #000);
566
+ }
567
+ /* Vertical disabled track bar */
568
+ .fd-slider-vertical.fd-slider-disabled .fd-slider-bar
569
+ {
570
+ /* Firefox 3.6+ */
571
+ background-image: -moz-linear-gradient(top, #000, #222);
572
+ /* Safari 4+, Chrome 1+ */
573
+ background-image: -webkit-gradient(linear, left top, right bottom, from(#000), to(#222));
574
+ /* Safari 5.1+, Chrome 10+ */
575
+ background-image: -webkit-linear-gradient(top, #000, #222);
576
+ /* Opera 11.10+ */
577
+ background-image: -o-linear-gradient(top, #000, #222);
578
+ }
579
+ /*
580
+
581
+ IE6
582
+ ---
583
+
584
+ IE6 sees this rule as being ".oldie .fd-slider-disabled .fd-slider-bar"
585
+
586
+ */
587
+ .oldie .fd-slider-vertical.fd-slider-disabled .fd-slider-bar
588
+ {
589
+ /* IE 6 + 7 */
590
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff222222',endColorstr='#ff000000');
591
+ /* IE8 */
592
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff222222',endColorstr='#ff000000')";
593
+ }
594
+ /*
595
+
596
+ IE6
597
+ ---
598
+
599
+ The following rule rewrites the above rule as IE6 doesn't understand
600
+ chained classes. This limits us to serving the same rule to IE6 for
601
+ both horizontal and vertical sliders
602
+
603
+ */
604
+ .oldie .fd-slider-disabled .fd-slider-bar
605
+ {
606
+ /* IE 6 + 7 */
607
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff222222',endColorstr='#ff000000');
608
+ /* IE8 */
609
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff222222',endColorstr='#ff000000')";
610
+ }
611
+ /* Disabled range bar */
612
+ .fd-slider-disabled .fd-slider-range
613
+ {
614
+ cursor:auto !important;
615
+ background-color: #555;
616
+ /* Firefox 3.6+ */
617
+ background-image: -moz-linear-gradient(left, #666, #333);
618
+ /* Safari 4+, Chrome 1+ */
619
+ background-image: -webkit-gradient(linear, left top, right top, from(#666), to(#333));
620
+ /* Safari 5.1+, Chrome 10+ */
621
+ background-image: -webkit-linear-gradient(left, #666, #333);
622
+ /* Opera 11.10+ */
623
+ background-image: -o-linear-gradient(left, #666, #333);
624
+ }
625
+ /* Vertical disabled range bar */
626
+ .fd-slider-vertical.fd-slider-disabled .fd-slider-range
627
+ {
628
+ /* Firefox 3.6+ */
629
+ background-image: -moz-linear-gradient(top, #333, #666);
630
+ /* Safari 4+, Chrome 1+ */
631
+ background-image: -webkit-gradient(linear, left top, right bottom, from(#333), to(#666));
632
+ /* Safari 5.1+, Chrome 10+ */
633
+ background-image: -webkit-linear-gradient(top, #333, #666);
634
+ /* Opera 11.10+ */
635
+ background-image: -o-linear-gradient(top, #333, #666);
636
+ }
637
+ .oldie .fd-slider-vertical.fd-slider-disabled .fd-slider-range
638
+ {
639
+ /* IE 6 + 7 */
640
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff666666',endColorstr='#ff333333');
641
+ /* IE8 */
642
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ff666666',endColorstr='#ff333333')";
643
+ }
644
+ .oldie .fd-slider-disabled .fd-slider-range
645
+ {
646
+ /* IE 6 + 7 */
647
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff666666',endColorstr='#ff333333');
648
+ /* IE8 */
649
+ -ms-filter:"filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ff666666',endColorstr='#ff333333')";
650
+ }